जवाबों:
PostGIS 1.5 ने एक नया GEOGRAPHY प्रकार पेश किया । GEOGRAPHY
प्रकार एक उपगोल पर unprojected निर्देशांक एक PostGIS तालिका में संग्रहीत करने के लिए के लिए अनुमति देता है, और कुछ विश्लेषण कार्यों उन पर प्रदर्शन किया जा करने के लिए।
ST_Area
वर्ग मीटर में उनके क्षेत्र की गणना करने के लिए GEOGRAPHY प्रकार के बहुभुज पर प्रश्न किए जा सकते हैं।
निम्नलिखित क्वेरी सभी पॉलीगोन के क्षेत्र को स्फेरॉइड का उपयोग करके आउटपुट करती है (वर्तमान में केवल WGS-84
गोलाकार समर्थित है), यह मानते हुए कि वे GEOGRAPHY
प्रकार का उपयोग करके संग्रहीत हैं :
SELECT ST_Area(the_geom) FROM table_of_polygons;
एक गोलाकार पर क्षेत्र की गणना करने के लिए उपयोग किया जाने वाला एल्गोरिथ्म स्रोत-कोड से प्राप्त किया जा सकता है ।
यहां कुछ कोड का लिंक दिया गया है, जो एक साधारण बहुभुज (मूल रूप से विश्व पवन मंच से) के क्षेत्र का उत्पादन करेगा: http://forum.worldwindcentral.com/showthread.php?t=20724 । यह एक क्षेत्र पर समस्या को हल करता है, मोटे तौर पर रिश्ते पर आधारित:
एस = बहुभुज का क्षेत्र; थीटा रेडियन में आंतरिक कोणों का योग है; n कोने की संख्या है; r गोले की त्रिज्या है।
यह भी देखें (सूत्र छवि का स्रोत): http://www.geom.uiuc.edu/docs/reference/CRC-formulas/node59.html
मुझे एक तिरछे क्षेत्र पर बहुभुज क्षेत्र के लिए लिंक और / या कोड देखकर खुशी होगी।
यहाँ सरल गणना के लिए स्रोत है जो हम OpenLayers में बनाते हैं। यह तरीका "कुछ अल्गोरिद्म फॉर पॉलीगन्स ऑन ए स्फीयर" (रॉबर्ट जी। चेम्बरलेन और विलियम एच। ड्युकेट, नासा जेपीएल पब्लिकेशन 07-03) से आता है। ऊपर से जुड़ा कोड एक रैखिक रिंग (भौगोलिक निर्देशांक के साथ) के क्षेत्र का निर्धारण करने के लिए है। Polygons और 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) के दो एलीमेंट एरे हैं। OpenLayers.Util.rad विधि सिर्फ डिग्रियों को रेडियंस (deg * PI / 180) में परिवर्तित करती है।
आपको अपने भौगोलिक निर्देशांक को एक प्रक्षेपण में बदलना होगा, जिसमें एक समन्वय प्रणाली है जो आपको क्षेत्र की गणना करने के लिए कार्टेशियन गणित का उपयोग करने की अनुमति देती है।
मेरा मानना है कि UTM स्वीकृत मानक प्रक्षेपण है, क्योंकि यह आपके अक्षांश और देशांतर के आधार पर एक क्षेत्र का चयन करने के लिए बहुत सरल है, और विरूपण भी न्यूनतम है, यहां तक कि क्षेत्रों में भी। इसलिए, यदि आपके पास टेक्सास का आकार बहुभुज है, तो आप UTM जोन 14 N का उपयोग कर सकते हैं और यह अभी भी काफी सटीक होगा।
यदि आपके बहुभुज उत्तर या दक्षिण ध्रुव पर हैं, तो आपको इसके बजाय UPS का उपयोग करना चाहिए , क्योंकि UTM अनुमान ध्रुवों पर कम सटीक होते हैं, और आप जल्दी से उन्हें पीछे छोड़ देंगे क्योंकि सीमाएँ छोटी हो जाती हैं (क्योंकि वे देशांतर की रेखाओं का अनुसरण करती हैं)
एक बार जब आपके अंक कार्टेशियन-फ्रेंडली कोऑर्डिनेट सिस्टम में होते हैं, तो आप उन्हें पॉलीगॉन की तरह ग्रिड और कैलकुलेटेड एरिया पर मान सकते हैं।
2011-07 में ज्योग्राफिकलिब में एक बहुभुज वर्ग जोड़ा गया था। यह बहुभुज के वास्तविक दीर्घवृत्ताभ क्षेत्र की गणना करता है, जिसके किनारे भूगणित होते हैं। PostGIS के विपरीत, विधि संख्यात्मक एकीकरण को पूरा नहीं करती है। डोक्यूमिनेशन के लिए (और पेपर की एक कड़ी जहां सूत्र प्राप्त होते हैं), देखें
http://geographiclib.sf.net/html/classGeographicLib_1_1PolygonAreaT.html
(लिंक को टेम्पलेट क्लास में बहुभुज के सामान्यीकरण को दर्शाने के लिए तय किया गया है।)