TLDR: Używając Pythona, jak mogę przekonwertować plik kmz na GeoJSON? Wygląda na to, że plik kmz wywołuje usługi sieciowe.

Szczegóły:

Pobrałem plik FEMA_NFHL_v3.2.kmz z FEMA tutaj: https://hazards.fema.gov/femaportal/wps/portal/NFHLWMSkmzdownload

Moim celem jest pobranie tego pliku i przekonwertowanie go na format, do którego mogę przesłać MapBox lub w inny sposób użyj do wypełnienia bazy danych PostGIS. Mój preferowany format to GeoJSON.

Znalazłem następujący kod w sieci StackExchange, ale wydaje się, że nie działa.

import gdal srcDS = gdal.OpenEx("./FEMA_NFHL_v3.2.kmz") ds = gdal.VectorTranslate("output.json", srcDS, format="GeoJSON") 

Powyższy kod generuje ten błąd:

$ 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) 

Rozpakowałem plik kmz i mam następujące informacje:

$ 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 

Wygląda na to, że jedynym wartym rozważenia plikiem zawierającym jakiekolwiek dane jest doc.kml. Po sprawdzeniu doc.kml, widzę To jakiś kod odwołujący się do usługi sieciowej FEMA. Co więcej, otwierając FEMA NFHL v3.2 kmz w Google Earth, widzę, że jest to rzeczywiście wykonywanie wywołań usług internetowych.

Czy istnieje sposób, aby programowo, używając Pythona, mieć plik .kmz wywołuje usługi sieciowe, a następnie generuje plik GeoJSON?

Komentarze

  • " To czy tamto " pytania to w rzeczywistości dwa pytania, co narusza naszą zasadę „Jedno pytanie na pytanie”. Wybierz, czy chcesz mieć dane wyjściowe JSON czy shapefile; jeśli to konieczne, możesz poprosić o drugie pytanie w późniejszym pytaniu.
  • Zaktualizowałem pytanie ograniczając je do GeoJSON, chociaż plik shapefile też by się nadawał.
  • Nie, możesz ' t. Usługi WMS zwracają stylizowane obrazy map. Według strony FEMA, możesz pobrać rzeczywiste dane – " Korzystając z opcji „Wyszukaj wszystkie produkty” na MSC , możesz pobrać dane NFHL dla hrabstwa lub stanu w formacie shapefile. " Zobacz także fema.gov/media-library -data / …

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *