Geodjango-Can'在多边形中找不到点



我有一个基于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

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

len(RegionBorder.objects.all())
9

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

p = GEOSGeometry("Point(-0.127907 51.507786)", srid=27700)
RegionBorder.objects.filter(mpoly__contains=p)
[]

我做错了什么?我交换了坐标,以防我把它们弄错了,我删除了srid的论点,重新开始。这是我第一次做GIS的事情,所以我完全失去了

我为点设置了错误的SRID。修正了对lng/lat点使用srid4326,然后在搜索之前转换为正确投影的问题

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>]

最新更新