दिलचस्प पोस्ट
डेटा रीडर से डेटा टेबल को व्यवस्थित करें Java में रीसाइजिंग करते समय चित्रित सामग्री अदृश्य कैसे इस त्रुटि को रोकने के लिए: चेतावनी: mysql_fetch_assoc () पैरामीटर 1 संसाधन होने की उम्मीद है, बूलियन को दिया … लाइन 11 पर सी # निर्माता / उपभोक्ता क्या WPF में डेटा-टेम्पलेट उत्तराधिकार का उपयोग करने का कोई तरीका है? Django में कस्टम फ़ील्ड के साथ यूजर मॉडल का विस्तार गैर कोणीयोज़ वेबसाइट पर प्रोट्रेक्टर का उपयोग कैसे करें? Laravel 5: ब्लेड के साथ एचटीएमएल प्रदर्शित करें <कैनवास> तत्व का अधिकतम आकार रिक्त चेकबॉक्स के साथ एक HTML फ़ॉर्म सबमिट करें एंड्रॉइड कीबोर्ड के लिए एंड्रॉइड का पता लगाया गया कुंजी प्रेस स्वचालित रूप से वेबवॉल में फ़ील्ड भरें 'ट्रांसफॉर्म 3 डी' स्थिति के साथ काम नहीं कर रहा है: निश्चित बच्चों जांचें कि इनपुट jQuery के उपयोग से खाली हैं PHP में फ़ाइलों को अपलोड करते समय $ $ FILES रिक्त क्यों होंगे?

अक्षांश अक्षांश का उपयोग करते हुए दो बिंदुओं के बीच दूरी की गणना करना, मैं क्या कर रहा हूँ गलत?

मैं इस असाइनमेंट को हल करने की कोशिश कर रहा हूं और यह बहुत अधिक समय ले रहा है:

यहाँ मेरा प्रयास है, यह मेरे कोड का सिर्फ एक स्निपेट है:

final double RADIUS = 6371.01; double temp = Math.cos(Math.toRadians(latA)) * Math.cos(Math.toRadians(latB)) * Math.cos(Math.toRadians((latB) - (latA))) + Math.sin(Math.toRadians(latA)) * Math.sin(Math.toRadians(latB)); return temp * RADIUS * Math.PI / 180; 

अक्षांश और देशांतर प्राप्त करने के लिए मैं इस सूत्रों का उपयोग कर रहा हूं: x = डिग्री + (मिन + सेकंड / 60) / 60)

धन्यवाद

वेब के समाधान से एकत्रित समाधान "अक्षांश अक्षांश का उपयोग करते हुए दो बिंदुओं के बीच दूरी की गणना करना, मैं क्या कर रहा हूँ गलत?"

ऊपर Dommer द्वारा दिए गए जावा कोड थोड़ा गलत परिणाम देता है लेकिन छोटी त्रुटियां जोड़ती हैं यदि आप प्रोसेसिंग कर रहे हैं तो एक जीपीएस ट्रैक कहता है यहां जावा में हार्वेसिन पद्धति का कार्यान्वयन है जो दो अंकों के बीच खाता ऊँचाई के अंतर को भी लेता है।

 /** * Calculate distance between two points in latitude and longitude taking * into account height difference. If you are not interested in height * difference pass 0.0. Uses Haversine method as its base. * * lat1, lon1 Start point lat2, lon2 End point el1 Start altitude in meters * el2 End altitude in meters * @returns Distance in Meters */ public static double distance(double lat1, double lat2, double lon1, double lon2, double el1, double el2) { final int R = 6371; // Radius of the earth double latDistance = Math.toRadians(lat2 - lat1); double lonDistance = Math.toRadians(lon2 - lon1); double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double distance = R * c * 1000; // convert to meters double height = el1 - el2; distance = Math.pow(distance, 2) + Math.pow(height, 2); return Math.sqrt(distance); } 

यहां एक जावा फ़ंक्शन है जो दो अक्षांश / लंबी अंक के बीच की दूरी की गणना करता है ।

संपादित करें

मुझे कोड का एक अन्य संदर्भ मिला

और, नीचे पोस्ट किया गया, सिर्फ मामले में इसे फिर से गायब हो जाता है

  private double distance(double lat1, double lon1, double lat2, double lon2, char unit) { double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); dist = dist * 60 * 1.1515; if (unit == 'K') { dist = dist * 1.609344; } else if (unit == 'N') { dist = dist * 0.8684; } return (dist); } /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ /*:: This function converts decimal degrees to radians :*/ /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ private double deg2rad(double deg) { return (deg * Math.PI / 180.0); } /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ /*:: This function converts radians to decimal degrees :*/ /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ private double rad2deg(double rad) { return (rad * 180.0 / Math.PI); } System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, 'M') + " Miles\n"); System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, 'K') + " Kilometers\n"); System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, 'N') + " Nautical Miles\n"); 

नोट: यह समाधान केवल छोटी दूरी के लिए काम करता है

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

 public class FlatEarthDist { //returns distance in meters public static double distance(double lat1, double lng1, double lat2, double lng2){ double a = (lat1-lat2)*FlatEarthDist.distPerLat(lat1); double b = (lng1-lng2)*FlatEarthDist.distPerLng(lat1); return Math.sqrt(a*a+b*b); } private static double distPerLng(double lat){ return 0.0003121092*Math.pow(lat, 4) +0.0101182384*Math.pow(lat, 3) -17.2385140059*lat*lat +5.5485277537*lat+111301.967182595; } private static double distPerLat(double lat){ return -0.000000487305676*Math.pow(lat, 4) -0.0033668574*Math.pow(lat, 3) +0.4601181791*lat*lat -1.4558127346*lat+110579.25662316; } } 

विभिन्न गोलाकार गणनाओं के लिए जावास्क्रिप्ट उदाहरणों वाला यह पृष्ठ यहां है पृष्ठ पर सबसे पहले एक आपको चाहिए कि आपको क्या चाहिए।

http://www.movable-type.co.uk/scripts/latlong.html

यहां जावास्क्रिप्ट कोड है

 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; 

जहां 'घ' दूरी पकड़ करेगा

यह विकिपीडिया लेख सूत्रों और एक उदाहरण प्रदान करता है। पाठ जर्मन में है, लेकिन गणना स्वयं के लिए बोलती है।

 package distanceAlgorithm; public class CalDistance { public static void main(String[] args) { // TODO Auto-generated method stub CalDistance obj=new CalDistance(); /*obj.distance(38.898556, -77.037852, 38.897147, -77.043934);*/ System.out.println(obj.distance(38.898556, -77.037852, 38.897147, -77.043934, "M") + " Miles\n"); System.out.println(obj.distance(38.898556, -77.037852, 38.897147, -77.043934, "K") + " Kilometers\n"); System.out.println(obj.distance(32.9697, -96.80322, 29.46786, -98.53506, "N") + " Nautical Miles\n"); } public double distance(double lat1, double lon1, double lat2, double lon2, String sr) { double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); dist = dist * 60 * 1.1515; if (sr.equals("K")) { dist = dist * 1.609344; } else if (sr.equals("N")) { dist = dist * 0.8684; } return (dist); } public double deg2rad(double deg) { return (deg * Math.PI / 180.0); } public double rad2deg(double rad) { return (rad * 180.0 / Math.PI); } }