gpt4 book ai didi

django - 在 Geodjango + Postgres 中存储一个圆圈

转载 作者:行者123 更新时间:2023-11-29 11:45:58 25 4
gpt4 key购买 nike

希望在 geodjango 字段中存储一个圆,这样我就可以使用 geodjango 查询 __contains 来查明一个点是否在圆中(类似于可以使用 PolygonField 完成的操作)。

目前将其存储为小数半径和 GeoDjango 点域,但需要一种方法来查询数据库中的位置列表,以便这些不同的圆(点域和半径)包含我的搜索点(经/纬度)。

希望它有意义。

最佳答案

从技术上讲,PostGIS 支持CurvePolygonCircularString 几何类型,可用于存储曲线几何。例如,由 64 点缓冲多边形近似的 x=10、y=10 周围的 2 个单位半径为:

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,其他的则行不通)。这些几何类型可能会引起很多麻烦,我建议不要这样做。

通常,所有几何图形都存储为受支持的类型:POINTLINESTRINGPOLYGON(可选 MULTI- 前缀)。对于这些类型,使用 ST_DWithin function (例如,GeoDjango 调用此 __dwithin,另请参见 this question)以查询另一个几何体是否在指定距离内。例如,如果您有一个点位置,您可以查看其他几何图形是否在该点的特定距离(即半径)内。

关于django - 在 Geodjango + Postgres 中存储一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com