注意“db”
django.contrib.gis.db.models.functions
是的。没有python函数,这些类(因此名称中的首字母大写)允许您访问数据库系统的空间函数(通常由空间数据库扩展提供,如sqlite的spatialite或postgresql的postgis)。见
GeoDjango documentation
此页中记录的功能允许用户访问要在中使用的地理数据库功能
注释
,
聚合
,或
过滤器
在Django。
(强调我的。)
也就是说,这些只能用在
查询
,作为空间计算工作卸载到数据库中。
那么你能做什么而不是做几个查询呢?
update
查询
如果直接在sql中执行此操作,您可能会编写一个
UPDATE
查询。django orm允许您在django中使用
update()
method
.
可能看起来像这样(未经测试):
Place.objects.filter(pk=1).update(area=Translate('area', 0.001, 0.001))
如果你正在使用geodjango,这可能是首选的方法。
外部(python)库
如您所建议的,您可以使用外部库而不是geodjango的
Translate
,例如
shapely.affinity.translate
from the
shapely
library
是的。但是,我怀疑它会接受吉德扬戈的
django.contrib.gis.geos.GEOSGeometry
作为输入,因此您可能需要通过geojson或wkt来回转换。
如果需要空间计算独立于基础数据库系统,请使用此方法。