查找路线附近的属性(线串)
Finding attributes near route (linestring)
基本上,我想知道是否有一种方法可以使用 postgis 查询 django 中具有靠近线串的地理字段的所有对象。我正在计算一条路线并想找到大约在该路线上的对象(比如距线串 2m - 10m 的最大距离)。我在网上找不到似乎可以解决这个问题的方法。
当然,我可以在路线周围创建一个间隔,比如 2m,然后使用这些间隔创建一个多边形,并检查哪些点落在这个创建的表面内,但我想知道是否有更直接的方法(就像我上面描述的那样)。
这是我第一个描述的方法的一些 psu 代码(我想要的)
def get_objects_on_route():
Model.objects.filter(geo_location__some_lookup=all_points_in_route_route, max_distance=2m)
我可以实现的其他方法
def get_objects_on_route():
points_in_surface = []
for each element in route:
points_in_surface.append(two_corrected_points)
poly= Polygon(all_points_on_route)
Model.objects.filter(geo_location__covered_by=poly)
事实证明,您可以通过创建 LineString
object instead of a Point
.
使用 Django 的 PostGIS 过滤轻松地进行此类查询
from django.contrib.gis.geos import LineString
line = LineString(*coords_in_route)
Model.object.filter(geo_location__distance_lte=(line, D(m=2)))
我对其进行了测试,似乎工作正常:
基本上,我想知道是否有一种方法可以使用 postgis 查询 django 中具有靠近线串的地理字段的所有对象。我正在计算一条路线并想找到大约在该路线上的对象(比如距线串 2m - 10m 的最大距离)。我在网上找不到似乎可以解决这个问题的方法。
当然,我可以在路线周围创建一个间隔,比如 2m,然后使用这些间隔创建一个多边形,并检查哪些点落在这个创建的表面内,但我想知道是否有更直接的方法(就像我上面描述的那样)。
这是我第一个描述的方法的一些 psu 代码(我想要的)
def get_objects_on_route():
Model.objects.filter(geo_location__some_lookup=all_points_in_route_route, max_distance=2m)
我可以实现的其他方法
def get_objects_on_route():
points_in_surface = []
for each element in route:
points_in_surface.append(two_corrected_points)
poly= Polygon(all_points_on_route)
Model.objects.filter(geo_location__covered_by=poly)
事实证明,您可以通过创建 LineString
object instead of a Point
.
from django.contrib.gis.geos import LineString
line = LineString(*coords_in_route)
Model.object.filter(geo_location__distance_lte=(line, D(m=2)))
我对其进行了测试,似乎工作正常: