我必须扩展正常的 GeoJSON 格式以添加一些不受支持的多边形,如 Circle。
{
"type": "Circle",
"radius" : 0.001,
"coordinates": [
5.417075157165527,
43.29129488122568
]
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子。坐标标记圆心,半径表示半径(以米为单位)。
在 PostGis Docs 和 Stackoverflow 上搜索,要绘制一个圆,您必须使用 ST_BUFFER。
所以我使用:
ST_Buffer(ST_GeomFromGeoJSON(<center of circle>),0.001, 'quad_segs=16')
Run Code Online (Sandbox Code Playgroud)
你知道吗,这只能在 0,0(非洲附近)画一个圆。其他位置添加了改变椭圆形状的扭曲。
我用的是 4326。
我试图搜索(即使在这里),但我无法找到一个解决方案来简单地绘制一个圆,避免投影或转换它。
这里唯一的帖子是:如何在 postgis 中以米为单位创建一个圆圈? 但它很旧,该解决方案不起作用。
我有数据库表Building与这些列:name,lat,lng
如何Buildings在指定坐标的5英里范围内获取全部范围,例如:
-84.38653999999998
33.72024
我的尝试,但它不起作用:
SELECT ST_CONTAINS(
SELECT ST_BUFFER(ST_Point(-84.38653999999998,33.72024), 5),
SELECT ST_POINT(lat,lng) FROM "my_db"."Building" LIMIT 50
);
Run Code Online (Sandbox Code Playgroud)
https://docs.aws.amazon.com/athena/latest/ug/geospatial-functions-list.html