অক্ষাংশ বা দ্রাঘিমাংশকে মিটারে কীভাবে রূপান্তর করবেন?


127

যদি আমার স্ট্যান্ডার্ড এনএমইএ ফর্ম্যাটে অক্ষাংশ বা দ্রাঘিমাংশ পড়তে হয় তবে সেই পড়াটিকে মিটারে রূপান্তর করার কোনও সহজ উপায় / সূত্র আছে, যা আমি তখন জাভা (জে 9) এ প্রয়োগ করতে পারি?

সম্পাদনা: ঠিক আছে বলে মনে হচ্ছে আমি যা করতে চাই তা সহজেই সম্ভব নয় , তবে আমি যা করতে চাই তা হ'ল:

বলুন যে আমার কাছে বেশিরভাগ পথের পয়েন্ট রয়েছে এবং কোনও ব্যবহারকারীর একটি ল্যাট এবং লম্বা কি তাদের সাথে তুলনা করার কোনও সহজ উপায় আছে যখন ব্যবহারকারীকে বলা যেতে পারে যে তারা ওয়ে পয়েন্টের যুক্তিসঙ্গত কাছের দূরত্বে আছেন? আমি বুঝতে পারি যুক্তিসঙ্গত বিষয় কিন্তু এটি সহজেই সক্ষম-সক্ষম বা এখনও অতিরিক্ত গণিত-ওয়াই?



1
ল্যাট / লম্বা মিটারে রূপান্তর করার অর্থ কী? মিটার কোথা থেকে? আপনি কি পৃথিবীর উপরিভাগের সাথে অন্য স্থানাঙ্কের সাথে দূরত্ব গণনার কোনও উপায় অনুসন্ধান করছেন?
বাল্টিমার্ক

2
"ওয়ে পয়েন্ট" সংজ্ঞা দিন। "যুক্তিসঙ্গত" সংজ্ঞা দিন। আপনি কি সত্যই এটি জানতে চান: "অক্ষাংশ এবং দ্রাঘিমাংশের কারণে আপনি দুটি পয়েন্টের মধ্যকার দূরত্বটি কীভাবে গণনা করবেন?"
বাল্টিমার্ক

2
অক্ষাংশ এবং দ্রাঘিমাংশের জন্য এসকিউএল প্রশ্নগুলি করতে চাইলে আমি এই প্রশ্নটিতে হোঁচট খেয়েছি এবং নীচে কিছু জাভা কোড সহ এই দুর্দান্ত নিবন্ধটি পেয়েছি । এটি আপনার আগ্রহীও হতে পারে।
ক্রিস্টফ ভ্যান ল্যান্ডস্কুট

উত্তর:


173

এখানে একটি জাভাস্ক্রিপ্ট ফাংশন:

function measure(lat1, lon1, lat2, lon2){  // generally used geo measurement function
    var R = 6378.137; // Radius of earth in KM
    var dLat = lat2 * Math.PI / 180 - lat1 * Math.PI / 180;
    var dLon = lon2 * Math.PI / 180 - lon1 * Math.PI / 180;
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
    Math.sin(dLon/2) * Math.sin(dLon/2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    var d = R * c;
    return d * 1000; // meters
}

ব্যাখ্যা: https://en.wikedia.org/wiki/Haversine_forula

Haversine সূত্রটি দ্রাঘিমাংশ এবং দ্রাঘিমাংশকে প্রদত্ত গোলকের দুটি পয়েন্টের মধ্যে দুর্দান্ত বৃত্তের দূরত্ব নির্ধারণ করে।


2
যারা wgs এবং utm এর মধ্যে রূপান্তর করতে গ্রন্থাগারের সন্ধান করছেন তাদের জন্য: github.com/urbanetic/utm-converter
Aram Kocharyan

3
কেউ যদি উপরের কোডটিতে কিছু ব্যাখ্যামূলক মন্তব্য যোগ করতে পারে তবে সত্যই কৃতজ্ঞ হবে। আগাম ধন্যবাদ!
রবীন্দ্রনাথ আকিলা

পাওয়া এই যা এই মন্তব্যকারীকে একটি গ্রহণ হবে বলে মনে হচ্ছে। লিংকটি দূরত্ব গণনার উপর এই নিবন্ধের ভিত্তিতেও বলেছে । সুতরাং যে কোনও উত্তর না দেওয়া প্রশ্নগুলি মূল লিঙ্কে পাওয়া উচিত। :)
জোয়াকিম

আমি কীভাবে এই গণনায় উচ্চতা যুক্ত করব?
ডাঙ্গালগ

