我在WGS84坐标系中有大量的点(~150万)。这些点跨越很大的区域,所以我不能使用投影坐标系。我想找到一对给定输入坐标的最近点。我有一个工作视图,但是执行它需要太长时间(约2.5秒)。在
这是我的模型:
from django.contrib.gis.db import models
class Point(models.Model):
id = models.IntegerField(primary_key=True)
geom = models.PointField(srid=4326, spatial_index=True)
objects = models.GeoManager()
这是视图中的查询(我从另一个SO问题中得到):
^{pr2}$有没有一种更快的方法?我在SQLAlchemy/GeoAlchemy2中有一个等价的查询,执行它不到0.5秒,所以我知道这是可能的。在
from geoalchemy2.elements import WKTElement
pt = WKTElement('POINT({0} {1})'.format(lon, lat), srid=4326)
q = session.query(Point).order_by(Point.geom.distance_box(pt)).first()
有没有更好的方法来使用GeoDjango进行“最近点”查询?在
不确定,这可能更快。您可以使用google投影(
900913
)以米为单位获取数据。在参考文献:
https://docs.djangoproject.com/en/dev/ref/contrib/gis/db-api/#distance-queries
相关问题 更多 >
编程相关推荐