2010-04-19 15 views
7

सुप्रभात में किलोमीटर जोड़ें।एक मानचित्र बिंदु

मैं जानना चाहता हूं कि मैं मानचित्र बिंदु (अक्षांश/देशांतर) में किलोमीटर कैसे जोड़ूं।

उदाहरण के लिए: शहर जारागुआ डो सुल अक्षांश -26.462049, देशांतर -49.059448 में है। मैं 100 किलोमीटर ऊपर, नीचे, और किनारों पर जोड़ना चाहता हूं। मैं एक वर्ग करना चाहता हूं और नए अंक प्राप्त करना चाहता हूं।

मैं यह कैसे कर सकता हूं?

मैं इसे करने की कोशिश:

<?php 
$distance = 100; 
$earthRadius = 6371; 
$lat1 = -26.4853239150483; 
$lon1 = -49.075927734375; 
$bearing = 0; 

$lat2 = asin(sin($lat1) * cos($distance/$earthRadius) + cos($lat1) * sin($distance/$earthRadius) * cos($bearing)); 
$lon2 = $lon1 + atan2(sin($bearing) * sin($distance/$earthRadius) * cos($lat1), cos($distance/$earthRadius) - sin($lat1) * sin($lat2)); 

echo 'LAT: ' . $lat2 . '<br >'; 
echo 'LNG: ' . $lon2; 
?> 

लेकिन यह गलत cordinates लौटा रहा है। धन्यवाद!

बहुत बहुत धन्यवाद।

+0

2 उत्तर अब तक सामान्य दृष्टिकोण हैं। लेकिन यदि परिशुद्धता महत्वपूर्ण नहीं है, और यदि ब्याज का भौगोलिक क्षेत्र सीमित है - विशेष रूप से, अक्षांश के एक संकीर्ण बैंड के भीतर - तो आप इन कार्यों को झुका सकते हैं। मैं "बैंड कितना चौड़ा" और "कितना अपरिपक्वता" का ब्योरा प्रदान नहीं कर पाऊंगा। फिर, यदि भौगोलिक क्षेत्र सीमित है, तो आप केवल एक लुक-अप तालिका बना सकते हैं :-) – Smandoli

+0

यदि आप अपने ऐप, अंतिम लक्ष्यों या कार्य करने वाले टूल के बारे में अधिक निर्दिष्ट करते हैं, तो आपको किसी विशिष्ट समाधान (उदाहरण के लिए, आईफोन के लिए कोरलोकेशन) – Smandoli

+2

मैं एक PHP अनुप्रयोग बना रहा हूं और मेरे पास मेरे राज्य (सांता कैटरीना) के हर शहर के साथ डेटाबेस टेबल (शहरों) है। इस तालिका में, मेरे अक्षांश/देशांतर क्षेत्र हैं। उपयोगकर्ता शहर में प्रवेश करता है और मुझे उसके पास उद्यम खोजने के लिए 100 किमी का काल्पनिक वर्ग बनाने की आवश्यकता है। मेरी अंग्रेजी के बारे में क्षमा करें और जानकारी की कमी के बारे में खेद है। धन्यवाद दोस्तों! – proveyourselfthom

उत्तर

1

अद्यतन:

पीएचपी त्रिकोणमितीय कार्यों रेडियंस Paramters, डिग्री नहीं के रूप में है, तो आप एक पैरामीटर के रूप deg2rad() उपयोग की आवश्यकता है:

sin(deg2rad($lat)) 

http://www.php.net/manual/en/function.deg2rad.php


मूल जवाब:

एक बड़ा विषय वास्तव में।

आपकी आवश्यक परिशुद्धता (और दूरी को कवर) के आधार पर, आपको यह ध्यान रखना होगा कि पृथ्वी एक आदर्श क्षेत्र नहीं है, बल्कि एक भूगर्भ (एक चपटा हुआ एलीप्सोइड) है।

http://en.wikipedia.org/wiki/Earth_radius

आप इस पर शुरू हो जाएगा।

मानचित्रण और प्रक्षेपण दो विषयों,

दूरी

http://en.wikipedia.org/wiki/Geographical_distance

+1

यह ग्रह कहां है और आप यहां कैसे पहुंचे? –

+0

यदि आप उन्हें पाते हैं तो बस एक और 200 प्रतिष्ठा प्राप्त करें और टाइपो संपादित करें;) – sum1stolemyname

0

अपनी नई जानकारी के आधार पर के विषय पर विकिपीडिया से एक और लिंक कर रहे हैं आप पर एक नज़र रखना चाहिए भी, मैं दो विकल्प है दृष्टिकोण। (1) Google "PHP जीआईएस"। आपको कुछ दिलचस्प संसाधन मिलेंगे। शायद एक काम करेगा। (2) यदि आपके उद्यमों को अक्षांश द्वारा पहचाना जाता है, तो आपको (1) मुझे लगता है कि उपयोग करना होगा। लेकिन क्या वहां एक "डम्बर" दृष्टिकोण है? उदाहरण के लिए, यदि प्रत्येक उद्यम किसी शहर से जुड़ा हुआ है, तो शहरों की पहचान के लिए सरल मानचित्र निर्देशांक ("K16") का उपयोग करें। या थोड़ा सा समझदार कोड-वार, लेकिन यह विचार है।

7

जैसा कि पहले से ही बताया गया था। PHP त्रिकोणमितीय कार्य रेडियंस को पैरामीटर के रूप में लेते हैं।

पैरामीटर के रेडियन रूपांतरणों के लिए

डिग्री चाल करेगा।आप शायद परिणाम में डिग्री चाहते हैं, इसलिए वापस परिवर्तित करने के लिए rad2deg का उपयोग करें:

<?php 
$distance = 100; 
$earthRadius = 6371; 
$lat1 = deg2rad(-26.4853239150483); 
$lon1 = deg2rad(-49.075927734375); 
$bearing = deg2rad(0); 

$lat2 = asin(sin($lat1) * cos($distance/$earthRadius) + cos($lat1) * sin($distance/$earthRadius) * cos($bearing)); 
$lon2 = $lon1 + atan2(sin($bearing) * sin($distance/$earthRadius) * cos($lat1), cos($distance/$earthRadius) - sin($lat1) * sin($lat2)); 

echo 'LAT: ' . rad2deg($lat2) . '<br >'; 
echo 'LNG: ' . rad2deg($lon2); 
?> 
संबंधित मुद्दे