62

আপনি একটি সাধারণ সূত্রের সন্ধান করছেন, এটি সম্ভবত এটি করার সহজতম উপায়, ধরে নেওয়া এই যে পৃথিবীটি একটি গোলক যা 40075 কিলোমিটারের পরিধি নিয়ে।

অক্ষাংশের 1 of এর মিটার দৈর্ঘ্য = সর্বদা 111.32 কিমি

দ্রাঘিমাংশের 1 of মিটার দৈর্ঘ্য = 40075 কিমি * কোস (অক্ষাংশ) / 360


2
দ্রাঘিমাংশ সমীকরণ কীভাবে কাজ করে? 90 ডিগ্রি অক্ষাংশের সাহায্যে আপনি এটি 111 কিলোমিটারের নিকটে প্রদর্শিত হবে বলে আশা করছেন; তবে পরিবর্তে এটি 0 দেখায়; একইভাবে, এর নিকটবর্তী
রিস করুন

9
অক্ষাংশ নিরক্ষরেখায় 0 and এবং মেরুতে 90 is হয় (এবং বিপরীতে নয়)। নিরক্ষীয় অঞ্চলের জন্য সূত্রটি 40075 কিমি * কোস (0 °) / 360 = 111 কিমি দেয়। পোলের জন্য সূত্রটি 40075 * কোস (90 °) / 360 = 0 কিমি দেয়।
বেন

আমি মনে করি এই পদ্ধতিকে সহজ বলে বিশেষত প্রশ্নটি দুটি পয়েন্টের মধ্যে সঠিক দূরত্বের জন্য জিজ্ঞাসা করেনি, তবে তারা যদি "যুক্তিসঙ্গতভাবে যথেষ্ট কাছে" থাকে তবে এই সূত্রগুলির সাহায্যে আমরা সহজেই পরীক্ষা করে দেখি যে ব্যবহারকারীর পথ বিন্দুতে কোনও বর্গ কেন্দ্রের মধ্যে রয়েছে কিনা? । বৃত্তের চেয়ে স্কোয়ারের জন্য পরীক্ষা করা অনেক সহজ।
বেন

29

দুটি স্থানাঙ্কের মধ্যে সংক্ষিপ্ত দূরত্বের আনুমানিক জন্য আমি http://en.wikedia.org/wiki/Lat-lon থেকে সূত্রগুলি ব্যবহার করেছি :

m_per_deg_lat = 111132.954 - 559.822 * cos( 2 * latMid ) + 1.175 * cos( 4 * latMid);
m_per_deg_lon = 111132.954 * cos ( latMid );

নীচের কোডটিতে আমি উইকিপিডিয়া থেকে সূত্রের সাথে তাদের সম্পর্ক দেখানোর জন্য কাঁচা সংখ্যা রেখেছি।

double latMid, m_per_deg_lat, m_per_deg_lon, deltaLat, deltaLon,dist_m;

latMid = (Lat1+Lat2 )/2.0;  // or just use Lat1 for slightly less accurate estimate


m_per_deg_lat = 111132.954 - 559.822 * cos( 2.0 * latMid ) + 1.175 * cos( 4.0 * latMid);
m_per_deg_lon = (3.14159265359/180 ) * 6367449 * cos ( latMid );

deltaLat = fabs(Lat1 - Lat2);
deltaLon = fabs(Lon1 - Lon2);

dist_m = sqrt (  pow( deltaLat * m_per_deg_lat,2) + pow( deltaLon * m_per_deg_lon , 2) );

উইকিপিডিয়া এন্ট্রিতে বলা হয়েছে যে দূরত্বের ক্যালকগুলি দ্রাঘিমাংশে 100 কিলোমিটারের জন্য 0.6 মিটার এবং 100 কিলোমিটার অক্ষাংশের জন্য 1 সেন্টিমিটারের মধ্যে কিন্তু আমি এটি যাচাই করতে পারি নি কারণ সঠিকভাবে আমার ব্যবহারের জন্য এটি ঠিক আছে anywhere


3
নোট করুন যে 2017 সালে উইকিপিডিয়া পৃষ্ঠাতে অন্য একটি সূত্র রয়েছে (পরিশুদ্ধ মনে হয়)।
গর্কা ললোনা

3
হ্যাঁ, উইকিপিডিয়ায় সূত্রটি কিছুটা আলাদা, তবে মনে হয় যে অন্যান্য উইকিপিডিয়া সূত্রটি এই দুর্দান্ত এসও উত্তরের অনুরূপ ফলাফলের উপর ভিত্তি করে তৈরি হয়েছে , যেখানে কেউ আসলে গণনার মধ্য দিয়ে গেছে।
not2qubit

