Как мне научить ogr2ogr проекции?

11

У меня есть JSON, сгенерированный из ArcGIS, который я хочу преобразовать в GeoJSON в EPSG 4326. Сбой:

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

Я нашел сообщение на форуме, в котором говорится, что 102100 можно изменить на 3857, что математически идентично. Итак, это работает, с тем же сообщением об ошибке:

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

Однако у меня есть несколько файлов в проекционной системе 102100. Я хотел бы рассказать ogr2ogr о проекции 102100, чтобы я мог написать сценарий преобразования. Есть ли способ обновить конфиг, чтобы 102100 распознавался и обрабатывался так же, как 3857?

Обновление - эти данные взяты из REST API сервера ArgGIS 9.3.1. Если я не укажу выходную пространственную привязку, то получу 102100, которую они определяют как спроецированную систему координат "WGS_1984_Web_Mercator_Auxili_Sphere" . Намного более простой способ достичь моей цели - запросить желаемую проекцию с outSR=4326параметром запроса. Вопрос остается в силе, если у вас нет доступа к исходным данным.

jwhitlock
источник

Ответы:

11

Поскольку 102100 и 3857 математически идентичны, я думаю, что вы можете спокойно игнорировать ошибки и просто продолжить переопределение исходных srs с помощью флага -s_srs .

Вы можете попробовать добавить определение для 102100 в ваш $ GDAL_DATA $, но это не очень рекомендуется. Если вы действительно хотите это сделать, вот метод и сопровождающее предупреждение от Фрэнка Вармердама :

Файлы .csv в основном предназначены для систем координат EPSG, поэтому расширение их вручную нецелесообразно.

Но вы можете добавить свои собственные пользовательские словари аналогично gdal / data / cubewerx_extra.wkt. Эти файлы словарей состоят из строк с коротким именем, запятой, а затем WKT-определением системы координат.

Вы можете сослаться на такое определение из SetFromUserInput () и программ, которые используют эту функцию (например, s_srs, a_srs, t_srs для gdal_translate, ogr2ogr и gdalwarp), используя форму:

gdal_translate -a_srs DICT: cubewerx_extra.wkt, 41001

Надеюсь, это поможет. Удачи!

RK
источник
1
Спасибо, я сделал что-то похожее на то, что вы предложили. Мой $GDAL_DATA$каталог находится в /usr/local/share/gdal, и EPSG 3857 определен pcs.csvв этой папке. Я скопировал эту строку pcs.override.csvи изменил идентификатор (первый столбец) с 3857 на 102100. В этот момент преобразования работали без -s_srsфлага. Более долгосрочным решением было получить исходные данные в известной проекции, чтобы я мог использовать ogr2ogr только для преобразования формата, а не смешивать в проекциях.
jwhitlock