การสร้างรูปทรงเรขาคณิตจาก lat / lon ในตารางโดยใช้ PostGIS?


15

ฉันมีตารางที่มีมากกว่า 800,000 รายการรวมทั้งคอลัมน์ lat และ long แหล่งข้อมูลไม่ได้สร้างรูปทรงเรขาคณิตดังนั้นฉันจึงดูวิธีการทำสิ่งนี้ ฉันรู้ว่ามี ST_MakePoint (x, y, SRID) แต่เอกสารทั้งหมดและเธรดอื่น ๆ แสดงวิธีสร้างจุดเดียว ฉันจะสร้างรูปทรงเรขาคณิตโดยใช้คอลัมน์เหล่านี้ได้อย่างไร


1
คุณหมายถึงสร้างเส้นจากจุดเหล่านี้หรือไม่ เนื่องจากคะแนนเป็นรูปทรงเรขาคณิตเช่นเดียวกับเส้นและรูปหลายเหลี่ยมเป็น ... ดังนั้นหากคุณกำลังมองหาการสร้างบรรทัดจากจุดเหล่านี้ให้ตรวจสอบโพสต์บล็อกล่าสุดจาก Paul Ramsey: blog.cleverelephant.ca/2015/03/making-lines-from -points.html
DPSSpatial

Nope ฉันต้องการแปลงให้เป็นประเภทเรขาคณิตเพื่อใช้ในการสืบค้นเชิงพื้นที่ ดูเหมือนว่าคำถามของฉันได้รับคำตอบแล้วขอบคุณมาก!
dknuth

คำตอบ:


32

รุ่นที่ใหม่กว่าของ PostGIS อนุญาตให้ใช้ไวยากรณ์ต่อไปนี้ที่พบได้บ่อยกว่าเล็กน้อย

ALTER TABLE your_table ADD COLUMN geom geometry(Point, 4326);

จากนั้นใช้ ST_SetSrid และ ST_MakePoint เพื่อเติมคอลัมน์:

UPDATE your_table SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);

ดูเอกสารที่นี่:


14

หากคุณยังไม่ได้เพิ่มคอลัมน์รูปทรงเรขาคณิต (สมมติว่า EPSG: 4326 ที่นี่):

SELECT AddGeometryColumn ('your_table','geom',4326,'POINT',2);

จากนั้นUPDATEส่งผ่านชื่อเขตข้อมูล x และ y ของคุณ:

UPDATE yourtable SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);

การดำเนินการนี้จะอัปเดตทั้งตารางเว้นแต่คุณจะใส่WHEREคำสั่งย่อย

อ้างอิงถึง ST_SetSrid: https://postgis.net/docs/ST_SetSRID.html


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