快速背景,我正在尝试创建一个 django 应用程序,该应用程序按与一个点的距离对一堆位置进行排序。该应用程序将在 EC2 服务器上运行,我想将 RDS 用于数据库。因为 PostgreSQL 在 RDS 上不可用,所以我选择使用 MySQL。
问题:
当我尝试运行视图时,出现错误:
NotImplementedError:距离存储过程在 mysql 后端不可用。
这是视图:
from django.shortcuts import render_to_response
from models import CampSite
from geopy import geocoders
from django.contrib.gis.geos import *
from django.contrib.gis.measure import D
from django.template import RequestContext
def results(request):
query = request.GET['q']
g = geocoders.Google(resource='maps')
results = []
geocodes = g.geocode(query, exactly_one=False)
for geocode in geocodes:
location, (lat, lon) = geocode
pnt = fromstr("POINT(%s %s)" % (lon, lat))
distance_from_point = {'mi':'2000'}
results.append(CampSite.objects.filter(
lonlat__distance_lte=(
pnt,
D(**distance_from_point)
)
).distance(pnt).order_by('distance')
)
return render_to_response('results.html',{'location': location,
'lat': lat, 'lon': lon, 'results':results[0]},
context_instance=RequestContext(request))
从我读过的内容来看,我认为问题在于 MySQL 不符合 OGC 标准,并且使用 GDAL 获取信息可以工作,但我不知道如何实现它。
有谁知道我如何让应用程序使用 RDSpreferably 和 MySQL 工作?(我想避免 Heroku)
ps 我正在使用 geopy 向 Google 发出请求。