दस्तावेज़ / कोर / पृथ्वी पर गणना

पृथ्वी पर गणना (Spherical)

दूरी, दिशा, क्षेत्रफल और इंटरपोलेशन जैसी भौगोलिक गणनाएं, 3 प्लेटफार्मों पर समान नाम और समान परिणामों के साथ प्रदान की जाती हैं। मानचित्र SDK द्वारा प्रदान की जाने वाली उपयोगिताओं पर निर्भर नहीं होने के कारण, प्रदाता बदलने पर भी मान नहीं बदलते हैं। SDK के आंतरिक टैप निर्धारण और ग्रेट सर्कल मार्ग चित्रण भी, सभी इस गणना का उपयोग करते हैं।

ELLIPSOID
WGS84
SEMI-MAJOR
6,378,137 m
FLATTENING
1 / 298.257…
UNIT
मीटर / डिग्री
प्लेटफ़ॉर्म

01 · बुनियादी गणना

अक्सर उपयोग किए जाने वाले फ़ंक्शन `Spherical` में संग्रहित हैं। दूरी मीटर में, दिशा वास्तविक उत्तर को 0 मानकर डिग्री में, और क्षेत्रफल वर्ग मीटर में लौटता है। तर्क स्वयं निर्देशांक होते हैं, और यह प्रक्षेपण या ज़ूम पर निर्भर नहीं करता है।

फ़ंक्शन
विवरण
computeDistanceBetween
दो बिंदुओं के बीच की दूरी (मीटर)।
computeHeading
आरंभिक बिंदु से अंतिम बिंदु को देखते समय की दिशा (-180 से 180 डिग्री)।
computeOffset
आरंभिक बिंदु से दूरी और दिशा निर्दिष्ट करने वाले बिंदु के निर्देशांक। इसका उपयोग वृत्त या रिंग बनाने के लिए किया जाता है।
computeOffsetOrigin
अंतिम बिंदु, दूरी और दिशा से आरंभिक बिंदु की रिवर्स गणना करता है।
computeLength
निर्देशांक श्रृंखला के साथ कुल लंबाई (मीटर)। मार्ग की दूरी प्रदर्शन के लिए।
computeArea / computeSignedArea
बंद निर्देशांक श्रृंखला द्वारा घिरा क्षेत्रफल (वर्ग मीटर)। हस्ताक्षरित मान का उपयोग घूर्णन दिशा का निर्धारण करने के लिए किया जा सकता है।
interpolate
दो बिंदुओं के बीच ग्रेट सर्कल मार्ग पर अनुपात इंटरपोलेशन करता है।
Planar.interpolate
दो बिंदुओं के बीच अक्षांश-देशांतर की सीधी रेखा पर अनुपात इंटरपोलेशन करता है (सीधी रेखा मॉडल `Planar` का तरीका)। यदि अंतर्राष्ट्रीय तिथि रेखा को पार करता है, तो यह सबसे छोटी ओर से गुजरता है।
com.mapconductor.core.spherical
val meters = Spherical.computeDistanceBetween(from, to)
val heading = Spherical.computeHeading(from, to)

// वृत्त के किनारे के मार्कर आठ दिशाओं में रखें
val ring = (0 until 8).map { i ->
    Spherical.computeOffset(center, 3_000.0, i * 45.0)
}

val routeMeters = Spherical.computeLength(routePoints)
val areaSqMeters = Spherical.computeArea(polygonPoints)

02 · गोलाकार मॉडल और दीर्घवृत्ताकार मॉडल

भौगोलिक गणना के लिए दो सटीकता स्तर तैयार हैं। पृथ्वी को एक वास्तविक गोले के रूप में मानने वाला गोलाकार मॉडल, और WGS84 दीर्घवृत्त के रूप में मानने वाला जियोडेसिक मॉडल है। इन्हें उपयोग के अनुसार अलग-अलग तरीकों से उपयोग किया जाता है।

स्थिरांक दोनों WGS84 पर आधारित हैं (भूमध्य रेखा त्रिज्या 6,378,137 मीटर, चपटापन 1/298.257223563)। 3 प्लेटफार्मों पर समान स्थिरांक और समान सूत्रों का उपयोग करने के कारण, समान इनपुट के लिए समान मान लौटता है।

Spherical

गोलीय मॉडल (पर्याप्त तेज़, पर्याप्त सटीक)

उपयोग: दूरी प्रदर्शन · दिशा · रिंग निर्माण · क्षेत्रफल · टैप पहचान

दूरी के लिए हेवरसाइन (haversine), दिशा और इंटरपोलेशन के लिए गोलीय त्रिकोणमिति। लाभ यह है कि सैकड़ों किलोमीटर तक त्रुटि व्यावहारिक रूप से नगण्य है और गणना लागत कम है।

WGS84Geodesic

दीर्घवृत्ताभ मॉडल (जियोडेसिक)

उपयोग: लंबी दूरी की उड़ान मार्ग · सटीक दूरी · दिशा · क्षेत्रफल

WGS84 दीर्घवृत्ताभ पर जियोडेसिक (Vincenty प्रकार का पुनरावर्ती समाधान) का उपयोग करके गणना करता है। विधि संरचना Spherical के समान है, इसलिए गोले के लिए Spherical और WGS84 के लिए WGS84Geodesic को कॉल बदले बिना बदला जा सकता है। क्षेत्रफल दीर्घवृत्ताभ (authalic) से प्राप्त किया जाता है।

