2010-11-05 13 views
12

मैं एक सामान्य मर्केटर मानचित्र के साथ ओपनलेयर का उपयोग कर रहा हूं और मैं लैट्लोंग में बिंदुओं के ग्रिड को ढूंढकर एक बाउंडिंग बॉक्स का नमूना देने की कोशिश कर रहा हूं। बॉक्स को लैटलॉन में व्यक्त किया गया है, उदा।डिग्री से मीटर तक दूरी को कैसे परिवर्तित करें?

48.1388,-15.3616,55.2057,-3.9359 

मैं डिग्री में एक दूरी परिभाषित कर सकते हैं (उदाहरण के लिए एक्स: 2.5, वाई: 2.4) और वहाँ से अंक बाहर काम करते हैं। लेकिन मैं इस दूरी को मीटर (उदाहरण के लिए 50000) में उपयोगकर्ता मानसिकता से संबंधित करने के लिए व्यक्त करना चाहता हूं (लोग मीटर को समझते हैं, डिग्री नहीं)। मैं इस दूरी को कैसे परिवर्तित कर सकता हूं? मुझे पता है कि एक बिंदु को कैसे दोबारा डालना है, लेकिन दूरी नहीं।

किसी भी संकेत के लिए धन्यवाद! उत्तर Mulone

उत्तर

13

haversine formula का उपयोग अक्षांश/दो बिंदुओं के बीच की दूरी के लिए करने के लिए करें। यह मानता है कि पृथ्वी एक गोलाकार है (जो ज्यादातर मामलों के लिए, "पर्याप्त अच्छा" है)। इसके बारे में

एक Javascript क्रियान्वयन (बेशर्म here से चोरी हो) इस तरह दिखता है:

var R = 6371; // km 
var dLat = (lat2-lat1).toRad(); 
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
     Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
     Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c; 
+1

हावरसिन विभिन्न अक्षांशों के लिए काम करता है लेकिन ओपी के अनुरोध के विपरीत है। ओपी डिग्री अक्षांश और देशांतर के लिए रैखिक (मीटर) दूरी को मैप करना चाहता है। – winwaed

5

एक अक्षांश के मिनट के लिए दक्षिण = 1 नॉटिकल मील = 6075 फीट तो एक डिग्री = 60 मिनट = 60 * 6075 फीट वहाँ 3.28 फीट एक मीटर में हैं ताकि एक डिग्री = 60 * 6075/3.28 मीटर = 111,128 मीटर

वैकल्पिक रूप से, अक्षांश = 1,852 मीटर की एक मिनट तो एक डिग्री = 60 * 1852 मीटर = 111,120 मीटर

मुझे यकीन है कि जो अधिक सटीक है नहीं कर रहा हूँ ...

फो रे रेखांश की एक डिग्री, वही काम करें, लेकिन कोसाइन (अक्षांश) द्वारा गुणा करें क्योंकि जब आप उत्तर स्थानांतरित करते हैं तो रेखांश रेखाएं एक साथ मिलती हैं।

0

डिग्री और मीटर के बीच परिवर्तन पृथ्वी की सतह में भिन्न होता है।

एक गोलाकार पृथ्वी मानते हुए, डिग्री अक्षांश = दूरी * 360/(2 * पीआई * 6400000)

ध्यान दें कि देशांतर अक्षांश के अनुसार अलग अलग होंगे:

डिग्री देशांतर = दूरी * 360 */(2 * पीआई * कॉस (अक्षांश))

उपर्युक्त पृथ्वी की सतह के लिए है, और मर्केटर प्रक्षेपण का उपयोग नहीं करता है। यदि आप अनुमानित रैखिक दूरी के साथ काम करना चाहते हैं, तो आपको मर्केटर प्रोजेक्शन का उपयोग करने की आवश्यकता होगी।

+0

और जब जावास्क्रिप्ट में अलग नक्शा अनुमानों के साथ काम करने में अधिक सामान्य मामले के लिए, खुला स्रोत Proj4js पुस्तकालय का उपयोग करें। - जिसे ओपनलेयर द्वारा भी उपयोग किया जाता है। – winwaed

संबंधित मुद्दे