geo Django:获取房子的邻居

geo Django: get the neighbors of a house

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

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

我想得到特定房子前面的房子...我很难尝试使用距离和 polygon__dwithin

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

为此我做了:

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

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

编辑: 所以 "facing direction" 它实际上是方向字段,其中包含房子正对前门的方向

这是我需要的邻居图片,

我的多边形字段是房子的实际 "area" 点...

抱歉,如果我的术语古怪,我对此很陌生...

如果你也持有街道的多边形(甚至是线),你可以查询房子对面的街道,然后查询这条街对面有哪些房子。

一个很酷的解决方法是使用反向地理编码(例如,通过 google 地图 here 检索房屋的街道地址,然后检索其他房屋的街道地址并尝试匹配它们。这仅当反向地理编码服务拥有您所在地区的此数据并且足够准确时才会起作用。