Mais

Ogr2ogr incapaz de abrir a fonte de dados KML


Baixei alguns dados do Wikimapia usando o wikimapia.api. Tudo está OK desde que abri isso no Google Earth e tudo está no lugar. No entanto, eu preciso transformá-lo em um arquivo de forma ou obter os dados no QGIS, uma vez que existem polígonos impt.

Usando o GDAL Complete for OS X da kyngchaos, tento executar o comando ogr2ogr.

$ ogr2ogr -f "ESRI Shapefile" mountains.shp api.wikimapia.org-4.kml ERRO 4: Impossível abrir api.wikimapia.org-4.kml FALHA: Impossível abrir a fonte de dados 'api.wikimapia.org-4.kml 'com os seguintes drivers.

etc etc. São montanhas nomeadas que desejo importar para o QGIS.


Ogr2ogr lida facilmente com seus dados, mas o formato shapefile não. Ogrinfo revela que seus dados contêm uma geometria do tipo Geometrycollection. A coleta é feita pela combinação de uma cadeia de linha e um ponto.

GEOMETRYCOLLECTION (LINESTRING (120.9954464 6.040449 0, 120.9953874 6.0402356 0, 120.9957951 6.0401396 0, 120.9958595 6.040337 0, 120.9958595 6.040337 0, 120.9954464 6.040449 0), POINT (120.9954464 6.040449 0)

Você tem dois problemas:

  1. Geometrycollections não podem ser salvas em shapefile.
  2. Explodir a coleção em elementos primitivos não é suficiente para um resgate porque cadeias de linhas e pontos não podem ser salvos em um mesmo arquivo de forma.

Para converter seus dados KML em shapefiles, você deve seguir duas etapas:

  1. Explodir as coleções em geometrias básicas
  2. Classifique as geometrias pelo tipo de geometrias e salve as linhas em um shapefile e aponta para outro.

Eu faria a tarefa com ogr2ogr usando GML como um formato de arquivo provisório. São necessários três comandos no total e você os encontra abaixo. Incluí os avisos não perigosos porque você pode não conhecer outra limitação nos arquivos de forma: nomes de atributos podem ter no máximo. 10 caracteres. Peço desculpas pelas opções de criação de camada crípticas usadas para definir o tipo de arquivo de forma explícito (-lco SHPT =), mas em seu caso de uso, elas simplesmente devem estar lá.

ogr2ogr -f GML habib.gml habib_mosque.kmz -explodecollections ogr2ogr -f "ESRI Shapefile" habib_point.shp habib.gml -sql "select * from habib_mosque onde OGR_GEOMETRY =" POINT "" -lco SHPT = POINT Aviso 6: Normalizado / lavado nome do campo: 'descrição' para 'descriptio' Aviso 6: Nome do campo normalizado / lavado: 'altitudeMode' para 'altitudeMo' ogr2ogr -f "ESRI Shapefile" habib_line.shp habib.gml -sql "select * from habib_mosque onde OGR_GEOMETRY =" LINESTRING "" -lco SHPT = ARC Aviso 6: Nome do campo normalizado / lavado: 'descrição' para 'descriptio' Aviso 6: Nome do campo normalizado / lavado: 'altitudeMode' para 'altitudeMo'

Aqui está o resultado final com o contorno em uma camada e o ponto de referência em outra camada.


Passei o dia todo tentando encontrar uma maneira de reformatar qualquer um dos arquivos de saída do Wikimapia em um formato que eu possa carregar no R - e finalmente consegui. Obrigada!! A única modificação importante que tive de fazer (além da óbvia) foi "selecionar * da camada 0"


Assista o vídeo: Making KML With Google Earth (Outubro 2021).