TLDR: Wie kann ich mit Python eine kmz-Datei in GeoJSON konvertieren? Es scheint, dass die kmz-Datei Webdienstaufrufe ausführt.
Details:
Ich habe die Datei FEMA_NFHL_v3.2.kmz
von der FEMA hier heruntergeladen: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload
Mein Ziel ist es, diese Datei in ein Format zu konvertieren, in das ich füttern kann MapBox oder anderweitig zum Auffüllen einer PostGIS-Datenbank. Mein bevorzugtes Format ist GeoJSON.
Ich habe den folgenden Code im StackExchange-Netzwerk gefunden, aber er scheint nicht zu funktionieren.
import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON")
Der obige Code erzeugt diesen Fehler:
$ 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)
Ich habe die kmz-Datei entpackt und habe Folgendes:
$ 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
Es sieht so aus, als ob die einzige Datei, die Daten enthält, doc.kml
ist. Wenn ich doc.kml
inspiziere, sehe ich dort „s ein Code, der auf einen FEMA-Webservice verweist. Wenn ich FEMA NFHL v3.2 kmz
in Google Earth öffne, sehe ich, dass tatsächlich Webdienstaufrufe getätigt werden.
Gibt es eine Möglichkeit, programmgesteuert mit Python zu arbeiten? Die .kmz-Datei führt die Webservice-Aufrufe durch und generiert dann eine GeoJSON-Datei?
Kommentare
- " Diese oder jene " Fragen sind effektiv zwei Fragen, was gegen unsere Richtlinie „Eine Frage pro Frage“ verstößt. Bitte wählen Sie, ob Sie eine JSON- oder Shapefile-Ausgabe wünschen. Sie können bei Bedarf in einer späteren Frage nach dem anderen fragen.
- Ich habe die Frage aktualisiert und sie auf GeoJSON beschränkt, obwohl ein Shapefile dies auch tun würde.
- Nein, Sie können ' t. WMS-Dienste geben gestaltete Kartenbilder zurück. Laut der FEMA-Site können Sie die tatsächlichen Daten herunterladen – " Verwenden Sie „Alle Produkte durchsuchen“ auf der MSC können Sie die NFHL-Daten für einen Landkreis oder ein Bundesland im Shapefile-Format herunterladen. " Siehe auch fema.gov/media-library -data / …