10

অক্ষাংশ এবং দ্রাঘিমাংশ পয়েন্টগুলি নির্দিষ্ট করে, দূরত্ব নয়, তাই আপনার প্রশ্নটি কিছুটা অযৌক্তিক। আপনি যদি দুটি (ল্যাট, দীর্ঘ) পয়েন্টের মধ্যে সবচেয়ে কম দূরত্ব সম্পর্কে জিজ্ঞাসা করছেন তবে দুর্দান্ত বৃত্তের দূরত্বগুলির এই উইকিপিডিয়া নিবন্ধটি দেখুন ।


9
তিনি রেফারেনশিয়াল রূপান্তর সম্পর্কে কথা বলছেন যাতে আপনার উত্তর বিন্দুতে আসে না (কোনও পাং উদ্দেশ্য নয়)
পাওলো

1
এবং জিপিএস অবস্থানের ডেটাম রূপান্তরের জন্য রূপান্তরের একটি গাইড রেফারেন্সের জন্য। www.microem.ru/pages/u_blox/tech/dataconvert/GPS.G1-X-00006.pdf
পাওলো নেভেস

2
তিনি জানতে চান মিটার প্রতি কত ডিগ্রি যাতে তিনি 2 পয়েন্টের মধ্যে দূরত্ব খুঁজে পেতে পারেন। লাইনের মধ্যে পড়ুন।
নামবিহীন

1
এবং আপনার উত্তরটি অনেক বেশি অযৌক্তিক
jerinho.com

7

এমন অনেক সরঞ্জাম রয়েছে যা এটিকে সহজ করে তুলবে। দেখুন Monjardin এর উত্তর কি জড়িত সে সম্পর্কে আরো বিস্তারিত জানার জন্য।

যাইহোক, এটি করা অগত্যা কঠিন নয়। দেখে মনে হচ্ছে আপনি জাভা ব্যবহার করছেন তাই আমি জিডিএল এর মতো কিছু অনুসন্ধান করার পরামর্শ দেব । এটি তাদের রুটিনগুলির জন্য জাভা র‍্যাপার সরবরাহ করে এবং ল্যাট / লন (ভৌগলিক স্থানাঙ্ক) থেকে ইউটিএম (প্রজেক্টেড কোঅর্ডিনেট সিস্টেম) বা অন্য কোনও যুক্তিসঙ্গত মানচিত্র প্রক্ষেপণে রূপান্তর করতে প্রয়োজনীয় সমস্ত সরঞ্জাম তাদের কাছে রয়েছে।

ইউটিএম দুর্দান্ত, কারণ এটি মিটার, এর সাথে কাজ করা খুব সহজ। তবে এটির একটি ভাল কাজ করার জন্য আপনার যথাযথ ইউটিএম জোন পাওয়া দরকার । ল্যাব / লম্বা জোড়ার জন্য উপযুক্ত জোনটি খুঁজতে গুগলিংয়ের মাধ্যমে কয়েকটি সহজ কোড পাওয়া যায়।


7

পৃথিবী একটি বিরক্তিকরভাবে অনিয়মিত পৃষ্ঠ, সুতরাং এটি সঠিকভাবে করার কোনও সহজ সূত্র নেই। আপনাকে পৃথিবীর আনুমানিক মডেলটির সাথে বাঁচতে হবে এবং এটিতে আপনার স্থানাঙ্কগুলি প্রজেক্ট করতে হবে। আমি সাধারণত যে মডেলটির জন্য এটি ব্যবহার করি তা হ'ল ডাব্লু জিএস 84 । জিপিএস ডিভাইসগুলি সাধারণত একই সমস্যাটি সমাধান করতে ব্যবহার করে।

NOAA এর কাছে এমন কিছু সফ্টওয়্যার রয়েছে যার সাহায্যে আপনি তাদের ওয়েবসাইটে এটি ডাউনলোড করতে পারেন ।


6

এখানে বিএইচ-এর ফাংশনের আর সংস্করণটি দেওয়া হয়েছে , কেবলমাত্র ক্ষেত্রে:

measure <- function(lon1,lat1,lon2,lat2) {
    R <- 6378.137                                # radius of earth in Km
    dLat <- (lat2-lat1)*pi/180
    dLon <- (lon2-lon1)*pi/180
    a <- sin((dLat/2))^2 + cos(lat1*pi/180)*cos(lat2*pi/180)*(sin(dLon/2))^2
    c <- 2 * atan2(sqrt(a), sqrt(1-a))
    d <- R * c
    return (d * 1000)                            # distance in meters
}

2

এক নটিক্যাল মাইল (1852 মিটার) এক হিসাবে সংজ্ঞায়িত করা হয় arcminute বিষুব রেখায় দ্রাঘিমাংশ। তবে আপনাকে কোনও মানচিত্র প্রক্ষেপণ ( ইউটিএমও দেখুন ) সংজ্ঞায়িত করতে হবে যাতে আপনি রূপান্তরটির জন্য সত্যিকার অর্থে কাজ করার জন্য কাজ করছেন।


1
না, নটিক্যাল মাইল আন্তর্জাতিক মানের (দ্বারা সংজ্ঞায়িত করা হয় বনাম en.wikipedia.org/wiki/Nautical_mile ) 1852m যাবে। পৃথিবীর মতো একটি গোলাকার পৃষ্ঠের উপরে একটি তোরণ পরিমাপের সাথে এর সম্পর্ক এখন historicalতিহাসিক এবং আনুমানিক উভয়ই।
উচ্চ পারফরম্যান্স মার্ক

2

এটি গণনা করার বেশ কয়েকটি উপায় রয়েছে। এঁরা সকলেই গোলাকার ত্রিকোণমিতির aproximations ব্যবহার করেন যেখানে ব্যাসার্ধ পৃথিবীর এক।

চেষ্টা http://www.movable-type.co.uk/scripts/latlong.html বিভিন্ন ভাষায় পদ্ধতি একটি বিট এবং কোড জন্য।


1
    'below is from
'http://www.zipcodeworld.com/samples/distance.vbnet.html
Public Function distance(ByVal lat1 As Double, ByVal lon1 As Double, _
                         ByVal lat2 As Double, ByVal lon2 As Double, _
                         Optional ByVal unit As Char = "M"c) As Double
    Dim theta As Double = lon1 - lon2
    Dim dist As Double = 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" Then
        dist = dist * 1.609344
    ElseIf unit = "N" Then
        dist = dist * 0.8684
    End If
    Return dist
End Function
Public Function Haversine(ByVal lat1 As Double, ByVal lon1 As Double, _
                         ByVal lat2 As Double, ByVal lon2 As Double, _
                         Optional ByVal unit As Char = "M"c) As Double
    Dim R As Double = 6371 'earth radius in km
    Dim dLat As Double
    Dim dLon As Double
    Dim a As Double
    Dim c As Double
    Dim d As Double
    dLat = deg2rad(lat2 - lat1)
    dLon = deg2rad((lon2 - lon1))
    a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(deg2rad(lat1)) * _
            Math.Cos(deg2rad(lat2)) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2)
    c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a))
    d = R * c
    Select Case unit.ToString.ToUpper
        Case "M"c
            d = d * 0.62137119
        Case "N"c
            d = d * 0.5399568
    End Select
    Return d
End Function
Private Function deg2rad(ByVal deg As Double) As Double
    Return (deg * Math.PI / 180.0)
End Function
Private Function rad2deg(ByVal rad As Double) As Double
    Return rad / Math.PI * 180.0
End Function

দেখতে পাচ্ছি লিঙ্কটি ভরে গেছে।
tshepang

1

এক্স এবং ওয়াই উপস্থাপনে অক্ষাংশ এবং দ্রাঘিমাংশ রূপান্তর করতে আপনাকে কোন ধরণের মানচিত্রের অভিক্ষেপ ব্যবহার করতে হবে তা সিদ্ধান্ত নিতে হবে। আমার হিসাবে, উপবৃত্তাকার মার্কেটর খুব ভাল মনে হয়। এখানে আপনি একটি বাস্তবায়ন খুঁজে পেতে পারেন (জাভাতেও)।


0

যদি এটির পর্যাপ্ত পরিমাণ থাকে তবে আপনি ফ্ল্যাট বিমানে স্থানাঙ্ক হিসাবে তাদের চিকিত্সা করে পালিয়ে যেতে পারেন। এটি বলার উপর ভিত্তিতে, রাস্তায় বা শহর পর্যায়ে কাজ করে যদি নিখুঁত নির্ভুলতা প্রয়োজন না হয় এবং আপনার প্রয়োজন সমস্ত একটি স্বেচ্ছাসেবী সীমা সঙ্গে তুলনা করতে জড়িত দূরত্ব সম্পর্কে মোটামুটি অনুমান।


