TLDR: Folosind Python, cum pot converti un fișier kmz în GeoJSON? Se pare că fișierul kmz efectuează apeluri de servicii web.
Detalii:
Am descărcat fișierul FEMA_NFHL_v3.2.kmz
de pe FEMA aici: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload
Scopul meu este să iau fișierul respectiv și să-l convertesc într-un format pe care să-l pot alimenta MapBox sau utilizează altfel pentru a completa o bază de date PostGIS. Formatul meu preferat este GeoJSON.
Am găsit următorul cod în rețeaua StackExchange, dar nu pare să funcționeze.
import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON")
Codul de mai sus produce această eroare:
$ 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)
Am dezarhivat fișierul kmz și am următoarele:
$ 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
Se pare că singurul fișier demn de luat în considerare care conține date este doc.kml
. Inspectând doc.kml
, văd acolo „Este un cod care face referire la un serviciu web FEMA. Mai mult, deschizând FEMA NFHL v3.2 kmz
în Google Earth, văd că, într-adevăr, efectuează apeluri de servicii web.
Există o modalitate de a utiliza programat, folosind Python, fișierul .kmz efectuează apelurile de serviciu web și apoi generează un fișier GeoJSON?
Comentarii
- " Aceasta sau cealaltă " întrebări sunt efectiv două întrebări, ceea ce încalcă politica noastră „O întrebare per întrebare”. Vă rugăm să alegeți dacă doriți ieșire JSON sau shapefile; îl puteți cere pe celălalt într-o întrebare ulterioară, dacă este necesar.
- Am actualizat întrebarea limitându-l la GeoJSON, deși ar fi și un shapefile.
- Nu, puteți ' t. Serviciile WMS returnează imagini cu hărți stilizate. Potrivit site-ului FEMA, puteți descărca datele reale – " Utilizând „Căutați toate produsele” de pe MSC , puteți descărca datele NFHL pentru un județ sau stat în format shapefile. " Vedeți și fema.gov/media-library -data / …