3
是否Django的有什麼事情是看一個地理座標(十進制經/緯),並確定是否具有一定半徑的圓內(比方說100公里)?Django的 - 確定地理座標是一個圓圈內
我有一定的數據類型,每個人都有一個緯度/長,我想在數據庫中搜索,看看是否能數據用指定的半徑大小的圓內。
我大概可以寫自己的東西,將處理這一點,但我徘徊,如果有一些已經寫好,將處理這個問題。
是否Django的有什麼事情是看一個地理座標(十進制經/緯),並確定是否具有一定半徑的圓內(比方說100公里)?Django的 - 確定地理座標是一個圓圈內
我有一定的數據類型,每個人都有一個緯度/長,我想在數據庫中搜索,看看是否能數據用指定的半徑大小的圓內。
我大概可以寫自己的東西,將處理這一點,但我徘徊,如果有一些已經寫好,將處理這個問題。
這個問題可以在純SQL如果你不介意有關很好的精度來解決。
你可以找到點周圍用這種特定的SQL查詢GPS位置:
# find point around :
latitude = 46.2037010192871
longitude = 5.20353984832764
query= "SELECT ID, NOM, LAT, LON, 3956 * 2 * ASIN(SQRT(POWER(SIN((%s - LAT) * 0.0174532925/2), 2) + COS(%s * 0.0174532925) * COS(LAT * 0.0174532925) * POWER(SIN((%s - LON) * 0.0174532925/2), 2))) as distance from POI having distance < 50 ORDER BY distance ASC " % (latitude, latitude, longitude)
這會給你的GPS記錄的所有記錄在50公里的區域。
您可以在Django與易堵塞這樣的:
from django.db import connection
cursor = connection.cursor()
cursor.execute(query)
rows = cursor.fetchall()
謝謝jujule。我認爲這會起作用。我不想亂用geodjango。這是完美的。 – avatar 2011-01-06 01:03:18
我查閱了一些資料的PostGIS出於好奇,發現這一點。 http://postgis.refractions.net/documentation/manual-1.5/ST_DWithin.html如果你已經使用了postgis,它似乎更簡單一些。 – Keyo 2011-01-06 01:16:24
謝謝你,科索。我認爲我應該從MySQL切換到Postgres,因爲Postgres似乎對GIS的更多支持。 – avatar 2011-01-06 01:33:08