ทำให้ POINT จากลองจิจูด / ละติจูดในตารางที่มีอยู่โดยใช้ PostGIS?


10

ผมอยากจะให้จุดโดยใช้เส้นรุ้งเส้นแวงและคอลัมน์ของตารางที่มีอยู่
นี่คือการเชื่อมโยงไปยังเอกสารของST_MakePoint

นี่คือตารางของฉัน:

CREATE TABLE sysinst.bio (  
    oid INTEGER PRIMARY KEY,  
    longitude FLOAT,  
    latitude FLOAT,  
        geom GEOMETRY(POINT, 26913)
);

การเพิ่มคอลัมน์รูปทรงเรขาคณิต:

SELECT AddGeometryColumn ('sysinst', 'bio', 'geom', 26913, 'POINT', 2);

นี่คือคำถามของฉัน:

UPDATE sysinst.bio SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 26913);

ไม่มีข้อผิดพลาดที่ส่งคืนแม้ว่า POINTS จะถูกวางแผนอย่างผิดพลาดเมื่อดูใน QGIS

สำหรับ(-97.5959, 21.1922)ฉันได้รับ(-109.4896, 0.0002)

ข้อเสนอแนะใด ๆ

ฉันเปิดโอกาสให้ทำสิ่งนี้ได้อย่างมีประสิทธิภาพมากขึ้น


ฉันไม่เห็นปัญหาเกี่ยวกับข้อความค้นหา บางทีคุณสามารถลองวินิจฉัยปัญหาในส่วนต่าง ๆ - ลองกำจัดส่วน QGIS และใช้บรรทัดคำสั่งสำหรับ postgis หรือไม่
BradHards

บางทีฉันอาจไม่เข้าใจ แต่ดูเหมือนว่าคุณกำลังป้อนพิกัดละติจูดลองจิจูด (-97, 21) เป็นองศาเข้าสู่ CRS ที่ใช้ UTM และใช้เมตร หากคุณกำลังประกาศสิ่งนี้เป็น SRID 26918 ดังนั้นค่า long / lat จะต้องอยู่ใน CRS นั้น หากค่า Long / Lat อยู่ในหน่วยองศาคุณจะต้องสร้างรูปทรงเรขาคณิตเป็น ST_SetSRID (MakePoint (... ), 4326) จากนั้นเปลี่ยนเลเยอร์เป็น 26913
Micha

@Micha คุณควรเพิ่มความคิดเห็นของคุณเป็นคำตอบ ฉันคาดหวังว่า SRID ที่เหมาะสมจะแก้ปัญหา OPs ได้ นอกจากนี้ยังอาจจะเป็นประโยชน์ที่จะรวมและตัวอย่างของวิธีการที่จะเพิ่มST_Transform
katahdin

คำตอบ:


16

บางทีฉันอาจไม่เข้าใจ แต่ดูเหมือนว่าคุณกำลังป้อนพิกัดละติจูดลองจิจูด (-97, 21) เป็นองศาเข้าสู่ CRS ที่ใช้ UTM และใช้เมตร หากคุณกำลังประกาศสิ่งนี้เป็น SRID 26918 ดังนั้นค่า long / lat จะต้องอยู่ใน CRS นั้น หากค่า Long / Lat อยู่ในหน่วยองศาคุณจะต้องสร้างรูปทรงเรขาคณิตเป็น ST_SetSRID (MakePoint (... ), 4326) จากนั้นแปลงเลเยอร์เป็น 26913 ดังนั้นให้รวมเข้าด้วยกันถ้าคุณต้องการเลเยอร์ ใน 26913 แต่คอลัมน์ลองจิจูด / ละติจูดของคุณอยู่ในองศาด้วย CRS 4326 จากนั้น

UPDATE sysinst.bio SET geom = ST_Transform(ST_SetSRID(ST_MakePoint(longitude, latitude), 4326),26913);

ขอบคุณสำหรับความช่วยเหลือ ฉันควรจะคิดเกี่ยวกับเรื่องนี้มาก่อน ...
Zach
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.