如何在postGIS中获取距离某点一定距离的边界框的坐标?

问题描述 投票:0回答:1

我的目标是在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输出地理坐标,而不是看起来像几何体的东西?

postgis
1个回答
1
投票

如果几何体被传递到 ST_Buffer那么第二个参数是度数,而不是米。要使用米作为第二个参数,请将第一个参数转为地理参数。然后再将其转回几何学,用于范围。

select
  ST_AsGeoJSON(
    st_extent(
      st_buffer(
        ST_SetSRID(
          ST_MakePoint(11.0120, 49.5897),
          4326
        )::geography,
        6000
      )::geometry
    )
  );
© www.soinside.com 2019 - 2024. All rights reserved.