TLDR: Utilizzando Python, come posso convertire un file kmz in GeoJSON? Sembra che il file kmz effettui chiamate al servizio web.
Dettagli:
Ho scaricato il file FEMA_NFHL_v3.2.kmz
da FEMA qui: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload
Il mio obiettivo è prendere quel file e convertirlo in un formato che possa alimentare MapBox o altrimenti utilizzare per popolare un database PostGIS. Il mio formato preferito è GeoJSON.
Ho trovato il seguente codice sulla rete StackExchange, ma non sembra funzionare.
import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON")
Il codice precedente produce questo errore:
$ 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)
Ho decompresso il file kmz e ho quanto segue:
$ 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
Sembra che lunico file degno di essere considerato che contiene dati sia doc.kml
. Ispezionando doc.kml
, vedo lì “è un codice che fa riferimento a un servizio web FEMA. Inoltre, aprendo FEMA NFHL v3.2 kmz
in Google Earth, vedo che si tratta effettivamente di chiamate a servizi Web.
Esiste un modo per programmare, utilizzando Python, il file .kmz effettua le chiamate al servizio web e quindi genera un file GeoJSON?
Commenti
- " Questa o quella " domande sono effettivamente due domande, il che viola le nostre norme Una domanda per domanda. Scegli se desideri loutput JSON o shapefile; puoi chiedere laltra in una domanda successiva, se necessario.
- Ho aggiornato la domanda limitandola a GeoJSON, sebbene andrebbe bene anche uno shapefile.
- No, puoi ' t. I servizi WMS restituiscono immagini di mappe con stile. Secondo il sito FEMA, puoi scaricare i dati effettivi – " utilizzando “Cerca in tutti i prodotti” su MSC , puoi scaricare i dati NFHL per una contea o uno stato in formato shapefile. " Vedi anche fema.gov/media-library -data / …