找到与点相交的所有几何体

时间:2012-05-09 17:43:49

标签: sql gis postgis

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

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

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

不幸的是,错误出现'错误:混合SRID几何上的操作。'

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

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

st_transform将允许您转换为其他SRID,在网上查找。 4326是最常见的......没有时间完全写一个答案,可以稍微编辑一下。

编辑..只是为了确认你的例子中的'the_geom'是多边形还是多边形?