Multipoint เทียบกับ PostGIS


12

เป็นเรื่องปกติหรือไม่ที่จะใช้รูปทรงเรขาคณิต 'หลายจุด' แทน 'จุด' รู้ว่าฉันใช้มันเพื่อเก็บจุดเดียวหรือไม่?

ฉันจะแปลงจากหลายจุดเป็นจุดได้อย่างไร


มีคำตอบที่ดีที่อธิบายวิธีการตรวจสอบรูปทรงเรขาคณิตแบบหลายส่วนและแปลงประเภทคอลัมน์จากรูปทรงเรขาคณิตหลายแบบเป็นแบบเดี่ยวที่: gis.stackexchange.com/questions/28835/…
จอห์น

คำตอบ:


16

ในการแปลง "Multipoint" เป็น "Point" คุณต้องใช้ST_Dumpเช่น:

SELECT (ST_Dump(the_geom)).geom AS the_POINT_geom
  FROM MULTIPOINT_table;

ในคำถามของการใช้รูปทรงเรขาคณิต "หลาย" หรือเดี่ยวฉันใช้ตรรกะนี้:

  • ถ้ารูปทรงเรขาคณิตทุกอันมีคุณลักษณะที่แตกต่าง -> เดียว
  • หากกลุ่มรูปทรงเรขาคณิตมีคุณลักษณะเดียวกัน -> "หลาย"

9

วิธีที่ง่ายที่สุดในการแยกจุดออกจากจุดเดียวMULTIPOINTคือ ST_GeometryN:

SELECT ST_AsText(ST_GeometryN('MULTIPOINT ((1 1))', 1));
--POINT(1 1)

สิ่งนี้จะช่วยหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นในสถานการณ์ที่ไม่สามารถใช้ฟังก์ชันส่งคืนได้

มีการปรับปรุงที่สำคัญบางอย่างที่พร้อมใช้งานสำหรับPOINTพิมพ์รูปทรงเรขาคณิต (โดยเฉพาะในรุ่นก่อนหน้าของ PostGIS) เท่านั้นดังนั้นการจัดเก็บจุดเดียวตามPOINTหลักปฏิบัติที่ดี POINTยังใช้ประมาณ 25% MULTIPOINTน้อยกว่าพื้นที่

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