ST_Intersects -- returns True if Geometries/Geography spatially intersect in 2D
. 如果从转换,则查询应返回相同的结果
POLYGON
(在具有5个顶点的情况下)到
LINESTRING
SELECT
ST_Intersects(
ST_GeomFromText('SRID=4326;LINESTRING(12.856 41.890,12.856 41.935,12.811 41.935,12.811 41.890,12.856 41.890)'),
ST_GeomFromText('SRID=4326;LINESTRING(-170 -47,174 -47,174 77,-170 77,-170 -47)'));
SELECT
ST_Intersects(
ST_GeogFromText('SRID=4326; LINESTRING(12.856 41.890,12.856 41.935,12.811 41.935,12.811 41.890,12.856 41.890)'),
ST_GeogFromText('SRID=4326; LINESTRING(-170 -47,174 -47,174 77,-170 77,-170 -47)'));
更新::
实际上,使用
Polygon
对我来说很好
ST_Intersects
. 我意识到了
Linestring
不是你想要的——返回false,因为一个完全在另一个里面。问题是这两个多边形在球坐标系中相距很远。检查:
SELECT
ST_Distance(
ST_GeomFromText('SRID=4326;POLYGON((12.856 41.890,12.856 41.935,12.811 41.935,12.811 41.890,12.856 41.890))'),
ST_GeomFromText('SRID=4326;POLYGON((-170 -47,174 -47,174 77,-170 77,-170 -47))'));
==>0
SELECT
ST_Distance(
ST_GeogFromText('SRID=4326;POLYGON((12.856 41.890,12.856 41.935,12.811 41.935,12.811 41.890,12.856 41.890))'),
ST_GeogFromText('SRID=4326;POLYGON((-170 -47,174 -47,174 77,-170 77,-170 -47))'));
==>6743507.32
你当然可以投
geography
到
geometry
SELECT
ST_Intersects(
ST_GeogFromText('SRID=4326;POLYGON((12.856 41.890,12.856 41.935,12.811 41.935,12.811 41.890,12.856 41.890))')::geometry,
ST_GeogFromText('SRID=4326;POLYGON((-170 -47,174 -47,174 77,-170 77,-170 -47))')::geometry);