代码之家  ›  专栏  ›  技术社区  ›  Steve

直接在geodjango/postgis中添加多边形

  •  2
  • Steve  · 技术社区  · 16 年前

    我只是想把一个简单的多边形字段添加到数据库中,然后在多边形中运行一个点,以确保一切正常工作。

    这是我在views.py中的代码:

        #adding a polygon
        pe = PolygonExample.objects.create(name="uk_polygon", poly="POLYGON((58.768200159239576, -12.12890625, 58.49369382056807 1.1865234375, 49.18170338770662 -12.9638671875, 50.2612538275847 5.537109375))" )
        #doing the point-in-polygon check
        result = PolygonExample.objects.filter(poly__contains='POINT(52.696361078274485 -0.87890625)') 
    

    下面是我在models.py中的内容:

        class PolygonExample(models.Model):
          name = models.CharField(max_length=16, db_index=True)
          poly = models.PolygonField()
          objects = models.GeoManager()
    

    但当我尝试添加多边形(polygonexample.objects.create)时,我得到一个错误:“检查从geos c函数“geoswktreader”返回的几何图形时遇到错误”。

    我添加多边形的代码是错误的吗?我不确定我是否知道如何直接插入lat/lon坐标。

    或者这是地理位置安装错误?

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  5
  •   tcarobruce    16 年前

    WKT

    >>> wkt = "POLYGON((-12.12890625 58.768200159239576, 1.1865234375 58.49369382056807, 5.537109375 50.2612538275847, -12.9638671875 49.18170338770662, -12.12890625 58.768200159239576))"
    >>> pe = PolygonExample.objects.create(name="uk_polygon", poly=wkt)
    >>> result = PolygonExample.objects.filter(poly__contains='POINT(-0.87890625 52.696361078274485)')  # note x,y order here, too
    >>> result[0].name
    u'uk_polygon'