この問題は、非常に良い精度について気にしない場合、純粋なSQLで解決できます。
あなたは、この特定のSQLクエリとGPSの位置を中心にポイントを見つけることができます。これは、50キロの領域にあなたの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)
。あなたが簡単にジャンゴでこれをプラグインすることができ
:
from django.db import connection
cursor = connection.cursor()
cursor.execute(query)
rows = cursor.fetchall()
またはdjango raw queries
とは、あなたがjujuleありがとうございます。私はこれがうまくいくと思います。私はgeodjangoでまだ混乱したくない。これはちょうど完璧です。 – avatar
私はちょうど好奇心からいくつかのpostgisの文書を調べ、これを見つけました。 http://postgis.refractions.net/documentation/manual-1.5/ST_DWithin.htmlあなたがすでにPostgisを使用しているのであれば、もう少しシンプルなようです。 – Keyo
ありがとうございました。私はPostgresがGISのものをもっとサポートしているようだから、MySQLからPostgresに切り替えるべきだと思う。 – avatar