सर्कल Radii के लिए जियोडेसिक माप का उपयोग करना?


15

मैं वर्तमान में एक OpenLayers मानचित्रण साइट विकसित कर रहा हूं। माप एक लाइन उपकरण, और एक क्षेत्र उपकरण का उपयोग करके किया जा सकता है। ये दोनों वर्तमान में OpenLayers API में उल्लिखित भू-माप माप की गणना करने के लिए निर्धारित हैं ।

मैं प्लानर माप के बजाय भू-माप माप का उपयोग करता हूं क्योंकि उपयोगकर्ता परीक्षण के दौरान लोगों ने उन दूरी के लिए उपकरण के माप पर सवाल उठाया था जो वे पहले से जानते थे (जैसे कि शहरों के बीच ड्राइविंग)।

साइट की एक नई विशेषता एक उपयोगकर्ता के लिए एक सेट त्रिज्या के नक्शे पर एक वृत्त खींचने में सक्षम होना है। OpenLayers केवल प्लानर दूरियों का उपयोग करके हलकों को बनाने की अनुमति देता है, इसलिए जब कोई उपयोगकर्ता जियोडेसिक माप उपकरण के साथ सर्कल को मापता है तो मान मेल नहीं खाते हैं। सर्कल प्लानर त्रिज्या के नीचे की छवि 10 किमी है, लेकिन व्यास के लिए जियोडेसिक लाइन माप 12 किमी है।

स्पष्ट रूप से यह एक उपयोगकर्ता (और खुद को) आश्चर्यचकित करेगा जो सही है।

वैकल्पिक शब्द

इस उत्तर को देखते हुए ऐसा लगता है कि अधिकांश डेस्कटॉप जीआईएस सिस्टम इस मुद्दे को "अनदेखा" करते हैं, और प्लेनार माप और दूरी को लौटाते हैं। तो प्लानर और जियोडेसिक माप से निपटने के लिए उपयोगकर्ता इंटरफ़ेस और सटीकता के संदर्भ में सबसे अच्छा अभ्यास क्या है?

अपडेट करें

मुझे यह Google उदाहरण मिला, जो रेडी और मर्केटर प्रोजेक्शन के मुद्दे को दिखाता है:

http://maps.forum.nu/gm_sensitive_circle2.html

सर्कल आकर्षित करने के लिए जावास्क्रिप्ट कोड इस प्रकार है:

    var lat1 = (PI/180)* center.lat(); // radians
    var lng1 = (PI/180)* center.lng(); // radians

    for (var a = 0 ; a < 361 ; a++ ) {
        var tc = (PI/180)*a;
        var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
        var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
        var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
        var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
        circlePoints.push(point);
        bounds.extend(point);
    }

क्या यह चक्र पृथ्वी की वक्रता को ध्यान में रखता है?

अंतिम अद्यतन

वर्किंग कोड http://geographika.co.uk/creating-a-geodesic-circle-in-openlayers पर पोस्ट किया गया


1
यहाँ कुछ गलत होना चाहिए। अंतर सीधी रेखा और गोलाकार के बाद की रेखा के बीच इतनी कम दूरी पर 20% नहीं हो सकता है। किसी और को शामिल होना चाहिए
निकलस एवेन

4
प्रक्षेपण बहुत संभव है मर्केटर, जो केवल भूमध्य रेखा पर सही पैमाने पर होता है (आमतौर पर, यह वास्तव में संभव है कि मर्केटर के अनुमान कहीं और सच्चे पैमाने पर हों (एक अक्षांश पर), लेकिन अधिकांश वैश्विक पैरामीटर भूमध्य रेखा का उपयोग करते हैं)। और मर्केटर के लिए पैमाने की त्रुटियां वास्तव में बहुत अधिक हैं (अनंत, वास्तव में, ध्रुवों पर) जब आप सच्चे पैमाने पर अक्षांश से उत्तर / दक्षिण में बढ़ते हैं।
पॉल रेम्सी

माप 52 डिग्री उत्तर में लिया गया था, और वास्तव में मर्केटर प्रोजेक्शन में हैं। तो क्या इसका मतलब यह है कि मर्केटर में खींची गई कोई भी क्लाइंट-साइड सुविधाएँ बहुत गलत क्षेत्रों और लंबाई में वापस आ जाएंगी जब तक कि भूमध्य रेखा के पास नहीं?
जियोग्राफिका

1
हाँ, यह बहुत ज्यादा मामला है, डेटा को मीटर या पैरों में एक स्थानीय ग्रिड में प्रोजेक्ट करें और सब ठीक हो जाएगा।
इयान Turton

2
@Paul अच्छा फोन। लेकिन ये आंकड़े केवल संकेत देते हैं कि प्रक्षेपण बेलनाकार है, जिनमें से मर्केटर एक है। सच बेलनाकार अनुमानों में क्षैतिज विरूपण सेकंड (अक्षांश) के बराबर होता है। इस सूत्र के द्वारा २० / १२.१३ की विकृति ५२.६६ डिग्री के अक्षांश तक काम करती है; यह बिल्कुल लिमरिक का अक्षांश है।
whuber

जवाबों:


8

यदि आप ब्राउज़र में होम-ब्रूइंग कर रहे हैं, तो आप "सर्कल" प्राप्त कर सकते हैं (यह आपके प्रोजेक्शन के कारण स्क्रीन पर गोल नहीं होगा; बल्कि एक बहुभुज w / जैसा कि आप आकर्षित करने के लिए देखभाल करते हैं, उतने बिंदु) जियोडेसिक गणना का प्रत्यक्ष रूप: एक बिंदु, एक दिशा (अज़ीमुथ), और एक दूरी यह आपको परिणामी बिंदु देता है। Gory विवरण: http://en.wikipedia.org/wiki/Vincenty%27s_formulae#DirectMModod

ऐसा लगता है कि किसी ने पहले से ही जावास्क्रिप्ट का अनुवाद किया है: http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html । तुम भाग्यशाली हो!

चीजों को खत्म करने के लिए:

  • तय करें कि कैसे चंकी (# कोने की, इसे कॉल करें) आप अंतिम परिणाम के लिए तैयार हैं।
  • 360 डिग्री को एन टुकड़ों में विभाजित करें।
  • बहुभुज बनाएँ (I के लिए रेंज में (n): polygon.add (vincenty_direct (start_point, i * 360 / n, दूरी))
  • बाद में तथ्य, संभवतः कुछ प्रक्षेपण और planarisation irritations को ठीक करें:
    • यदि आप विशिष्ट वेब मानचित्र प्रक्षेपण का उपयोग कर रहे हैं, जो आप लगभग निश्चित रूप से कर रहे हैं, तो परिणामी बहुभुज को एक ध्रुव के पास लंबवत रूप से बढ़ाया जाएगा।
    • इसी तरह, यदि परिणाम बहुभुज अंतरराष्ट्रीय तिथि रेखा को पार करता है, तो यह वास्तव में बोर हो जाएगा।

चीयर्स!


1
विन्सेंटी विधि को पहले से ही ओपनलाइयर के नामस्थानों में जोड़ दिया गया है - dev.openlayers.org/apidocs/files/OpenLayers/… इसके साथ और आपकी व्याख्या, विशेष रूप से असर पैरामीटर, इस को साफ करें। धन्यवाद!
geographika

:) मुझे पता है कि कैसे 'परेशान' परेशान हैं। आदर्श रूप से फिक्सिंग-अप पहले से ही OpenLayers का हिस्सा होगा और यह सिर्फ काम करेगा, लेकिन मुझे यकीन नहीं है।
दान एस।

3

OpenLayers केवल प्लानर दूरियों का उपयोग करते हुए वृत्त बनाने की अनुमति देता है

एक जियोडेसिक सर्कल प्राप्त करने के लिए, आप ईएसआरआई की ज्यामिति सेवा में बफर ऑपरेशन का उपयोग कर सकते हैं ।

... यदि इकाई पैर या मीटर जैसे रैखिक है, तो जियोडेसिक बफरिंग किया जाता है

एक स्वतंत्र रूप से सुलभ एक यहाँ उपलब्ध है


उपयोगी लिंक के लिए धन्यवाद - मैं देखूंगा कि क्या मैं सेवा को कॉल कर सकता हूं और जावास्क्रिप्ट में सुविधा को अपडेट कर सकता हूं। मेरी एकमात्र चिंता एक वेब सेवा पर निर्भर होगी जो किसी भी समय बंद हो सकती है। मुझे लगता है कि जियोडेसिक बफर्ड बिंदु सटीक / वास्तविक 10 किमी सर्कल होगा?
जियोग्राफिका

सर्कल सटीक होना चाहिए, हालांकि, मैं आपके माप उपकरण का उपयोग करके इसकी जांच करूंगा। मुझे लगता है कि ज्यामिति सेवा एक मानक आर्कगिस सर्वर इंस्टॉलेशन का हिस्सा है, इसलिए यदि कोई सेवानिवृत्त हो जाता है तो वेब पर चुनने के लिए कई और होने चाहिए। google.com/…
Kirk Kuykendall
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.