在下面的查询中,lookup with geometry
变量错误地将geometry
转换为SQL中不需要的SRID。你知道吗
Buildings.objects.annotate(
area_krovak=Transform('area', self.KROVAK_SRID),
intersection_area=RawSQL('ST_Area(ST_Intersection(ST_Transform(area, {krovak}), ST_GeomFromEWKB(\'\\x{district_geom}\')))'.format(district_geom=geometry.ewkb.hex(), krovak=5514), [])
).filter(area_krovak__intersects=geometry)
Building.area
在dba中MultipolygonField()
,在db中默认有srid4326(WGS84)。geometry
是Krovak投影中的GEOSGeometry
(SRID 5514)。为了使stu交集工作,我需要在相同的投影中同时使用这两个元素,所以我在相应的投影中添加了字段area_krovak
。但是lookup中的=geometry
部分area_krovak__intersects=geometry
会产生以下SQL(当我打印.query
)
ST_Transform(ST_GeomFromEWKB('blabla'::bytea), 4326)
出于某种原因,Django将其转换为4326,因此它不起作用。你知道吗
用适当的SRID添加
output_field
就解决了这个问题相关问题 更多 >
编程相关推荐