दिलचस्प पोस्ट
Android स्टूडियो में एक मॉड्यूल को कैसे हटाएं Javascript में JSON ऑब्जेक्ट की सरणी के लिए JSON स्ट्रिंग कन्वर्ट करें स्ट्रट्स 2 एप्लिकेशन में सत्र पायथन में निर्देशिकाओं को घुमावने के लिए os.walk () का प्रयोग करना सी # जेआईटी कंपाइलिंग और .नेट कोको एप्लिकेशन में इंटरनेट कनेक्शन की जांच करें त्रुटि: पैकेज javax.servlet मौजूद नहीं है फ्यूचर / फ़ैक्टर / एपटेक्टिव / मोनाद के अच्छे उदाहरण नहीं हैं? <main> तत्व इंटरनेट एक्सप्लोरर 11 में काम नहीं कर रहा है एंड्रॉइड – केवल शीर्ष पर गोलाकार कोनों के साथ चित्रकारी मैं Rails में database.yml फ़ाइल को कैसे स्थापित कर सकता हूं? jqGrid "th" और "thead" मिलकर jQuery का उपयोग कर रहा है Xcode निरंतर एकीकरण प्रावधान प्रोफ़ाइल त्रुटि स्विफ्ट में .लिस्ट फ़ाइल में डेटा सहेजें मैं VS2008 का उपयोग करते हुए एक ऐप्लिकेशन में एक एप्लिकेशन मैनिफ़ेस्ट को कैसे एम्बेड कर सकता हूं?

जीपीएस समन्वय से दूरी जोड़ना

मैं जीपीएस का उपयोग कर एक निश्चित बिंदु से यादृच्छिक दूरी पर कुछ बिंदुओं को उत्पन्न करने की कोशिश कर रहा हूं।

मैं जीपीएस समन्वय के लिए मीटर में दूरी कैसे जोड़ सकता हूं? मैंने यूटीएम को जीपीएस रूपांतरण पर देखा है लेकिन क्या यह हासिल करने के लिए एक सरल तरीका है?

मैं सिर्फ एंड्रॉइड प्लेटफ़ॉर्म पर काम कर रहा हूं।

चीयर्स, एफजीएस

Solutions Collecting From Web of "जीपीएस समन्वय से दूरी जोड़ना"

  • P0 (lat0, lon0): प्रारंभिक स्थिति (इकाई: डिग्री )
  • डीएक्स, डीआई: मीटर में अपनी प्रारंभिक स्थिति से यादृच्छिक ऑफसेट

आप यादृच्छिक स्थिति की स्थिति की गणना करने के लिए सन्निकटन का उपयोग कर सकते हैं:

lat = lat0 + (180/pi)*(dy/6378137) lon = lon0 + (180/pi)*(dx/6378137)/cos(lat0) 

यह काफी सटीक है जब तक यादृच्छिक दूरी ऑफसेट 10-100 किमी से कम है

संपादित करें: निश्चित रूप से जावा गणगैस () में रेडियन ने Math.cos(Math.PI/180.0*lat0) उपयोग करते हैं यदि lat0 ऊपर की ओर माना गया डिग्री है

एक वर्ग लेने के लिए मैं इसका उपयोग करता हूं:

  private double[] getBoundingBox(final double pLatitude, final double pLongitude, final int pDistanceInMeters) { final double[] boundingBox = new double[4]; final double latRadian = Math.toRadians(pLatitude); final double degLatKm = 110.574235; final double degLongKm = 110.572833 * Math.cos(latRadian); final double deltaLat = pDistanceInMeters / 1000.0 / degLatKm; final double deltaLong = pDistanceInMeters / 1000.0 / degLongKm; final double minLat = pLatitude - deltaLat; final double minLong = pLongitude - deltaLong; final double maxLat = pLatitude + deltaLat; final double maxLong = pLongitude + deltaLong; boundingBox[0] = minLat; boundingBox[1] = minLong; boundingBox[2] = maxLat; boundingBox[3] = maxLong; return boundingBox; } 

यह 4 निर्देशांकों के साथ एक सरणी देता है, उनके साथ आप केंद्र में अपने मूल बिंदु के साथ एक वर्ग बना सकते हैं।

एक विस्तृत रूपरेखा http://www.movable-type.co.uk/scripts/latlong.html पर दी गई है।

यदि आप, कहीं, यूटीएम निर्देशांक (जीपीएस में इस्तेमाल किए जाने वाले) के लिए अक्षांश / अक्षांश को एक दूसरे के बीच में बदलने की आवश्यकता है तो आप http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.htm पर एक नज़र रखना चाह सकते हैं

यदि आप पूर्व या उत्तर या पश्चिम या दक्षिण जाना चाहते हैं तो आप इसका उपयोग कर सकते हैं:

 @SuppressLint("DefaultLocale") public static double go_mock_loc(double xx_lat,double xx_long,double xx_dinstance,String Direction) { // double xx_lat= 45.815005; // double xx_long= 15.978501; // int xx_dinstance=500; int equator_circumference=6371000; int polar_circumference=6356800; double m_per_deg_long = 360 / polar_circumference; double rad_lat=(xx_lat* (Math.PI) / 180); double m_per_deg_lat = 360 / ( Math.cos(rad_lat) * equator_circumference); double deg_diff_long = xx_dinstance * m_per_deg_long; double deg_diff_lat = xx_dinstance * m_per_deg_lat; double xx_north_lat = xx_lat + deg_diff_long; //double xx_north_long= xx_long; double xx_south_lat = xx_lat - deg_diff_long; //double xx_south_long= xx_long; //double xx_east_lat = xx_lat; double xx_east_long= xx_long + deg_diff_lat; //double xx_west_lat = xx_lat; double xx_west_long= xx_long - deg_diff_lat; if (Direction.toUpperCase().contains("NORTH")) { return xx_north_lat; } else if (Direction.toUpperCase().contains("SOUTH")) { return xx_south_lat; } else if (Direction.toUpperCase().contains("EAST")) { return xx_east_long; } else if (Direction.toUpperCase().contains("WEST")) { return xx_west_long; } else return 0; } 

यह कोड n खंडों में दो निर्देशांक के बीच की रेखा को विभाजित करता है। अपने निश्चित दूरी से डेल्टा गणना को बदलें

  @Override public void split(Coordinates p1, Coordinates p2, int segments) { double φ1 = Math.toRadians(p1.getLat()); double λ1 = Math.toRadians(p1.getLon()); double φ2 = Math.toRadians(p2.getLat()); double λ2 = Math.toRadians(p2.getLon()); double xDelta = (φ2 - φ1) / segments; double yDelta = (λ2 - λ1) / segments; for (int i = 0; i < segments; i++){ double x = φ1 + i * xDelta; double y = λ1 + i * yDelta; double xc = Math.toDegrees(x); double yc = Math.toDegrees(y); System.out.println(xc+","+yc); } }