FALLBACK

अभिसरण न होने पर गोलीय पर वापस गिरना

दीर्घवृत्ताभ पुनरावर्ती समाधान, लगभग विपरीत ध्रुवों वाले दो बिंदुओं आदि पर अभिसरण नहीं कर सकते हैं। उस स्थिति में यह स्वचालित रूप से गोलीय मॉडल के परिणाम पर स्विच हो जाता है, इसलिए 0 या NaN वापस नहीं आएगा। कॉलिंग साइड पर अपवाद हैंडलिंग लिखने की आवश्यकता नहीं है।

03 · स्क्रीन के साथ पुल

मानचित्र पर "एक उंगली" या "16px का मार्जिन" जैसी स्क्रीन-आधारित मात्राओं को भौगोलिक दूरी में बदलने वाले फ़ंक्शन का समूह है। ज़ूम और अक्षांश के अनुसार रूपांतरण शामिल होने के कारण, ज़ूम स्तर या स्थान बदलने पर भी अनुभव नहीं बदलता है।

calculateMetersPerPixel
निर्दिष्ट ज़ूम और अक्षांश पर प्रति पिक्सेल मीटर की संख्या।
expandBounds
आयताकार सीमा को मीटर की इकाइयों में बाहर की ओर फैलाता है। प्रदर्शन सीमा से थोड़ा व्यापक डेटा प्राप्त करते समय उपयोग किया जाता है।

आकृति · टैप निर्धारण में उपयोग की जाने वाली प्रक्रिया

01

सेटिंग मान "फिंगर साइज़" (तार्किक इकाइयाँ) को स्क्रीन पिक्सल में बदलता है।

02

calculateMetersPerPixel से, वर्तमान ज़ूम और अक्षांश पर सहनशील दूरी (मीटर) में बदलता है।

03

उस सहनशील दूरी का उपयोग करके, पंक्तियों और आकृतियों से दूरी को भौगोलिक निर्देशांक के रूप में निर्धारित करता है।

इस प्रक्रिया के कारण, ज़ूम बदलने पर भी लाइन को दबाने की सुविधा नहीं बदलती है, और किसी भी प्रदाता पर यह समान निर्धारण होता है।

04 · लाइनों और आकृतियों के लिए गणना

पॉलीलाइन और पॉलीगॉन के चित्रण और निर्धारण को, किसी भी प्रदाता पर समान परिणाम देने के लिए फ़ंक्शन का समूह है। SDK के आंतरिक उपयोग में आने वाले वही फ़ंक्शन सार्वजनिक रूप से उपलब्ध हैं।

फ़ंक्शन
विवरण
WGS84Geodesic.createInterpolatePoints
भू-ज्यामितीय रेखा के साथ, प्रत्येक अंतराल पर निर्देशांक को इंटरपोलेट करता है। यह सीधे वक्र नहीं बना सकने वाले इंजन के लिए निर्देशांक सरणी बनाता है।
Planar.createInterpolatePoints
अक्षांश और देशांतर की सीधी रेखा के साथ निर्देशांक को इंटरपोलेट करता है। नाम समान है, केवल नेमस्पेस अलग है।
WGS84Geodesic.pointOnLineOrNull
भू-ज्यामितीय रेखा पर रेखा खंड के लिए, निर्दिष्ट दूरी के भीतर निकटतम बिंदु लौटाता है। इसका उपयोग वक्र पर टैप निर्धारण के लिए किया जाता है।
Planar.pointOnLineOrNull
सीधी रेखा के रेखा खंड के लिए, यह निर्दिष्ट दूरी के भीतर है या नहीं, यह निर्धारित करता है।
splitByMeridian
180 डिग्री देशांतर को पार करने वाले निर्देशांक को सीमा पर विभाजित करता है। यह किसी भी नेमस्पेस से संबंधित न होने वाला एक शीर्ष-स्तरीय फ़ंक्शन है।
closestPointOnSegment
रेखा खंड पर सबसे निकटतम बिंदु ज्ञात करता है। यह भी एक शीर्ष-स्तरीय फ़ंक्शन है।

createInterpolatePoints और pointOnLineOrNull, दोनों WGS84Geodesic और Planar में समान नाम से उपलब्ध हैं। कॉल करने वाला केवल नेमस्पेस बदलकर, भू-ज्यामितीय मॉडल और समतल मॉडल के बीच स्विच कर सकता है।

CONSISTENCY

समान इनपुट के लिए समान परिणाम

Kotlin, Swift और TypeScript कार्यान्वयन समान सूत्रों में लिखे गए हैं और समान स्थिरांक का उपयोग करते हैं। प्लेटफ़ॉर्म के बीच प्रदर्शित दूरी और क्षेत्रफल में अंतर नहीं होगा।

PUBLIC API

ऐप से भी उपयोग किया जा सकता है

कोर गणना कार्य आंतरिक उपयोग के लिए नहीं बल्कि सार्वजनिक API हैं। मार्ग दूरी प्रदर्शन, त्रिज्या गणना, कस्टम हिट पहचान आदि के लिए ऐप के तर्क में सीधे उपयोग किया जा सकता है। इस पृष्ठ पर सूचीबद्ध सभी कार्य तीनों प्लेटफ़ॉर्म पर उपलब्ध हैं।

संबंधित पेज