TLDR: hoe kan ik met Python een kmz-bestand converteren naar GeoJSON? Het lijkt erop dat het kmz-bestand webservice-oproepen doet.
Details:
Ik heb het FEMA_NFHL_v3.2.kmz
-bestand van FEMA hier gedownload: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload
Mijn doel is om dat bestand te nemen en het te converteren naar een formaat dat ik kan invoeren MapBox of anderszins gebruiken om een PostGIS-database te vullen. Mijn voorkeursformaat is GeoJSON.
Ik vond de volgende code op het StackExchange-netwerk, maar het lijkt niet te werken.
import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON")
De bovenstaande code produceert deze fout:
$ 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)
Ik heb het kmz-bestand uitgepakt en heb het volgende:
$ 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
Het lijkt erop dat het enige bestand dat het overwegen waard is en dat gegevens bevat doc.kml
is. Inspectie van doc.kml
, ik zie daar is een code die verwijst naar een FEMA-webservice. Verder, als ik FEMA NFHL v3.2 kmz
in Google Earth open, zie ik dat het inderdaad webserviceaanroepen is.
Is er een manier om programmatisch, met Python, het .kmz-bestand de webservice aanroepen en vervolgens een GeoJSON-bestand genereren?
Opmerkingen
- " Deze of gene " vragen zijn in feite twee vragen, wat in strijd is met ons één vraag per vraag-beleid. Kies of u JSON- of shapefile-uitvoer wilt; je kunt de ander in een latere vraag stellen, indien nodig.
- Ik heb de vraag bijgewerkt en deze beperkt tot GeoJSON, hoewel een shapefile ook zou werken.
- Nee, je kunt ' t. WMS-services retourneren opgemaakte kaartafbeeldingen. Volgens de FEMA-site kunt u de feitelijke gegevens downloaden – " met behulp van “Search All Products” op de MSC kunt u de NFHL-gegevens voor een provincie of staat downloaden in shapefile-indeling. " Zie ook fema.gov/media-library -data / …