【问题标题】:How to get overlapping objects in geodjango?如何在geodjango中获取重叠对象?
【发布时间】:2017-04-07 13:53:01
【问题描述】:

我正在使用 geodjango 创建一个应用。
我有一个这样的模型:

class WorldBorder(models.Model):
    name = models.CharField(max_length=50)
    mpoly = models.MultiPolygonField()

我的数据库中可能有 2 个或更多具有重叠边框的对象。

如何确定某些对象的边框是否重叠?
如何获取具有重叠边框的对象的查询集?

谢谢

【问题讨论】:

    标签: python django gis postgis geodjango


    【解决方案1】:

    您有 2 个选项,具体取决于您想要实现的目标:


    选项 1: 您可以使用 __overlaps 查找:

    使用示例:

    an_mpoly = WorldBorder.objects.get(name='a_name').mpoly
    overlapping_mpolys = WorldBorder.objects.filter(mpoly__overlaps=an_mpoly)
    

    现在overlapping_mpolys 是一个查询集,包含每个mpolyWorldBorder 对象与WorldBorderWorldBorder 对象与name='a_name'mpoly 重叠。


    选项 2: 如果您需要object to object 重叠检查,您可以使用GEOS API overlaps 方法:

    使用示例:

    mpoly_1 = WorldBorder.objects.get(name='name_1').mpoly
    mpoly_2 = WorldBorder.objects.get(name='name_2').mpoly
    
    if mpoly_1.overlaps(mpoly_2):
        print("{} and {} are overlapping".format(mpoly_1, mpoly_2))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 2017-12-16
      • 1970-01-01
      • 2017-09-05
      • 2017-08-22
      相关资源
      最近更新 更多