我的目标是在postGIS中定义一个以点为中心建立的给定半径的圆的边界框。
点、范围都可以,但是当我这样做的时候。
select ST_AsGeoJSON( st_extent( st_buffer( ST_SetSRID(ST_MakePoint(11.0120, 49.5897), 4326), 6000 ) ) );
我得到的结果是
{"type":"Polygon","coordinates":[[[-5988.988,-5950.4103],
[-5988.988,6049.5897],
[6011.012,6049.5897],
[6011.012,-5950.4103],
[-5988.988,-5950.4103]]]}
当我还在期待着类似于(
{"type":"Polygon","coordinates":[[[10.929017, 49.535753],
[10.929017, 49.643646],
[11.094983, 49.643646],
[11.094983, 49.535753],
[10.929017, 49.535753]]]}
(手工制作的GeoJSON - 可能包含错误)
那么--我如何让postGIS的SQL输出地理坐标,而不是看起来像几何体的东西?
如果几何体被传递到 ST_Buffer
那么第二个参数是度数,而不是米。要使用米作为第二个参数,请将第一个参数转为地理参数。然后再将其转回几何学,用于范围。
select
ST_AsGeoJSON(
st_extent(
st_buffer(
ST_SetSRID(
ST_MakePoint(11.0120, 49.5897),
4326
)::geography,
6000
)::geometry
)
);