TLDR: En utilisant Python, comment puis-je convertir un fichier kmz en GeoJSON? Il semble que le fichier kmz effectue des appels de service Web.
Détails:
Jai téléchargé le fichier FEMA_NFHL_v3.2.kmz
de FEMA ici: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload
Mon objectif est de prendre ce fichier et de le convertir dans un format que je peux utiliser MapBox ou autre utilisation pour peupler une base de données PostGIS. Mon format préféré est GeoJSON.
Jai trouvé le code suivant sur le réseau StackExchange, mais il ne semble pas fonctionner.
import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON")
Le code ci-dessus produit cette erreur:
$ 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)
Jai décompressé le fichier kmz et jai ce qui suit:
$ 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
Il semble que le seul fichier à prendre en compte contenant des données est doc.kml
. En inspectant doc.kml
, je vois « est un code faisant référence à un service Web FEMA. De plus, en ouvrant FEMA NFHL v3.2 kmz
dans Google Earth, je vois quil sagit effectivement de passer des appels de service Web.
Existe-t-il un moyen de programmer, en utilisant Python, le fichier .kmz effectuer les appels de service Web puis générer un fichier GeoJSON?
Commentaires
- " Telle ou telle question " est en fait deux questions, ce qui enfreint notre politique Une question par question. Veuillez choisir si vous voulez une sortie JSON ou shapefile; vous pouvez demander lautre dans une question ultérieure, si nécessaire.
- Jai mis à jour la question en la limitant à GeoJSON, même si un fichier de formes ferait également laffaire.
- Non, vous pouvez ' t. Les services WMS renvoient des images cartographiques stylisées. Selon le site FEMA, vous pouvez télécharger les données réelles – " En utilisant la fonction « Rechercher tous les produits » sur le MSC , vous pouvez télécharger les données NFHL pour un comté ou un État au format shapefile. " Voir aussi fema.gov/media-library -data / …