GeoDjango不能在多边形中找到点

2024-10-04 11:32:22 发布

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

我有一个基于shapefile的模型:

我的模型是: 从django.contrib.gis公司.db导入模型

class RegionBorder(models.Model):

    region_code = models.CharField(max_length=9)
    region_name = models.CharField(max_length=24)

    mpoly = models.MultiPolygonField(srid=27700)
    objects = models.GeoManager()

    def __str__(self):
        return self.region_name

我已经成功地将多边形导入到我的数据库中:

^{pr2}$

但当我试图在多边形中找到一个点时,却一无所获。我知道这个点一定在多边形里,因为它们是英格兰地区的地图,我正在伦敦市中心找到尼尔森柱。在

p = GEOSGeometry("Point(-0.127907 51.507786)", srid=27700)

RegionBorder.objects.filter(mpoly__contains=p)
[]

我做错什么了?我已经交换了坐标,以防我把它们弄错方向,我删除了srid参数,重新开始。这是我第一次做地理信息系统的事情,所以我完全迷路了


Tags: djangoname模型selfobjectsmodels多边形length
1条回答
网友
1楼 · 发布于 2024-10-04 11:32:22

我为分数设置了错误的SRID。通过使用srid 4326对lng/lat点进行修正,然后在搜索之前转换为正确的投影

from django.contrib.gis.geos import GEOSGeometry

p = GEOSGeometry("Point(-0.127907 51.507786)", srid=4326) # 4326 for standard lng/lat coordinates

# Transform to same coordinate system as maps
p.transform(27700)

RegionBorder.objects.filter(mpoly__contains=p)
[<RegionBorder: London>]

相关问题 更多 >