TLDR: Hogyan lehet konvertálni a Pyzont használva egy kmz fájlt GeoJSON-vá? Úgy tűnik, hogy a kmz fájl webszolgáltatás-hívásokat indít.
Részletek:
A FEMA_NFHL_v3.2.kmz
fájlt itt töltöttem le a FEMA-ból: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload
Célom, hogy ezt a fájlt átvegyem és átalakítsam olyan formátumba, amelybe betáplálhatom MapBox vagy más módon használható a PostGIS adatbázis feltöltésére. Az előnyben részesített formátumom a GeoJSON.
A következő kódot találtam a StackExchange hálózaton, de úgy tűnik, hogy nem működik.
import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON")
A fenti kód okozza ezt a hibát:
$ 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)
Kicsomagoltam a kmz fájlt, és a következővel rendelkezem:
$ 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
Úgy tűnik, hogy az egyetlen megfontolásra érdemes fájl, amely bármilyen adatot tartalmaz, a doc.kml
. A doc.kml
vizsgálata szerint ott látom néhány kód a FEMA webszolgáltatásra hivatkozva. Továbbá, ha megnyitom a FEMA NFHL v3.2 kmz
oldalt a Google Earth programban, látom, hogy valóban webszolgáltatási hívásokat indít.
Van-e mód arra, hogy programozatosan, a Python használatával a .kmz fájl hívja a webszolgáltatást, majd létrehoz egy GeoJSON fájlt?
Megjegyzések
- " Ez vagy az a " kérdés gyakorlatilag két kérdés, ami sérti az egy kérdésre vonatkozó kérdésre vonatkozó irányelvünket. Válassza ki, hogy JSON vagy shapefile kimenetet szeretne-e; szükség esetén megkérdezheti a másikat egy későbbi kérdésben.
- Frissítettem a kérdést, és GeoJSON-ra korlátoztam, bár egy shapefile is megtenné.
- Nem = “8385da30ab”>
t. A WMS-szolgáltatások stílusú térképképeket adnak vissza. A FEMA webhely szerint a tényleges adatokat letöltheti – " Az MSC a „Minden termék keresése” használatával >, megye vagy állam NFHL-adatait töltheti le formefile formátumban. " Lásd még: fema.gov/media-library -data / …