在使用时检查多边形对象的有效性时Objects.polygon.valid,它会抛出GEOS_NOTICE: Self-intersection错误.
我知道这可以通过使用ST_MakeValidPostGIS 的方法来解决.
我正在使用支持GEOS的Django 1.11,并且在Django文档中找不到它的等价物.
ST_MakeValid在Django中是否有任何等效功能?
Django版本> = 1.10:
存在数据库方法: MakeValid
Django版本<1.10:
您可以通过扩展GeoFunc类来创建自定义数据库函数,该类本身扩展了Func()类:
from django.contrib.gis.db.models.functions import GeoFunc
class MakeValid(GeoFunc):
function='ST_MakeValid'
Run Code Online (Sandbox Code Playgroud)
该MakeValid(field_name)应用ST_MakeValid与现场field_name.
用法:
YourModel.objects.get(id=an_id).update(the_geom=MakeValid('the_geom'))
Run Code Online (Sandbox Code Playgroud)
以下是使用F()表达式执行更新的等效查询:
YourModel.objects.get(id=an_id)
.update(the_geom=GeoFunc(
F('the_geom'),
function='ST_MakeValid'
))
Run Code Online (Sandbox Code Playgroud)
注意: the_geom表示几何体字段(点,多边形等)
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |