Tente adicionar -nlt geometry
ao seu script ogr:
ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson -nlt geometry
Eu experimentei o problema que você descreve usando o ogr2ogr para converter conjuntos de dados contendo recursos de peça única e peça múltipla na mesma camada; por exemplo, PONTO e MULTIPOINT, LINHA E MULTILINE e POLYGON e MULTIPOLYGON.
Por padrão, o OGR deseja que você obedeça à convenção e use apenas um tipo de recurso por conjunto de dados. Se você infringir a regra, o OGR lançará um erro genérico e recomendará o -skipfailures
sinalizador. Isso pode ser enganoso se o problema real forem geometrias mistas / correspondentes na mesma camada.
Como o shapefile da ESRI permite recursos únicos / multipartes na mesma camada, é necessário perceber que o OGR pode gerar esse erro mesmo se você tiver geometrias válidas. Nesse cenário, você tem duas opções: 1) Converter recursos de várias partes em partes únicas (o que ogr pode fazer por meio do -explodecollections
sinalizador) ou 2) usar o -nlt
sinalizador e especificar GEOMETRY
como opção. A -nlt GEOMETRY
opção permite combinar uma mistura de tipos de recursos na mesma camada. Obviamente, como conseqüência, o OGR não protegerá as melhores práticas.
Se o seu arquivo GeoJSON "iniciou a vida" como um arquivo de forma ESRI, é possível que você tenha os recursos POINT e MULTIPOINT contidos nesse conjunto de dados; nesse caso, você pode encontrar esse problema mesmo com pontos válidos.
O comportamento pretendido, no meu entendimento, é que, se um recurso inválido for encontrado, ele será ignorado e a conversão continuará com o próximo recurso válido, em vez de parar.
Parece que você está fazendo tudo corretamente, então eu não sei o que há de errado! Você já tentou ir para um formato diferente apenas para ver se isso funciona?
fonte