ฉันจะวัดพื้นที่จากพิกัดทางภูมิศาสตร์ได้อย่างไร


12

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

คำตอบ:


7

PostGIS 1.5 แนะนำใหม่ประเภทภูมิศาสตร์ GEOGRAPHYชนิดช่วยให้พิกัด unprojected บนลูกกลมที่จะเก็บไว้ในตาราง PostGIS และบางฟังก์ชั่นการวิเคราะห์เพื่อที่จะดำเนินการกับพวกเขา

ST_Area สามารถดำเนินการค้นหากับประเภทรูปหลายเหลี่ยม GEOGRAPHY เพื่อคำนวณพื้นที่ในหน่วยตารางเมตร

เคียวรีต่อไปนี้จะแสดงพื้นที่ของรูปหลายเหลี่ยมทั้งหมดโดยใช้ spheroid (ปัจจุบันรองรับเฉพาะWGS-84spheroid) โดยสมมติว่าเก็บไว้โดยใช้GEOGRAPHYประเภท:

SELECT ST_Area(the_geom) FROM table_of_polygons;

ขั้นตอนวิธีการที่ใช้ในการคำนวณพื้นที่บนลูกกลมสามารถมาจากซอร์สโค้ด


เย็น. ขอบคุณสำหรับข้อมูล. ฉันจะต้องลองสิ่งนี้
ล็นนอน

PostGIS ทำอะไรภายใต้ประทุน?
mwalker

@mwalker ผมยังไม่ได้เวลาที่จะเรียนรู้ แต่ฉันได้เพิ่มการเชื่อมโยงไปยังแหล่งรหัสหากคุณต้องการ :)
fmark

ด้วยสายตาที่ไม่ได้รับการฝึกฝนของฉัน PostGIS ใช้การสรุปแกะสลักพื้นที่เป็นแถบแล้วบวกพวกมันทั้งหมด
mwalker

10

นี่คือการเชื่อมโยงไปยังรหัสบางอย่างที่จะให้ผลผลิตในพื้นที่ของรูปหลายเหลี่ยมง่าย (มีพื้นเพมาจากลมโลกฟอรั่ม): การhttp://forum.worldwindcentral.com/showthread.php?t=20724 สิ่งนี้จะช่วยแก้ปัญหาบนทรงกลมโดยประมาณตามความสัมพันธ์:

ข้อความแสดงแทน

S = พื้นที่ของรูปหลายเหลี่ยม; ทีต้าคือผลรวมของมุมภายในเป็นเรเดียน n คือจำนวนจุดยอด r คือรัศมีของทรงกลม

ดูเพิ่มเติม (ที่มาของอิมเมจสูตร): http://www.geom.uiuc.edu/docs/reference/CRC-formulas/node59.html

ฉันยินดีที่จะเห็นลิงก์และ / หรือรหัสสำหรับพื้นที่รูปหลายเหลี่ยมในรูปทรงกลม oblate


1
@glennon รหัสพื้นที่ของรูปหลายเหลี่ยมเนื้อที่บนลูกกลมที่มีอยู่ในGeographicLib รหัสประกอบด้วยลิงค์ไปยังกระดาษที่ได้รับอัลกอริทึม
cffk

วิธีนี้ตามสูตร Gauss-Bonnet นั้นมีความน่าสนใจทางคณิตศาสตร์อย่างมาก แต่เกือบจะไร้ค่าสำหรับตัวเลขขนาดเล็กบนโลก: มีการยกเลิกอย่างมากเพื่อค้นหา "ส่วนเกิน" ที่เล็กที่สุดภายในวงเล็บมักจะนำไปสู่การสูญเสียความแม่นยำอย่างรุนแรง มันง่ายที่จะสูญเสียความแม่นยำเกือบทั้งหมดไปเลยแม้แต่ตอนที่ทำงานด้วยเลขคณิตความแม่นยำสองเท่า สำหรับการคำนวณ GIS ตามปกติมันไม่ทำงาน
whuber

7

นี่คือแหล่งที่มาสำหรับการคำนวณแบบง่ายที่เราทำใน OpenLayers วิธีนี้มาจาก"อัลกอริทึมบางอย่างสำหรับรูปหลายเหลี่ยมบนทรงกลม" (Robert. G. Chamberlain และ William H. Duquette, NASA JPL Publication 07-03) รหัสที่เชื่อมโยงกับด้านบนใช้สำหรับกำหนดพื้นที่ของวงแหวนแบบเส้นตรง (พร้อมพิกัดทางภูมิศาสตร์) พื้นที่สำหรับรูปหลายเหลี่ยมและ MultiPolygons ถูกหาผลรวมจากวงแหวน

var area = 0.0;
var len = ring.components && ring.components.length;
if (len > 2) {
    var p1, p2;
    for (var i=0; i<len-1; i++) {
        p1 = ring.components[i];
        p2 = ring.components[i+1];
        area += OpenLayers.Util.rad(p2.x - p1.x) *
            (2 + Math.sin(OpenLayers.Util.rad(p1.y)) +
            Math.sin(OpenLayers.Util.rad(p2.y)));
    }
    area = area * 6378137.0 * 6378137.0 / 2.0;
}

ส่วนประกอบของแหวนคือสององค์ประกอบของอาร์เรย์ของ x, y (lon, lat) coords ในรหัสข้างต้น วิธี OpenLayers.Util.rad เพียงแปลงองศาเป็นเรเดียน (deg * PI / 180)


1
รัศมีที่คุณใช้ 6378137.0 m สอดคล้องกับรัศมีเส้นศูนย์สูตรของโลก มีเหตุผลที่จะทำเช่นนั้น? จะไม่ใช้รัศมีกลางให้แม่นยำยิ่งขึ้นหรือไม่
FredB

Math.radians = ฟังก์ชัน (องศา) {องศากลับ * Math.PI / 180.0; }; x = ละติจูด, y = ลองจิจูด
Stefan Steiger

4

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

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

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

เมื่อคะแนนของคุณอยู่ในระบบพิกัดที่เป็นมิตรกับคาร์ทีเซียนคุณสามารถปฏิบัติต่อพวกมันเช่นรูปหลายเหลี่ยมในตารางและคำนวณพื้นที่


3

เพิ่มคลาส PolygonArea ใน GeographicLib ใน 2011-07 สิ่งนี้คำนวณพื้นที่รูปวงรีที่แท้จริงของรูปหลายเหลี่ยมที่มีขอบเป็นมาตรศาสตร์ ซึ่งแตกต่างจาก PostGIS วิธีนี้ไม่ได้ทำให้เกิดการรวมเชิงตัวเลข สำหรับ documenation (และลิงค์ไปยังกระดาษที่ได้รับสูตร) ​​ให้ดู

http://geographiclib.sf.net/html/classGeographicLib_1_1PolygonAreaT.html

(ลิงก์ได้รับการแก้ไขเพื่อให้สะท้อนถึงลักษณะทั่วไปของ PolygonArea ไปยังคลาสเทมเพลต)

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