2016-04-09 3 views
0

私は2つの緯度と経度のペアを持っているとしましょう。 (例えば、(10.786377,106.700292)、(10.787126,106.725805))。私はこれらが2.789  km離れていることを知っています。2つのエリキシルGeo.Pointの場所でメートルでst_distanceクエリを作成するにはどうすればよいですか?

Iはradius単位はメートルされていないと機能

def within(latitude, longitude, radius) do 
    point2 = %Geo.Point{coordinates: {latitude, longitude}} 
    query = from post in Post, where: st_distance(post.location, ^point2) < ^radius, select: post 
    Repo.all(query) 
    end 

を有します。単位あたり約〜109.26  キロはここに

Post.within(10.786377, 106.700292, 0.025523999) 

:我々の2つのオリジナルのポイントで

が、これは私が他の点が含まれるように得ることができる最小の距離です。 106.700292経度で1度は既知の2.789  kmの差に近い111601  m x 0.025523999 = 2,848  mである。

メートルに基づいてクエリを行う方法はありますか?指定された緯度で度を計算する方法はありますか?

+0

'%Geo.Point {座標:{緯度、経度}}'は '%Geo.Point {座標:{経度、緯度}}' –

答えて

2

それを実演しました。

移行でマイタイプとして:geometryを使用していました。あなたは使用する必要があります:geography

関連する問題