मीटर की कुछ मात्रा द्वारा एक अक्षांश / देशांतर ऑफसेट करने के लिए एल्गोरिथ्म


108

मैं एक एल्गोरिथ्म की तलाश कर रहा हूं, जब एक अक्षांश और देशांतर जोड़ी और कार्टेशियन निर्देशांक (x, y) में मीटर में एक वेक्टर अनुवाद मुझे एक नया समन्वय देगा। एक रिवर्स हैवरसिन की तरह। मैं एक दूरी और एक शीर्षक परिवर्तन के साथ भी काम कर सकता था, लेकिन यह शायद धीमा होगा और उतना सटीक नहीं होगा। आदर्श रूप में, एल्गोरिथ्म तेज होना चाहिए क्योंकि मैं एक एम्बेडेड सिस्टम पर काम कर रहा हूं। सटीकता महत्वपूर्ण नहीं है, 10 मीटर के भीतर अच्छा होगा।


तो आप पृथ्वी को एक गोले के रूप में देखना चाहेंगे?
UnderDark

1
हाँ, यह ठीक रहेगा क्योंकि मैं उम्मीद कर रहा हूं कि <1 किमी दूर।
थॉमस ओ

जवाबों:


107

यदि आपके विस्थापन बहुत महान नहीं हैं (कुछ किलोमीटर से कम) और आप ध्रुवों पर सही नहीं हैं, तो त्वरित और गंदे अनुमान का उपयोग करें कि y दिशा में 111,111 मीटर (111.111 किमी) 1 डिग्री (अक्षांश का) है और एक्स दिशा में 111,111 * कॉस (अक्षांश) मीटर 1 डिग्री (देशांतर) है।


3
@ थोमस: दरअसल, आप डंडे के बहुत करीब हो सकते हैं। मैंने 1400 मीटर के बराबर x- और y- विस्थापन का उपयोग करके UTM गणना के खिलाफ जाँच की (इसलिए कुल विस्थापन 2 किमी है)। परिणाम 8.6 मीटर या उससे बेहतर हैं। सबसे खराब अक्षांश (इस दिशा के लिए और विस्थापन की मात्रा) 81 डिग्री है: सन्निकटन वास्तव में अधिक सटीक होता है क्योंकि आप उत्तर की ओर बढ़ते हैं और इसकी त्रुटि 10 मीटर से नीचे रहती है जब तक कि आप 89.6 डिग्री से आगे नहीं निकल जाते!
व्हिबर

60
संयोग से, 111,111 की इन जादुई संख्याओं को कुछ इतिहास को जानकर याद रखना आसान है: फ्रांसीसी ने मूल रूप से मीटर को परिभाषित किया था ताकि 10 ^ 7 मीटर भूमध्य रेखा से उत्तरी ध्रुव तक पेरिस मध्याह्न के साथ दूरी हो। इस प्रकार, 10 ^ 7/90 = 111,111.1 मीटर दो शताब्दियों पहले फ्रांसीसी सर्वेक्षकों की क्षमताओं के भीतर अक्षांश के एक डिग्री के बराबर होता है।
whuber

3
इसलिए सूत्र के साथ अगर मैं y दिशा से + 100 मीटर चलना चाहता हूं तो 10.0 एन, 10.0 ई से कहें, क्या मैं सिर्फ 100/111111 जोड़ूंगा? यदि x दिशा + 100 मीटर में चलती है, तो क्या यह 100 direction (111,111 × (cos 10)) होगा? बस यह सुनिश्चित करना कि मुझे यह अधिकार मिल गया है।
थॉमस ओ

5
@ थोमास हाँ, यह सही है। ध्यान दें कि दूसरा सूत्र स्पष्ट एक्स-विस्थापन (1 से कम संख्या से विभाजित करने के आधार पर) का विस्तार कैसे करता है , क्योंकि यह देशांतर की एक डिग्री छोटी हो जाती है क्योंकि आप भूमध्य रेखा से ध्रुवों की ओर बढ़ते हैं। केवल संभावित अड़चन यकीन है कि आप और आपके सॉफ्टवेयर प्लेटफार्म क्या "क्योंकि" पर सहमत हैं बनाने के लिए है का अर्थ है: यह 10 की कोज्या के रूप में बेहतर था की व्याख्या क्योंकि (10) डिग्री , नहीं 10 रेडियंस! (यदि नहीं, तो 10 डिग्री = 10 * पीआई / 180 रेडियन सरल रूपांतरण को दिखाता है।) इस बिंदु पर, @haakon_d द्वारा प्रस्तुत कोड आपको पूरी तरह से समझाना चाहिए।
whuber

7
किसी ने "मीटर" को "किमी" से बदलने के लिए इस उत्तर को संपादित करने का प्रयास किया। वे शायद एक दशमलव बिंदु के यूरोपीय अर्थ में कॉमा "," पढ़ रहे थे। मैं अमेरिकी सम्मेलन (जिसे मैं मानता हूं कि अंतर्राष्ट्रीय प्रकाशनों का सम्मेलन भी है) का अनुसरण करते हुए, तीन अंकों के समूहों और एक दशमलव बिंदु में अलग-अलग अंकों के तार जोड़ने के लिए अल्पविराम का उपयोग किया जाता है "।" अल्पविराम के बजाय। (यह उपयोग पिछली टिप्पणियों में स्पष्ट रूप से दिखाया गया है।) किसी भी अस्पष्टता से बचने के लिए मैंने उत्तर को स्पष्ट रूप से दिखाने के लिए संपादित किया है कि अल्पविराम और बिंदु का क्या अर्थ है।
whuber

