提问者:小点点

可视化PostGIS地理边界框以了解"


我有一个点在(-130.2,30.5),一个框在(-130,30,-129,31)。作为几何体,

WITH src(point, envelope) AS (SELECT
    ST_SetSRID(ST_MakePoint(-130.2, 30.5), 4326) AS point,
    ST_MakeEnvelope(-130.0, 30.0, -129.0, 31.0, 4326) AS envelope)
SELECT
    point::GEOMETRY && envelope::GEOMETRY AS geom_bbox_intersects,
    point::GEOGRAPHY && envelope::GEOGRAPHY AS geog_bbox_intersects,
    ST_Intersects(point::GEOGRAPHY, envelope::GEOGRAPHY) AS geog_poly_intersects
FROM src;
 geom_bbox_intersects | geog_bbox_intersects | geog_poly_intersects
----------------------+----------------------+----------------------
 f                    | t                    | f

我假设对于地理,PostGIS 在椭球体上使用矩形边界框,而不是我的经度平行包络。是这样吗?如何使用QGIS等2D工具可视化PostGIS中发生的事情?

版本

  • PostgreSQL:10.17
  • PostGIS:2.4

共1个答案

匿名用户

地理使用大圆弧而不是直线。要可视化它们,您可以将地理分割为小段,然后将这些区段转换为几何

WITH src(geom) AS (SELECT ST_MakeEnvelope(-130.0, 30.0, -129.0, 31.0, 4326) AS geom)
SELECT
    st_segmentize(geom::geography,1000)::geometry
FROM src;

也就是说,沿着子午线的大圆就是子午线本身,所以我真的不明白为什么地理边界框会重叠。如果符合您的工作流程,使用< code>st_intersects()将返回< code>false,两个示例形状作为地理位置。