我有多边形,我从外部来源。多边形无效。
In [36]: p
Out[36]: <Polygon object at 0x7fec6bea6ac0>
In [37]: p.valid
[12/Dec/2017 19:13:19] WARNING [django.contrib.gis:85] GEOS_NOTICE: Hole lies outside shell at or near point 260561.40600000042 776052
我知道我可以使用MakeValid()django函数在DB中修复多边形。
有没有办法在将多边形插入数据库之前修复多边形,只需使用地理API?
感谢。
答案 0 :(得分:0)
我不知道这是否一定能解决您的孔错误,但是我很幸运通过执行宽度为0的缓冲区来消除自相交的几何图形:
p = p.buffer(0)
答案 1 :(得分:0)
不幸的是,ST_MakeValid
函数没有使用geos函数,但是a custom function在PostGIS自己的liblwgeom库中。
我不知道liblwgeom的任何python绑定,因此,如果要调用该函数,则必须使用ctypes进行自己的绑定。参见this similar question以获得灵感。
但是,如果有任何一种方法足够好,那么按照spatialbits' answer的建议使用buffer(0)
也是成功的。