2011-12-21 16 views
9

अपने प्रोजेक्ट में मैं खोजने के लिए से देशांतर अक्षांश [अक्षांश, देशांतर] (रों) एक बिंदु से 500 मीटर की दूरी में यह किसी भी यादृच्छिक समन्वय हो सकता है समन्वय (या मेरे बिंदु के आसपास निर्देशांक की एक सरणी)। मैं यह कैसे कर सकता हूँ?परिवर्तित मीटर किसी भी बिंदु

नोट: मुझे Google मानचित्र दिशा-निर्देशों के माध्यम से हमें वापस आने वाले सबसे छोटे से अलग बिंदुओं के बीच कई पथ खोजने के लिए इसकी आवश्यकता है। इसलिए मेरी विधि का उपयोग करके मैं सड़क से केंद्र को ए से बी तक परिभाषित कर दूंगा और फिर उस केंद्र की स्थिति के नीचे और ऊपर कुछ निर्देशांक पाएं और इसे ए से बी में जाने के लिए एक और तरीका के रूप में उपयोग करें - मुझे लगता है कि यह मुझे कई पथ खोजने में मदद कर सकता है ...

जीआईएस पेशेवरों से कोई सुझाव?

संपादित करें: UTM रूपांतरण इस तरह की गणना के लिए सबसे बेहतर है, और मैं UTM जावा वर्ग बना चुके हैं तो किसी को भी जरूरत है ..

उत्तर

5

अगर मैं अपने प्रश्न समझ में सही आप अक्षांश/देशांतर में एक ज्ञात बिंदु और आपको अपने शुरुआती बिंदु से 500 मीटर दूर किसी अन्य बिंदु के लेट/लांग की गणना करने की आवश्यकता है।

यदि यह आप क्या कर रहे हैं, तो आप कई विकल्प हैं जिनमें से ज्यादातर विशेषज्ञ जीआईएस एपीआई शामिल है। हालांकि, मुझे लगता है कि आप एक भूगोलकार के बजाय प्रोग्रामर/गणितज्ञ हैं, इसलिए आप हावरसिन फॉर्मूला का उपयोग करने का विकल्प चुन सकते हैं। आप इस विषय पर here प्लस फॉर्मूला पर एक चर्चा पा सकते हैं।

एक चेतावनी है कि distamce आप के साथ काम कर रहे हैं (500 मी काफी छोटा होता है) है और पृथ्वी एक आदर्श क्षेत्र जा रहा है या यहां तक ​​कि एक से थोड़ा उपगोल चपटा से दूर है। यह स्थानीय रूप से "गड़बड़" है और यह आपकी गणना को बाहर रख सकता है। यदि आपको अधिक सटीकता की आवश्यकता है तो आपको उचित स्थानीय डाटाम (पृथ्वी का मॉडल - कई उदाहरण हैं EPSG list देखें) और ऐसा करने के लिए आपको शायद जीआईएस पुस्तकालयों का उपयोग शुरू करने की आवश्यकता होगी क्योंकि गणित प्राप्त होता है अन्यथा बहुत विस्तृत।

+0

एक अच्छा तरीका की तरह लग रहा .. के लिए पता है कि मैं, ताकि उचित निर्देशांक खोजने के लिए एक ही बात [अक्षां, लंबे] और इसके विपरीत गणना विधि के लिए यूटीएम का उपयोग कर कोशिश कर रहा हूँ और अक्षांश देशांतर गणना के दौरान। मुझे लगता है कि यह विधि भी आपके साथ समान है लेकिन केवल सूत्र अलग हैं, लेकिन मैंने पढ़ा है कि यूटीएम फॉर्मूला स्थान को सेंटीमीटर में बिल्कुल परिवर्तित कर सकते हैं ... बीटीडब्ल्यू आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! –

+2

यूटीएम पहले से ही पृथ्वी की सतह के स्थानीय विरूपण के लिए जिम्मेदार है, जिससे पृथ्वी को बड़ी संख्या में जोनों में विभाजित किया जा सकता है, प्रत्येक अपने स्वयं के डाटाम के साथ। यही कारण है कि, डब्लूजीएस की तुलना में यह अधिक सटीक है, जो पूरे पृथ्वी के लिए एक प्रक्षेपण का उपयोग करता है। यदि आपको कार्टेशियन निर्देशांक में कनवर्ट करने के लिए टूल की आवश्यकता है - गणित के बारे में चिंता किए बिना अपने बिंदुओं की गणना करें और लेट/लांग में वापस कनवर्ट करें, जीडीएएल/ओजीआर (और विशेष रूप से ओएसआर - जो स्पासिक रेफरेंसिंग एपीआई है) देखें – MappaGnosis

0

यह गूगल मानचित्र (SphericalUtil.java)

// from SphericalUtil.java 
    // compile 'com.google.maps.android:android-maps-utils:0.4.4' 
    public static LatLng computeOffset(LatLng from, double distance, double heading) { 
    distance /= 6371009.0D; //earth_radius = 6371009 # in meters 
    heading = Math.toRadians(heading); 
    double fromLat = Math.toRadians(from.latitude); 
    double fromLng = Math.toRadians(from.longitude); 
    double cosDistance = Math.cos(distance); 
    double sinDistance = Math.sin(distance); 
    double sinFromLat = Math.sin(fromLat); 
    double cosFromLat = Math.cos(fromLat); 
    double sinLat = cosDistance * sinFromLat + sinDistance * cosFromLat * Math.cos(heading); 
    double dLng = Math.atan2(sinDistance * cosFromLat * Math.sin(heading), cosDistance - sinFromLat * sinLat); 
    return new LatLng(Math.toDegrees(Math.asin(sinLat)), Math.toDegrees(fromLng + dLng)); 
} 

इसका इस्तेमाल करने के द्वारा प्रयोग किया जाता कोड है, तो आप सिर्फ centerLatLng मीटर में दूरी, और centerLatLng से डिग्री में शीर्षक दर्ज करना होगा।

आप फॉर्मूला को अपनी वरीयता की भाषा में बदल सकते हैं।

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