56

जैसा कि Liedman अपने जवाब में कहते हैं कि विलियम्स के विमानन सूत्र एक अमूल्य स्रोत हैं, और 1 किमी तक के विस्थापन के लिए 10 मीटर के भीतर सटीकता रखने के लिए आपको संभवतः इनमें से अधिक जटिल का उपयोग करने की आवश्यकता होगी।

लेकिन अगर आप 10 मीटर से ऊपर की त्रुटियों को स्वीकार करने के इच्छुक हैं तो लगभग 200 मी से अधिक ऑफसेट आप एक सरल फ्लैट पृथ्वी गणना का उपयोग कर सकते हैं। मुझे लगता है कि अभी भी त्रुटियों 1 मीटर तक के ऑफसेट के लिए 50 मीटर से कम होगी।

 //Position, decimal degrees
 lat = 51.0
 lon = 0.0

 //Earth’s radius, sphere
 R=6378137

 //offsets in meters
 dn = 100
 de = 100

 //Coordinate offsets in radians
 dLat = dn/R
 dLon = de/(R*Cos(Pi*lat/180))

 //OffsetPosition, decimal degrees
 latO = lat + dLat * 180/Pi
 lonO = lon + dLon * 180/Pi 

इसे वापस करना चाहिए:

 latO = 51,00089832
 lonO = 0,001427437

7
मैं केवल यह बताना चाहता हूं कि यह मेरे द्वारा प्रदान किए गए उत्तर के समान है, सिवाय इसके कि आपने 111,195.5 प्रति 111,111 मीटर के मेरे मूल्य को प्रतिस्थापित किया है। आपका मूल्य उच्च अक्षांशों पर थोड़ा बेहतर है लेकिन निचले अक्षांशों में थोड़ा खराब है (0 से लगभग 40 डिग्री तक)। या तो मान सटीकता की घोषित आवश्यकताओं को पूरा करता है।
व्हिबर

1
कोड प्रदान करने के लिए +1। ध्यान दें कि यह आपके संदेह से अधिक सटीक है (त्रुटि आमतौर पर 2000 मीटर से कम 5 मीटर है)।
whuber

1
मुझे आश्चर्य हुआ कि क्या मुझे अपने उत्तर में एक टिप्पणी जोड़नी चाहिए कि यह R के मूल्य को छोड़कर आपके लिए एक समान समाधान है, लेकिन संक्षिप्तता के कारण इसे छोड़ दिया। जब यह परिशुद्धता की बात आती है तो आप तब तक सही होते हैं जब तक आप सिस्टम में कोई घूर्णी त्रुटि नहीं जोड़ते। एक स्थानीय अनुमानित समन्वय प्रणाली में मापा गया ऑफसेट का उपयोग करके घूर्णी त्रुटियां काफी बड़ी हो सकती हैं।
haakon_d

1
यह एक उत्कृष्ट बिंदु है: हमने स्पष्ट रूप से माना है कि x- विस्थापन कम से कम सच पूर्व-पश्चिम के करीब है और y- विस्थापन उत्तर-दक्षिण के करीब है। यदि नहीं, तो उन्हें अपने लेट-लोन समकक्षों की गणना करने से पहले बराबर ईडब्ल्यू और एनएस विस्थापन (न केवल "ईस्टिंग्स" और "नॉर्थिंग्स") में बदलना होगा।
व्हिबर

एविएशन फॉर्मुलरी समीकरणों की d दूरी पैरामीटर रेडियन में है, जैसे (दूरी / त्रिज्या-पृथ्वी)।
user1089933

23

मुझे लगता है कि विमानन फार्मूलरी, यहां सूत्रों और एल्गोरिदम के इन प्रकार के लिए अच्छा है। अपनी समस्या के लिए, "लाट / लंबे दिए गए रेडियल और दूरी" की जाँच करें: यहाँ

ध्यान दें कि यह एल्गोरिथ्म आपके उपयोग के लिए थोड़ा जटिल हो सकता है, यदि आप त्रिकोणमिति फ़ंक्शन का उपयोग कम रखना चाहते हैं, आदि।


इसके लिए धन्यवाद - आदर्श दिखता है। हालांकि मैं यह पता नहीं लगा सकता कि दूरी मीटर या किसी अन्य माप में है।
थॉमस ओ

2

इस बिंदु को पहले प्रोजेक्ट करने का कोई मतलब हो सकता है। आप इस छद्म कोड की तरह कुछ कर सकते हैं:

falt_coordinate = latlon_to_utm(original_koordinate)
new_flat_coordinate = flat_coordinate + (x,y)
result_coordinate = utm_to_latlon(new_flat_coordinate)

जहाँ (x, y) वांछित ऑफ़सेट है।

आपको utm, किसी भी समतल निर्देशांक प्रणाली का उपयोग करने की आवश्यकता नहीं है, जो आपके क्षेत्र में समझ में आता है।

आप किस सॉफ्टवेयर के साथ काम कर रहे हैं?


0

मैंने Google मानचित्र पर एक सरल कस्टम मानचित्र बनाया है जो स्वीकृत उत्तर (1/111111 == एक मीटर) द्वारा वर्णित अनुमान एल्गोरिथ्म को दिखाता है। यहाँ देखने और इसके साथ खेलने में संकोच न करें:

https://drive.google.com/open?id=1XWlZ8BM00PIZ4qk43DieoJjcXjK4z7xe&usp=sharing

यहाँ छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.