5

我正在尝试找到一种方法来定位与 CartoDB.com 上的 PostGIS(云托管空间数据库)上的给定点相交的所有几何图形。

我能够重现的最接近的是:

SELECT * FROM sf_blocks WHERE ST_Contains(the_geom, ST_GeomFromText('POINT(-122.44107 37.750066)'));

不幸的是,这会出现“错误:对混合 SRID 几何图形的操作”。

从与点相交的表中选择几何的正确语法是什么?我的表 sf_blocks 都是多边形。

4

2 回答 2

5

函数 ST_GeomFromText 采用第二个参数 - SRID。因此,如果您的 sf_blocks 层位于 Lon/Lat、WGS84 中,则 EPSG 代码为 4326。在这种情况下

SELECT * 
FROM sf_blocks 
WHERE ST_Contains(
    the_geom, 
    ST_GeomFromText('POINT(-122.44107 37.750066)', 4326)
); 

应该这样做。如果 sf_blocks 图层位于其他坐标系中(并且点坐标似乎是 Lon/Lat),那么您需要在 GeomFromText 部分周围使用 ST_Transform。

于 2012-05-13T17:52:19.483 回答
1

st_transform 将允许您转换为其他 SRID,请在网上查找。4326 是最常见的......对不起,没有时间来完整地写一个答案,会稍微编辑一下。

编辑..只是为了确认您的示例中的“the_geom”是多边形还是多边形?

于 2012-05-09T21:23:12.043 回答