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 / …

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *