Jak mogę nauczyć ogr2ogr o projekcji?

11

Mam JSON wygenerowany z ArcGIS, który chcę przekonwertować na GeoJSON w EPSG 4326. To się nie powiedzie:

$ ogr2ogr -f GeoJSON -t_srs EPSG:4326 out.geo.json in.arcgis.json OGRGeoJSON
ERROR 6: EPSG PCS/GCS code 102100 not found in EPSG support files.  Is this a valid
EPSG coordinate system?

Znalazłem post na forum, który mówi, że 102100 można zmienić na 3857, który jest matematycznie identyczny. Działa to z tym samym komunikatem o błędzie:

$ ogr2ogr -f GeoJSON -s_srs EPSG:3857 -t_srs EPSG:4326 out.geo.json in.arcgis.json OGRGeoJSON 
ERROR 6: EPSG PCS/GCS code 102100 not found in EPSG support files.  Is this a valid
EPSG coordinate system?

Mam jednak kilka plików w systemie projekcyjnym 102100. Chciałbym nauczyć ogr2ogr o projekcji 102100, więc mogę napisać skrypt konwersji. Czy istnieje sposób na aktualizację konfiguracji, aby 102100 został rozpoznany i potraktowany tak samo jak 3857?

Aktualizacja - te dane pochodzą z interfejsu API REST programu ArgGIS Server 9.3.1. Jeśli nie podam wyjściowego odniesienia przestrzennego, otrzymam 102100, które określają jako rzutowany układ współrzędnych „WGS_1984_Web_Mercator_Auxiliary_Sphere” . O wiele łatwiejszym sposobem na osiągnięcie mojego celu jest zapytanie o pożądaną projekcję za pomocą outSR=4326parametru zapytania. Pytanie jest nadal aktualne, jeśli nie masz dostępu do oryginalnych danych.

jwhitlock
źródło

Odpowiedzi:

11

Ponieważ 102100 i 3857 są matematycznie identyczne, myślę, że możesz bezpiecznie zignorować błędy i po prostu kontynuować nadpisywanie źródłowego srs przy użyciu flagi -s_srs .

Możesz spróbować dodać definicję 102100 do $ GDAL_DATA $, ale nie jest to zalecane. Jeśli jednak naprawdę chcesz to zrobić, oto metoda i towarzyszące jej ostrzeżenie od Franka Warmerdama :

Pliki .csv są przeznaczone głównie dla układów współrzędnych EPSG, więc nie jest właściwe ich ręczne rozszerzanie.

Ale możesz dodać własne słowniki w sposób podobny do gdal / data / cubewerx_extra.wkt. Te pliki słowników składają się z linii o krótkiej nazwie, przecinka, a następnie definicji układu współrzędnych WKT.

Możesz odwołać się do takiej definicji z SetFromUserInput () i programów, które używają tej funkcji (takich jak s_srs, a_srs, t_srs dla gdal_translate, ogr2ogr i gdalwarp), używając formularza:

gdal_translate -a_srs DICT: cubewerx_extra.wkt, 41001

Mam nadzieję, że to pomoże. Powodzenia!

RK
źródło
1
Dzięki, zrobiłem coś podobnego do tego, co zasugerowałeś. Mój $GDAL_DATA$katalog znajduje się w /usr/local/share/gdal, a EPSG 3857 jest zdefiniowany pcs.csvw tym folderze. Skopiowałem tę linię do pcs.override.csvi zmieniłem identyfikator (pierwsza kolumna) z 3857 na 102100. W tym momencie konwersje działały bez -s_srsflagi. Długookresowym rozwiązaniem było uzyskanie moich danych źródłowych w znanej projekcji, dzięki czemu mogłem użyć ogr2ogr do samej konwersji formatu, zamiast mieszać projekcje.
jwhitlock