3
না, কাজ করে না! অক্ষাংশের বিভিন্ন মানের জন্য মিটার এক্স দূরত্ব আলাদা। নিরক্ষীয় অঞ্চলে আপনি এটির সাথে দূরে সরে যেতে পারেন, তবে খুঁটিগুলির কাছাকাছি গেলে আপনার উপবৃত্তাকারগুলি আরও বেশি পরিমাণে পাবেন।
রিকিআ

3
আপনার মন্তব্যটি যুক্তিসঙ্গত হলেও এটি ল্যাট / এলএনজি ডিগ্রি পার্থক্যটি মিটারে রূপান্তর সম্পর্কে ব্যবহারকারীর প্রশ্নের উত্তর দেয় না।
জীবনআমারা

0

পৃথিবীতে হ্রাসের গড় দূরত্বের ভিত্তিতে।

1 ° = 111 কিমি;

এটি রেডিয়ানদের জন্য রূপান্তর করা এবং মিটারের জন্য বিভাজন করা, মিটারে আরএডের জন্য একটি যাদু নম্বর নিন: 0.000008998719243599958;

তারপর:

const RAD = 0.000008998719243599958;
Math.sqrt(Math.pow(lat1 - lat2, 2) + Math.pow(long1 - long2, 2)) / RAD;

3
অবশেষে, একটি সরল উত্তর :)
বেন হাচিসন

অক্ষাংশ -179 এবং অন্যটি 179 হয়, x দূরত্ব 358 এর পরিবর্তে 2 ডিগ্রি হওয়া উচিত
ওএমজিপিওপ

7
এই উত্তরটি ব্যবহার করবেন না (কোনও কারণে এটি upvated)। দ্রাঘিমাংশ এবং দূরত্বের মধ্যে একটিও স্কেলিং নেই; পৃথিবী সমতল নয়।
সিপিবিএল

1
আমি বিশ্বাস করি এটি 111.1
আবেল কল্লেজো

6
দ্রষ্টব্য যে দ্রাঘিমাংশের এক ডিগ্রি দ্রাঘিমাংশ 111 কিলোমিটার তবে অন্যান্য অক্ষাংশের জন্য কম। দ্রাঘিমাংশের ক্রিয়াকলাপে 1 long দ্রাঘিমাংশের কিমিটির দৈর্ঘ্য: দ্রাঘিমাংশের 1 400 = 40000 কিমি * কোস (অক্ষাংশ) / 360 (এবং অবশ্যই এটি অক্ষাংশ = 90 11 এর জন্য 111 কিমি দেয়) সন্ধান করার জন্য একটি সাধারণ আনুমানিক সূত্র রয়েছে। এছাড়াও মন্তব্য করুন যে 1 itude দ্রাঘিমাংশ প্রায় সর্বদা অক্ষাংশের 1 than এর থেকে আলাদা দূরত্ব হয়।
বেন

-1

আপনি যদি একটি সহজ সমাধান চান তবে অন্যান্য মন্তব্যগুলির দ্বারা বর্ণিত হিসাবে হ্যাভারসাইন সূত্রটি ব্যবহার করুন । যদি আপনার কাছে নির্ভুলতার সংবেদনশীল অ্যাপ্লিকেশন থাকে তবে মনে রাখবেন হাভারসাইন সূত্রটি নির্ভুলতার গ্যারান্টি দেয় না তবে 0.5% কারণ এটি পৃথিবীকে একটি গোলক বলে ধরে নিচ্ছে। ভিনসেন্টির সূত্রগুলি ব্যবহার করে বিবেচনা করুন যে পৃথিবী একটি অপ্রচলিত গোলাকার । অতিরিক্তভাবে, হাওরসাইন সূত্রের সাথে আমাদের কোন ব্যাসার্ধ ব্যবহার করা উচিত তা আমি নিশ্চিত নই: ator নিরক্ষীয়: 6,378.137 কিমি, মেরু: 6,356.752 কিমি, ভলিউমেট্রিক: 6,371.0088 কিমি}}


it is assuming the earth is a circle^^ কিছু আজব লোক আজকাল এটি করে ... তবে আপনার অর্থ সম্ভবত it is assuming the earth is a sphere
এটির

-2

গোলাকার জ্যামিতি করতে আপনাকে স্থানাঙ্কগুলি রেডিয়ানে রূপান্তর করতে হবে। একবার রূপান্তরিত হয়ে গেলে আপনি দুটি পয়েন্টের মধ্যে একটি দূরত্ব গণনা করতে পারেন। তারপরে দূরত্বটি আপনি যে কোনও পরিমাপে রূপান্তর করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.