强制右手ru后与边界框相交的坐标

2024-09-30 01:37:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试查询边界框中的位置。俄罗斯国家的边界框呈现从东到西,基本上覆盖了加拿大的所有地区,没有俄罗斯(这显然是不正确的),并返回加拿大、波兰和斯洛伐克的城市

我使用ForceRHR(Django 1.11)和ForcePolygonCW(Django 2.2)来强制使用右手规则,它似乎正确地排列了边界框坐标,但是对于常规边界框和RHR边界框,我得到了相同的查询结果

以下是位置模型中的相关字段

from django.contrib.gis.db import models as gis_models
point = gis_models.PointField(blank=True, null=True, geography=True)
bounding_box = gis_models.PolygonField(blank=True, null=True)

我试过了

from locations.models import Location
from django.contrib.gis.db.models.functions import ForceRHR, ForcePolygonCW

russia = Location.objects.annotate(rhr=ForcePolygonCW('bounding_box')).get(pk=1646)
print(russia.bounding_box)
in_russia = Location.objects.filter(point__intersects=russia.bounding_box)
print(in_russia)

print(russia.rhr)
in_russia2 = Location.objects.filter(point__intersects=russia.rhr)
print(in_russia2)

以下是上述代码的结果:

SRID=4326;POLYGON ((19.638861 41.185902, 19.638861 81.856903, -168.997849 81.856903, -168.997849 41.185902, 19.638861 41.185902))

<QuerySet [<Topic: 00-001 Warsaw, Poland>, <Topic: 048 01 Rožňava, Slovakia>, <Topic: 053 51 Richnava, Slovakia>, <Topic: 50.2112, -170.2624>, <Topic: 50.9566, -170.7638>, <Topic: 51.5734, -170.2439>, <Topic: 51.7759, -169.4604>, <Topic: 51.8281, -170.4743>, <Topic: 51.9097, -170.0422>, <Topic: 51.9108, -169.5701>, <Topic: 51.9771, -169.6288>, <Topic: 51.9782, -169.3368>, <Topic: 52.0036, -170.8657>, <Topic: 52.0231, -170.4362>, <Topic: 52.0362, -170.5883>, <Topic: 52.0641, -169.6883>, <Topic: 52.1027, -170.0871>, <Topic: 52.1242, -170.4661>, <Topic: 52.1272, -170.5383>, <Topic: 52.1295, -170.4205>, '...(remaining elements truncated)...']>

SRID=4326;POLYGON ((19.638861 41.185902, -168.997849 41.185902, -168.997849 81.856903, 19.638861 81.856903, 19.638861 41.185902))

<QuerySet [<Topic: 00-001 Warsaw, Poland>, <Topic: 048 01 Rožňava, Slovakia>, <Topic: 053 51 Richnava, Slovakia>, <Topic: 50.2112, -170.2624>, <Topic: 50.9566, -170.7638>, <Topic: 51.5734, -170.2439>, <Topic: 51.7759, -169.4604>, <Topic: 51.8281, -170.4743>, <Topic: 51.9097, -170.0422>, <Topic: 51.9108, -169.5701>, <Topic: 51.9771, -169.6288>, <Topic: 51.9782, -169.3368>, <Topic: 52.0036, -170.8657>, <Topic: 52.0231, -170.4362>, <Topic: 52.0362, -170.5883>, <Topic: 52.0641, -169.6883>, <Topic: 52.1027, -170.0871>, <Topic: 52.1242, -170.4661>, <Topic: 52.1272, -170.5383>, <Topic: 52.1295, -170.4205>, '...(remaining elements truncated)...']>

我希望得到在俄罗斯的位置,那么我是做错了什么还是整个方法都错了


Tags: infromimportboxtruetopicmodelslocation

热门问题