我有一个点在(-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中发生的事情?
版本
地理使用大圆弧而不是直线。要可视化它们,您可以将地理分割为小段,然后将这些区段转换为几何
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,两个示例形状作为地理位置。