想在 geodjango 字段中存储一个圆,以便使用 geodjango 查询 __contains 查找点是否在圆内(类似于 PolygonField 的用法)。
目前已将其存储为十进制半径和 GeoDjango 点字段,但需要一种方法查询数据库中包含我的搜索点(经度/纬度)的这些不同圆形(点字段和半径)的位置列表。
希望这有意义。
想在 geodjango 字段中存储一个圆,以便使用 geodjango 查询 __contains 查找点是否在圆内(类似于 PolygonField 的用法)。
目前已将其存储为十进制半径和 GeoDjango 点字段,但需要一种方法查询数据库中包含我的搜索点(经度/纬度)的这些不同圆形(点字段和半径)的位置列表。
希望这有意义。
从技术角度来说,PostGIS支持CurvePolygon
和CircularString
几何类型,可以用于存储曲线几何体。例如,一个以x=10、y=10为中心、半径为2个单位,通过64个点的缓冲多边形近似表示的曲线几何体如下:
SELECT ST_AsText(ST_LineToCurve(ST_Buffer(ST_MakePoint(10, 10), 2, 16)));
st_astext
------------------------------------------------
CURVEPOLYGON(CIRCULARSTRING(12 10,8 10,12 10))
(1 row)
ST_AsSVG
等不起作用)。这些几何类型可能会引起很多麻烦,我建议不要这样做。POINT
、LINESTRING
或POLYGON
(带有可选的MULTI-
前缀)。使用ST_DWithin
函数(例如,GeoDjango将其称为__dwithin,请参见此问题)查询是否有另一个几何图形在指定距离内。例如,如果您有一个点位置,您可以查看其他几何图形是否在该点的一定距离(即半径)内。