Python 如何在geodjango中获取重叠对象?
我正在使用Python 如何在geodjango中获取重叠对象?,python,django,gis,postgis,geodjango,Python,Django,Gis,Postgis,Geodjango,我正在使用geodjango创建一个应用程序 我有一个这样的模型: class WorldBorder(models.Model): name = models.CharField(max_length=50) mpoly = models.MultiPolygonField() 我的数据库中可能有2个或更多具有重叠边框的对象 如何确定某些对象的边界是否重叠? 如何获取具有重叠边界的对象查询集 谢谢根据您的目标,您有两个选择: 选项1:您可以使用查找: 使用示例: an_mp
geodjango
创建一个应用程序我有一个这样的模型:
class WorldBorder(models.Model):
name = models.CharField(max_length=50)
mpoly = models.MultiPolygonField()
我的数据库中可能有2个或更多具有重叠边框的对象
如何确定某些对象的边界是否重叠?如何获取具有重叠边界的对象查询集
谢谢根据您的目标,您有两个选择:
选项1:您可以使用查找: 使用示例:
an_mpoly = WorldBorder.objects.get(name='a_name').mpoly
overlapping_mpolys = WorldBorder.objects.filter(mpoly__overlaps=an_mpoly)
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))
现在,overlapping\u-mpoly
是一个查询集,包含每个WorldBorder
对象,该对象与WorldBorder
对象的mpoly
重叠,该对象具有name='a\u-name'
选项2: 如果需要对象到对象的重叠检查,可以使用以下方法: 使用示例:
an_mpoly = WorldBorder.objects.get(name='a_name').mpoly
overlapping_mpolys = WorldBorder.objects.filter(mpoly__overlaps=an_mpoly)
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))
根据您想要实现的目标,您有两种选择:
选项1:您可以使用查找: 使用示例:
an_mpoly = WorldBorder.objects.get(name='a_name').mpoly
overlapping_mpolys = WorldBorder.objects.filter(mpoly__overlaps=an_mpoly)
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))
现在,overlapping\u-mpoly
是一个查询集,包含每个WorldBorder
对象,该对象与WorldBorder
对象的mpoly
重叠,该对象具有name='a\u-name'
选项2: 如果需要对象到对象的重叠检查,可以使用以下方法: 使用示例:
an_mpoly = WorldBorder.objects.get(name='a_name').mpoly
overlapping_mpolys = WorldBorder.objects.filter(mpoly__overlaps=an_mpoly)
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))