我正在尝试找到一种方法来定位与CartoDB.com上的PostGIS(云托管空间数据库)相交的给定点的所有几何体。
我能够重现的最接近的是:
SELECT * FROM sf_blocks WHERE ST_Contains(the_geom, ST_GeomFromText('POINT(-122.44107 37.750066)'));
不幸的是,错误出现'错误:混合SRID几何上的操作。'
从与点相交的表中选择几何的正确语法是什么?我的表,sf_blocks都是多边形。
答案 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'是多边形还是多边形?