geo Django:找到一个房子的邻居

时间:2018-02-06 20:28:35

标签: python django gis geo geodjango

我有一个具有这些属性的房屋模型

centerpoint = PointField(srid=0, null=True, blank=True)
front_left = PointField(srid=0, null=True, blank=True)
front_right = PointField(srid=0, null=True, blank=True)
rear_left = PointField(srid=0, null=True, blank=True)
rear_right = PointField(srid=0, null=True, blank=True)
polygon = PolygonField(srid=0, null=True, blank=True)
direction = FloatField(null=True, blank=True)  # the direction this house faces, in degrees

我希望把房子放在特定的房子前面...我很难尝试使用距离和多边形_d在

我需要得到那些接触的和相对方向小于160度的那些:

为此我做了:

House.objects.filter(polygon__touches=house_instance.polygon, direction__lt=160)

如何修改此查询以使前面的房屋最多一个街区以及距离我参考房屋一个房屋的房屋?

编辑: 所以“面向方向”实际上是方向字段,其中包含房屋面向前门的方向

这是我需要的邻居的形象,

我的多边形字段是房子的实际“区域”点...

对不起,如果我的术语很古怪,我很新...

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您还拥有街道的多边形(甚至是线条),您可以查询面向房屋的街道,然后查询哪条房屋面向这条街道。

一个很酷的解决方法可能是使用反向地理编码(例如,通过谷歌地图here来检索房屋的街道地址,然后检查其他房屋的街道地址,并尝试匹配它们。这样可行只有反向地理编码服务拥有您所在地区的这些数据并且足够准确。