หน่วยที่ใช้ใน ST_Distance () คืออะไร


24

ST_Distanceฉันสงสัยว่าหน่วยเป็นของลอยที่ถูกส่งกลับมาจาก

ในเอกสารอธิบายว่า:

... ระยะทางขั้นต่ำของคาร์ทีเซียน (ขึ้นอยู่กับการอ้างอิงเชิงพื้นที่) ระหว่างรูปทรงเรขาคณิตทั้งสองในหน่วยที่คาดการณ์ไว้

หน่วยที่คาดการณ์เหล่านี้คืออะไร?

รูปทรงเรขาคณิตถูกเก็บไว้ในเขตข้อมูล: geometry(Point,4326).

คำตอบ:


36

ฉันคิดว่านี่เป็นคำถามที่พบบ่อยที่สุดในรายการ PostGIS เมื่อเวลาผ่านไป :-)

หากข้อมูลของคุณอยู่ใน SRID 4326 และคุณใช้geometryประเภทผลลัพธ์จะไม่มีความหมายใด ๆ มันมีหน่วยเป็นองศา

เพื่อให้ได้ผลลัพธ์เป็นเมตรเพียงแค่geographyพิมพ์และST_Distanceจะคำนวณระยะทางตามวงกลมใหญ่แทนและกลับมาเป็นเมตร

geometry(Point,4326)::geography

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


2
นี่คือตัวอย่างเพื่อค้นหาระยะห่างระหว่างสองแถวในตาราง SELECT ST_Distance (a.geom :: ภูมิศาสตร์ b.geom :: ภูมิศาสตร์) จาก pure_gis a, pure_gis b WHERE a.id = '1' และ b.id = '2';
Brian McCall

4

จากhttp://postgis.net/docs/ST_Distance.html

- ตัวอย่างเรขาคณิต - หน่วยในระนาบองศา 4326 คือหน่วยละติจูดและลองจิจูดยาว WGS 84 หน่วย = องศา

หากST_Distanceได้รับสองรูปทรงจะถือว่ารูปทรงเหล่านั้นอยู่ในพิกัดคาร์ทีเซียน (หรือระนาบ) จริง ๆ ดังนั้นหน่วยจะเหมือนกับหน่วยพิกัด - โดยปกติแล้วจะเป็นเมตรหรือฟุต

ปัญหาของคุณน่าจะเป็นที่ระบบอ้างอิงเชิงพื้นที่ของคุณ 4326 ใช้พิกัดทางภูมิศาสตร์ (เชิงมุม) - องศายาว - ละติจูด - ดังนั้นผลลัพธ์จะอยู่ในองศา (ไม่มีความหมาย)


1
ผลลัพธ์ไม่มีความหมายทั้งหมดแม้แต่น้อย
พอลแรมซีย์

@PaulRamsey พวกเขาจะไม่เหมือนกับสิ่งที่ฉันได้รับ "วัด" ระยะทางในการฉาย PlateCaree หรือไม่?
มาร์ติน F

บนพีซีคุณจะได้หน่วยเชิงเส้นกลับมาและอย่างน้อยก็พูดว่า "ตกลงฉันรู้ว่าหน่วยเหล่านี้อาจมีการผิดเพี้ยนอย่างรุนแรง" เมื่อได้รับ "ดีกรี" กลับมาผู้คนอาจถูกล่อลวงให้คิดว่า "อ้าฉันมีระยะเชิงมุมตรงนี้แค่ต้องคูณด้วย 2R และฉันจะมีระยะเชิงเส้น" หน่วยทำการวัดที่ไม่ถูกต้องอาจทำให้เข้าใจผิดยิ่งยวดยิ่งขึ้น และพีซีแย่มากฉันไม่รู้ว่าทำไมมันถึงได้ชื่อฉายภาพ ... ไม่รักษาระยะห่างไม่รักษาทิศทางไม่รักษาพื้นที่ ...
Paul Ramsey

พีซีรักษาระยะทางตามเส้นศูนย์สูตรและตั้งฉากกับเส้นศูนย์สูตร นอกเหนือจากการแปลงเรเดียนและรัศมีที่ต้องการ (เป็นที่ยอมรับว่าเป็นความไม่สะดวกที่สำคัญมาก) ผลลัพธ์ของการใช้ ST_Distance บนรูปทรงเรขาคณิต 4326 จะมีข้อเสียและผลประโยชน์ทั่วไปที่เหมือนกันซึ่งต้องพิจารณาเมื่อใช้ ST_Distance กับรูปทรงเรขาคณิต บางทีการอภิปรายที่ดีกว่าน่าจะเป็น (ไม่ใช่ "ค่อนข้าง" เมื่อเทียบกับ "ทั้งหมด" ไร้ความหมาย แต่) "ควร ST_Distance และ ST_Area ควรได้รับอนุญาตให้ส่งคืนผลลัพธ์ที่ได้จากรูปทรงเรขาคณิต 4326?"
Martin F
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.