POSTGIS" ST_Contains"返回一个空查询

时间:2017-12-28 16:00:00

标签: postgresql geometry postgis qgis pgadmin-4

我已经使用QGIS将两个形状文件导入到pgAdmin 4(PostgreSQL)中,我使用PostGIS扩展来访问空间命令。

我想检查Gemeinden(多面)表中包含的所有POIS(点)。为了实现这一点,我使用空间命令" ST_Contains" ([关于命令的postgis.net文档])1。与点实际上在多边形中的事实相反,返回的查询为空(请参阅QGIS和输出屏幕截图)。可能是什么问题?任何帮助,将不胜感激。提前谢谢!

输出 - pgAdmin enter image description here

我使用的命令:

SELECT * FROM public."POIS" AS pois INNER JOIN public."Gemeinden" AS gem
ON (1 = 1)
WHERE ST_Contains(gem.geom, pois.geom) = true;

我的桌子:

  1. POIS表内容
  2. [POIS 3

    1. Gemeinden表格内容
    2. [Gemeinden 4

      QGIS截图:

      1. 两个形状文件在一起:
      2. [enter image description here 5

        1. 仅限POIS形状文件:
        2. [enter image description here 6

          1. 只有Gemeinden形状文件:
          2. [enter image description here 7

            更新

            我使用命令

            从多边形中创建了一个多边形表
            CREATE TABLE polygon_table AS 
            SELECT id, public."Gemeinden".kg_nr, public."Gemeinden".kg, (ST_DUMP(geom)).geom::geometry(Polygon,4326) AS geom FROM public."Gemeinden";
            

            之后我使用以下方式更新了POIS表和新创建的SRID的SRID:

            SELECT UpdateGeometrySRID('polygon_table','geom',4326);
            

            SELECT UpdateGeometrySRID('POIS','geom',4326);
            

            可悲的是,

            SELECT pois.* FROM public."POIS" AS pois JOIN public."polygon_table" AS 
            gem
            ON ST_intersects(gem.geom, pois.geom);
            

            仍会返回一个空查询。

            有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:3)

首先确保两个表的SRID必须相同。如果不相同则空间查询不起作用。 其次,将多边形转换为单个多边形。以下链接可能会有所帮助

PostGIS - convert multipolygon to single polygon

如果您只想获得与多边形相交的POIS,那么以下查询就足够了

SELECT pois.* FROM public."POIS" AS pois JOIN public."Gemeinden" AS gem
ON  ST_intersects(gem.geom, pois.geom);

答案 1 :(得分:0)

我已经通过返回QGIS并将之前导入的形状文件保存为相同的SRID来解决问题。显然,我在数据库中转换SRID的代码不起作用。

Right click on the shape-file

Selecting the SRID

注意:我已经为两个shape文件做了这个,只是为了确定。

可能影响结果的另一个因素是从QGIS导入数据库时​​选择“转换为单个多边形”框。

The box that I ticked for both shape-files while importing

PS:我使用德语版的QGIS