【问题标题】:Finding attributes near route (linestring)查找路线附近的属性(线串)
【发布时间】:2019-04-04 08:34:19
【问题描述】:

基本上,我想知道是否有一种方法可以使用 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)

【问题讨论】:

    标签: python django postgis geodjango


    【解决方案1】:

    事实证明,您可以通过创建 LineString 对象而不是 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)))
    

    我测试了它,似乎工作正常:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 2015-03-17
      • 2019-12-06
      • 1970-01-01
      • 2013-04-02
      • 2016-05-06
      • 1970-01-01
      相关资源
      最近更新 更多