2015-09-02 8 views
27

का उपयोग कर के बीच भू-स्थानिक दूरी की गणना करने के लिए मैं लंबे समय से, अक्षां प्रारूप में जियोकोड किए गए अंक है, और मुझे के बीच उन्हें आर का उपयोग कर यह सुंदर सीधे आगे लगता दूरी की गणना करना चाहते हैं, फिर भी मैं कर सकते हैं ' एक ऐसा फ़ंक्शन ढूंढें जो इसे आसानी से कर सके। मैं इसे gdistance पैकेज के साथ करने का प्रयास कर रहा हूं, लेकिन यह ग्राफिंग के लिए बहुत ही दृढ़ और उन्मुख लगता है, मुझे बस एक संख्या चाहिए। distanceBetween(pointA,pointB) की तरह कुछ जो एक संख्या देता है।समारोह दो अंक (अक्षां, लंबे समय से) आर

अद्यतन: यह सवाल आर के लिए विशिष्ट है, संभव dup अधिक सामान्य है। हालांकि एक आर विशिष्ट जवाब है, इसे 28 अन्य उत्तरों में दफनाया गया है।

+5

देखें 'spDistsN1()' 'sp' पैकेज में कार्य करते हैं। –

+0

धन्यवाद पास्कल ने काम किया! – SteveO7

+0

आप http://stackoverflow.com/a/23095329/2514568 पर जाप से जवाब देखा? –

उत्तर

37

भूमंडल पैकेज लोड हो रहा है आप विभिन्न कार्यों के एक नंबर

library(geosphere) 
distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine) 

भी उपयोग कर सकते हैं:

distHaversine() 
distMeeus() 
distRhumb() 
distVincentyEllipsoid() 
distVincentySphere() 

...

+0

ये सब भी उपयोगी दिखते हैं! उनके विवरण पढ़ना वे थोड़ा अलग गणना का उपयोग करते हैं। मैं पेड़ों के माध्यम से जंगल नहीं मिला! – SteveO7

+3

एक छोटा सा नोट। विधि geosphere: distm वेक्टरकृत नहीं है। वेक्टरेट करने के लिए * लागू * कार्यों का उपयोग करें। – DotPi

+0

@DotPi यह 'के लिए दस्तावेज में कहते हैं (संस्करण' 1.5-5') distm' है कि पहले दो तर्क 'हो सकता है Nx2' मैट्रिक्स (यानी। अंक के संग्रह), तो मैं' लागू के लिए की जरूरत नहीं दिख रहा है 'यहाँ? – oens

6

ऊपर जवाब पर @PereG के साथ सहमत हैं, लेकिन लगता है कि अक्षांश और देशांतर का क्रम दूसरा तरीका है: लोन, लैट। यह दूरी मैट्रिक्स के लिए आपके परिणामों को प्रभावित करेगा। तो सही है:

library(geosphere) 
distm (c(lon1, lat1), c(lon2, lat2), fun = distHaversine) 

स्रोत: ftp://cran.r-project.org/pub/R/web/packages/geosphere/geosphere.pdf

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