জিওডাঙ্গাগো ব্যবহার করে 2 পয়েন্টের মধ্যে দূরত্ব পাচ্ছেন? [বন্ধ]


11

আমার কাছে জিপিএস কর্ড দ্বারা সংজ্ঞায়িত 2 টি অবস্থান রয়েছে, গুগল মানচিত্র দ্বারা ল্যাট / লম্বা লাইক:

http://gmaps-samples.googlecode.com/svn/trunk/geocoder/singlegeocode.html

আমি তাদের মধ্যে দূরত্ব গণনা করা প্রয়োজন। আমি জানি যে আমি গুগল এপিআই ব্যবহার করতে পারি তবে আমি বাল্ক ক্যোয়ারীগুলি প্রসেস করব তাই আমি এটি নিজের সার্ভারে না করে বরং করব।

আমি ডক্সের সাথে কয়েক ঘন্টা ব্যয় করেছি, জিওডজ্যাঙ্গো ঠিক আছে ইনস্টল করেছি, তবে এর কোনও উদাহরণ আমি খুঁজে পাচ্ছি না। সাহিত্যের প্রতিটি জিনিস আমার প্রয়োজনের চেয়ে জটিল।

উত্তর:


9

উত্তরটি এই গুগল গ্রুপগুলির থ্রেডে রয়েছে বলে মনে হচ্ছে :

from django.contrib.gis.geos import GEOSGeometry
pnt = GEOSGeometry('SRID=4326;POINT(40.396764 -3.68042)')
pnt2 = GEOSGeometry('SRID=4326;POINT( 48.835797 2.329102  )')
pnt.distance(pnt2) * 100

3
মনে রাখবেন যে POINT () POINT (XY) রূপ নেয়। আপনি সম্ভবত মাদ্রিদের জন্য একটি উদাহরণ দেওয়ার চেষ্টা করছিলেন, তবে আপনি যে পয়েন্টগুলি ব্যবহার করেন তা হ'ল যথাক্রমে ভারত মহাসাগর এবং কেনিয়ার।

6
এর উদ্দেশ্য কী * 100?
ক্রিশ্চিয়ান সিউপিতু

4
আপনি কি পয়েন্টগুলি মিটারে প্রক্ষেপণে রূপান্তর করবেন না? আপনি যদি তা জানেন তবে ভাল নির্ভুলতার জন্য ইউটিএম জোনটি ব্যবহার করুন। >>> pnt.transfor (900913) >>> pnt2.transfor (900913) >>> pnt.distance (pnt2) 1153485.9216961625
মনকুট

দেখে মনে Pointহচ্ছে অব্যবহৃত
ওলেগ বেলোসোভ

1
এই উত্তরটি ব্যবহার করবেন না। দূরত্ব ফাংশনটি কোনও রূপে এসআরআইডিকে সম্মান করে না এবং কেবল একটি 2 ডি প্লেনে দূরত্ব দেয়।
জোনাথন রিচার্ডস


2

আপনি পয়েন্ট ব্যবহার করতে পারেন।

from django.contrib.gis.geos import Point
p1 = Point(37.2676483,-6.9273579)
p2 = Point(37.2653293,-6.9249401)
distance = p1.distance(p2)
distance_in_km = distance * 100

1
এই উত্তরটি ব্যবহার করবেন না। দূরত্ব ফাংশনটি কোনও রূপে এসআরআইডিকে সম্মান করে না এবং কেবল একটি 2 ডি প্লেনে দূরত্ব দেয়।
জোনাথন রিচার্ডস

1

আপনি যে ফলাফলটি চান তা পেতে আপনি সোভেন মার্নাচের পাইথন কোডটিও ব্যবহার করতে পারেন। আমি মিটারে ফলাফল পাওয়ার জন্য কোডের একটি লাইন যুক্ত করেছি ।

কোড:

from math import sin, cos, radians, degrees, acos

def calc_dist(lat_a, long_a, lat_b, long_b):
    lat_a = radians(lat_a)
    lat_b = radians(lat_b)
    long_diff = radians(long_a - long_b)
    distance = (sin(lat_a) * sin(lat_b) +
                cos(lat_a) * cos(lat_b) * cos(long_diff))
    resToMile = degrees(acos(distance)) * 69.09
    resToMt = resToMile / 0.00062137119223733
    return resToMt

0

আপনি যদি এমন কোনও উত্তর চান যা কোনও জিওডজ্যাঙ্গো গ্রন্থাগার বা ফাংশন ব্যবহার করে না। ট্যাগ সহ কিছু প্রশ্ন এবং উত্তর সন্ধান করুন । তারা আপনাকে এমন সূত্র দেয় যা কোনও ভাষা বা কাঠামোর সাথে কাজ করবে। এ জাতীয় একটি প্রশ্ন হ'ল জিপিএস স্থানাঙ্কগুলির মধ্যে দূরত্ব


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

0

জাঙ্গো এবং জিওপির সাহায্যে একবারে আমি যে সমাধানটি দেখেছি তা আমার পছন্দ হয়েছে। যাইহোক, আমি মাত্র দুটি পয়েন্টের বেশি প্রবেশের স্বাধীনতা পেতে কোডটি কিছুটা পরিবর্তন করেছি।

from django.contrib.gis.geos import Point
from geopy.distance import distance as geopy_distance
from itertools import tee, izip


def pairwise(iterable):
    a, b= tee(iterable)
    next(b, None)
    return izip(a,b)

chicago = Point(41.50, 87.37)
san_francisco = Point(37.47, 122.26)
st_louis = Point(38.62, 90.19)
washington = Point(38.53, 77.02)

points = (washington, st_louis, chicago, san_francisco)

d = sum(geopy_distance(a,b).meters for (a,b) in pairwise(points))

distance_km = d/1000
distance_miles = distance_km*0.621371

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