Làm thế nào tôi có thể đo diện tích từ tọa độ địa lý?


12

Nếu tôi có đa giác trong tọa độ địa lý (WGS84), làm thế nào để tôi đo tổng diện tích từng diện tích trên bề mặt trái đất, có tính đến độ cong của trái đất?

Câu trả lời:


7

PostGIS 1.5 đã giới thiệu một loại GEOGRAPHY mới . Các GEOGRAPHYloại cho phép tọa unprojected trên một hình cầu phải được lưu trữ trong một bảng PostGIS, và một số chức năng phân tích phải thực hiện khi họ.

ST_Area truy vấn có thể được thực hiện theo đa giác loại GEOGRAPHY để tính diện tích của chúng theo mét vuông.

Truy vấn sau đây đưa ra diện tích của tất cả các đa giác bằng cách sử dụng hình cầu (hiện tại chỉ WGS-84hỗ trợ hình cầu), giả sử chúng được lưu trữ bằng cách sử dụng GEOGRAPHYloại:

SELECT ST_Area(the_geom) FROM table_of_polygons;

Thuật toán được sử dụng để tính diện tích trên một hình cầu có thể được lấy từ mã nguồn .


Mát mẻ. Cảm ơn bạn về thông tin. Tôi sẽ phải thử điều này.
glennon

PostGIS làm gì dưới mui xe?
mwalker

@mwalker Tôi chưa dành thời gian để tìm hiểu, nhưng tôi đã thêm một liên kết đến mã nguồn nếu bạn muốn :)
đánh dấu

bằng con mắt chưa được huấn luyện của tôi, PostGIS đang sử dụng một tổng kết, khắc khu vực thành các dải và thêm tất cả chúng lên.
mwalker

10

Đây là một liên kết đến một số mã sẽ mang lại diện tích của một đa giác đơn giản (ban đầu từ Diễn đàn Gió thế giới): http://forum.worldwindcentral.com/showthread.php?t=20724 . Điều này giải quyết vấn đề trên một hình cầu, đại khái dựa trên mối quan hệ:

văn bản thay thế

S = diện tích đa giác; theta là tổng các góc bên trong tính bằng radian; n là số đỉnh; r là bán kính của mặt cầu.

Xem thêm (nguồn hình ảnh công thức): http://www.geom.uiuc.edu/docs/reference/CRC-form Formula / node59.html

Tôi sẽ rất vui mừng khi thấy các liên kết và / hoặc mã cho khu vực đa giác trên một hình cầu bắt buộc.


1
@glennon Mã cho diện tích của đa giác trắc địa trên một hình cầu có sẵn trong GeographicLib . Mã này chứa một liên kết đến bài báo nơi thuật toán được dẫn xuất.
cffk

Phương pháp này, dựa trên công thức Gauss-Bonnet, rất được quan tâm về mặt toán học nhưng hầu như không có giá trị đối với các số liệu nhỏ trên trái đất: có sự hủy bỏ rất lớn để tìm ra "phần thừa" trong ngoặc đơn, thường dẫn đến mất độ chính xác thảm khốc-- thật dễ dàng để mất gần như toàn bộ độ chính xác hoàn toàn, ngay cả khi làm việc trong số học chính xác kép. Đối với các tính toán GIS thông thường, nó không hoạt động.
whuber

7

Đây là nguồn cho phép tính đơn giản mà chúng tôi thực hiện trong OpenLayers. Phương pháp này xuất phát từ "Một số thuật toán cho đa giác trên một quả cầu" (Robert. G. Chamberlain và William H. Duquette, NASA JPL Publication 07-03). Mã được liên kết ở trên là để xác định diện tích của vòng tuyến tính (có tọa độ địa lý). Các khu vực cho Đa giác và MultiPolygons được tóm tắt từ các vòng.

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;
}

Các thành phần vòng là hai mảng phần tử của các chuỗi x, y (lon, lat) trong đoạn mã trên. Phương thức OpenLayers.Util.rad chỉ chuyển đổi độ thành radian (deg * PI / 180).


1
Bán kính bạn đang sử dụng, 6378137.0 m tương ứng với bán kính xích đạo của Trái đất. Có một lý do cho điều đó? Sẽ không sử dụng bán kính trung bình chính xác hơn?
FredB

Math.radians = function (độ) {return độ * Math.PI / 180.0; }; x = vĩ độ, y = kinh độ
Stefan Steiger

4

Bạn sẽ cần chuyển đổi tọa độ địa lý của mình thành hình chiếu có hệ thống tọa độ cho phép bạn sử dụng toán học Cartesian để tính diện tích.

Tôi tin rằng UTM là phép chiếu tiêu chuẩn được chấp nhận, vì rất đơn giản để chọn một vùng dựa trên vĩ độ và kinh độ của bạn, và độ méo là tối thiểu, thậm chí trên các vùng. Vì vậy, nếu bạn có đa giác kích thước của Texas, bạn có thể sử dụng UTM Vùng 14 N và nó vẫn sẽ khá chính xác.

Nếu đa giác của bạn ở cực Bắc hoặc Nam, thì bạn nên sử dụng UPS thay vào đó, vì các phép chiếu UTM kém chính xác hơn các cực và bạn sẽ nhanh chóng đi qua chúng khi các ranh giới trở nên nhỏ hơn (vì chúng đi theo các đường kinh độ)

Khi các điểm của bạn nằm trong hệ tọa độ thân thiện với Cartesian, bạn có thể coi chúng như các đa giác trên lưới và tính diện tích.


3

Một lớp PolygonArea đã được thêm vào GeographicLib vào năm 2011-2007. Điều này sẽ tính diện tích hình elip thực sự của một đa giác có các cạnh là trắc địa. Không giống như PostGIS, phương thức này không đòi hỏi tích hợp số. Để biết thông tin (và liên kết đến bài báo có công thức xuất phát), xem

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

(Liên kết được cố định để phản ánh tổng quát hóa của PolygonArea đến một lớp mẫu.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.