TLDR: Usando Python, como posso converter um arquivo kmz em GeoJSON? Parece que o arquivo kmz faz chamadas de serviço da web.
Detalhes:
Eu baixei o FEMA_NFHL_v3.2.kmz
arquivo da FEMA aqui: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload
Meu objetivo é pegar esse arquivo e convertê-lo em um formato para o qual eu possa alimentar MapBox ou de outra forma use para preencher um banco de dados PostGIS. Meu formato preferido é GeoJSON.
Encontrei o seguinte código na rede StackExchange, mas não parece funcionar.
import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON")
O código acima produz este erro:
$ python scratch.py Warning 1: The output driver does not natively support DateTime type for field timestamp. Misconversion can happen. -mapFieldType can be used to control field type conversion. Warning 1: The output driver does not natively support DateTime type for field begin. Misconversion can happen. -mapFieldType can be used to control field type conversion. Warning 1: The output driver does not natively support DateTime type for field end. Misconversion can happen. -mapFieldType can be used to control field type conversion. ERROR 1: Layer "NFHL" does not already exist in the output dataset, and cannot be created by the output driver. ERROR 1: Terminating translation prematurely after failed translation of layer NFHL (use -skipfailures to skip errors)
Descompactei o arquivo kmz e tenho o seguinte:
$ tree FEMA_NFHL_v3.2 FEMA_NFHL_v3.2 ├── doc.kml └── files ├── FEMA_Logo.png ├── GenStruct_item.gif ├── LOMA_item.gif ├── Levee_item.gif ├── LiMWA_item.gif ├── NFHL_Legend.png ├── NFHL_Quick_Start_Instructions.png └── RivMrk_item.gif 1 directory, 9 files
Parece que o único arquivo que vale a pena considerar que contém dados é doc.kml
. Inspecionando doc.kml
, vejo lá é algum código que faz referência a um serviço da web da FEMA Além disso, abrindo FEMA NFHL v3.2 kmz
no Google Earth, vejo que ele está, de fato, fazendo chamadas de serviço da web.
Existe uma maneira de programaticamente, usando Python, ter o arquivo .kmz faz as chamadas de serviço da web e, em seguida, gera um arquivo GeoJSON?
Comentários
- " Esta ou aquela " perguntas são efetivamente duas perguntas, o que viola nossa política de Uma pergunta por pergunta. Escolha se deseja saída JSON ou shapefile; você pode perguntar pelo outro em uma pergunta posterior, se necessário.
- Eu atualizei a pergunta limitando-o ao GeoJSON, embora um arquivo de forma também servisse.
- Não, você pode ' t. Os serviços WMS retornam imagens de mapas estilizados. De acordo com o site da FEMA, você pode baixar os dados reais – " Usando “Pesquisar todos os produtos” no MSC , você pode baixar os dados NFHL para um condado ou estado no formato shapefile. " Veja também fema.gov/media-library -data / …