【问题标题】:Find all geometry that intersects a point查找与点相交的所有几何图形
【发布时间】:2012-05-18 06:37:43
【问题描述】:

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

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

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

很遗憾,此错误显示为“错误:对混合 SRID 几何图形的操作”。

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

【问题讨论】:

  • 原来我没有 SRID,这是必需的。澄清一下,“the_geom”是一个多边形。

标签: sql gis postgis


【解决方案1】:

函数 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。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多