Làm thế nào để tôi dạy ogr2ogr về một phép chiếu?


11

Tôi đã tạo JSON từ ArcGIS mà tôi muốn chuyển đổi sang GeoJSON trong EPSG 4326. Điều này không thành công:

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

Tôi tìm thấy một bài đăng trên diễn đàn nói rằng 102100 có thể được đổi thành 3857, giống hệt nhau về mặt toán học. Vì vậy, điều này hoạt động, với cùng một thông báo lỗi:

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

Tuy nhiên, tôi có một số tệp trong hệ thống chiếu 102100. Tôi muốn dạy ogr2ogr về phép chiếu 102100, vì vậy tôi có thể viết kịch bản chuyển đổi. Có cách nào để cập nhật cấu hình để 102100 được nhận dạng và xử lý giống như 3857 không?

Cập nhật - Dữ liệu này từ API REST của ArgGIS Server 9.3.1. Nếu tôi không chỉ định tham chiếu không gian đầu ra, thì tôi nhận được 102100, mà chúng xác định là hệ tọa độ dự kiến "WGS_1984_Web_Mercator_Auxadder_Sphere" . Một cách dễ dàng hơn nhiều để thực hiện mục tiêu của tôi là yêu cầu phép chiếu mong muốn, với outSR=4326tham số truy vấn. Câu hỏi vẫn còn hiệu lực nếu bạn không có quyền truy cập vào dữ liệu gốc.

Câu trả lời:


11

Vì 102100 và 3857 giống hệt nhau về mặt toán học, tôi nghĩ bạn có thể bỏ qua các lỗi một cách an toàn và chỉ cần tiếp tục ghi đè các srs nguồn bằng cách sử dụng cờ -s_srs .

Bạn có thể thử thêm định nghĩa cho 102100 trong $ GDAL_DATA $ nhưng không thực sự được khuyến nghị. Nếu bạn thực sự muốn làm điều đó, thì đây là phương pháp và cảnh báo kèm theo từ Frank Warmerdam :

Các tệp .csv chủ yếu dành cho các hệ tọa độ EPSG, do đó không thực sự thích hợp để mở rộng chúng theo cách thủ công.

Nhưng bạn có thể thêm từ điển tùy chỉnh của riêng bạn theo cách tương tự như gdal / data / cubewerx_extra.wkt. Các tệp từ điển này bao gồm các dòng có tên ngắn, dấu phẩy và sau đó là định nghĩa WKT của hệ tọa độ.

Bạn có thể tham chiếu định nghĩa như vậy từ SetFromUserInput () và các chương trình sử dụng chức năng đó (chẳng hạn như s_srs, a_srs, t_srs cho gdal_translate, ogr2ogr và gdalwarp) bằng biểu mẫu:

gdal_transTable -a_srs DICT: cubewerx_extra.wkt, 41001

Tôi hi vọng cái này giúp được. Chúc may mắn!


1
Cảm ơn, tôi đã làm một cái gì đó tương tự như những gì bạn đề nghị. Thư mục của tôi $GDAL_DATA$là tại /usr/local/share/gdal, và EPSG 3857 được xác định trong pcs.csvthư mục đó. Tôi đã sao chép dòng đó sang pcs.override.csvvà thay đổi ID (cột đầu tiên) từ 3857 thành 102100. Tại thời điểm đó, các chuyển đổi hoạt động mà không có -s_srscờ. Giải pháp dài hạn là lấy dữ liệu nguồn của tôi trong một phép chiếu đã biết, để tôi có thể sử dụng ogr2ogr để chuyển đổi định dạng một mình, thay vì trộn lẫn trong các phép chiếu.
jwhitlock
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.