【问题标题】:PostGIS intersection troubleshootingPostGIS 路口故障排除
【发布时间】:2011-03-11 13:56:02
【问题描述】:

我刚开始使用 PostGIS 和 Postgresql,大部分情况下一切运行顺利。当我试图找到 MULTIPOLYGON 的一个点时,我被卡住了。我有两个独立的点,我确信它们位于我的数据库中的一个且只有一个形状为 MULTIPOLYGON 数据类型的形状中。它们不是相同的点,它们的格式不同。

示例 1,我不确定它是什么格式,但查询返回了我预期的真实值(注意,我通过将数据集加载到 QGIS 中并将鼠标悬停在里面的一个点上找到了这个值)。

在第二个示例中,我对位于我正在查看的形状内的地址进行了地理编码。但是,查询结果会返回一个 false 值。

我使用 shp2pgsql 将数据直接从形状文件加载到我的数据库中。形状文件的 SRID 为 4269(我尝试在 GeomFromText 调用期间指定 SRID 时运行以下查询,但结果相同)。

这两个坐标集有什么区别?我需要做什么才能使用使用 lat/lon 值的 POINTS 执行相交测试?

1.) SELECT ST_Intersects((select the_geom from wardstable where gid=37), ST_GeomFromText('POINT(1172539 1924462)'));

2.) SELECT ST_Intersects((select the_geom from wardstable where gid=37), ST_GeomFromText('POINT(-87.6547884 41.96367)'));

谢谢!

【问题讨论】:

    标签: postgresql gis postgis


    【解决方案1】:

    在执行 ST_Intersects 等空间操作时,Multipolygons 和 Points 数据集应位于同一投影 (SRID) 中。在您的第二个示例中,该点的坐标为纬度/经度(4326)。您应该使用 ST_Transform 将它们转换为 4269:

    SELECT ST_Intersects((select the_geom from wardstable where gid=37), ST_Transform(ST_GeomFromText('POINT(-87.6547884 41.96367)',4326),4269));
    

    编辑:我错过了 ST_GeomFromText 中的 SRID 参数。

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 1970-01-01
      • 2013-07-15
      • 2010-11-30
      • 2021-09-11
      • 2012-02-18
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多