ฉันจะสอน 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 ถ้าฉันไม่ได้ระบุการส่งออกการอ้างอิงเชิงพื้นที่แล้วฉันจะได้รับ 102,100 ซึ่งพวกเขากำหนดเป็นที่คาดการณ์ระบบพิกัด"WGS_1984_Web_Mercator_Auxiliary_Sphere" วิธีที่ง่ายกว่ามากในการบรรลุเป้าหมายของฉันคือขอประมาณการที่ต้องการพร้อมoutSR=4326พารามิเตอร์การสืบค้น คำถามนี้ยังคงใช้ได้หากคุณไม่มีสิทธิ์เข้าถึงข้อมูลต้นฉบับ

คำตอบ:


11

เนื่องจาก 102100 และ 3857 มีลักษณะทางคณิตศาสตร์เหมือนกันฉันคิดว่าคุณสามารถเพิกเฉยต่อข้อผิดพลาดได้อย่างปลอดภัยและเพียงดำเนินการต่อโดยการเอาชนะแหล่งsrsโดยใช้แฟล็ก -s_srs

คุณสามารถลองเพิ่มคำนิยามสำหรับ 102100 ใน $ GDAL_DATA $ ของคุณ แต่ไม่แนะนำจริง ๆ หากคุณต้องการที่จะทำจริงๆนี่เป็นวิธีและคำเตือนประกอบจากFrank Warmerdam :

ไฟล์. 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

ฉันหวังว่านี่จะช่วยได้. โชคดี!


1
ขอบคุณฉันทำสิ่งที่คล้ายกับที่คุณแนะนำ $GDAL_DATA$ไดเรกทอรีของฉันอยู่ที่/usr/local/share/gdalและกำหนด EPSG 3857 ในpcs.csvโฟลเดอร์นั้น ฉันคัดลอกบรรทัดนั้นไปที่pcs.override.csvและเปลี่ยน ID (คอลัมน์แรก) จาก 3857 เป็น 102100 ณ จุดนั้น Conversion ทำงานได้โดยไม่ต้อง-s_srsตั้งค่าสถานะ วิธีแก้ปัญหาระยะยาวคือการรับข้อมูลต้นฉบับของฉันในโปรเจคชั่นที่รู้จักเพื่อให้ฉันสามารถใช้ ogr2ogr สำหรับการแปลงรูปแบบเพียงอย่างเดียวแทนที่จะผสมผสานในโปรเจคชัน
jwhitlock
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.