查询包含4个点的多边形

时间:2017-03-22 10:45:14

标签: postgresql postgis gdal ogr

我总是得到4分,我想查询多点定义的多边形是否包含这4个点。我正在使用PostGIS和Postgres。

我也在为此目的使用OGR / GDAL。有人会为此向我提供使用SQL的查询。

1 个答案:

答案 0 :(得分:0)

检查点(1 1),(2 2),(3 3)和(4 4)是否都位于由(0 0),(10 0),(10 10)定义的多边形内, (0 10)和(0 0):

SELECT id
FROM multipoints
WHERE st_contains(
         st_polygon(
            st_addpoint(
               st_linefrommultipoint(
                  multipoints.geom
               ),
               st_startpoint(
                  st_linefrommultipoint(
                     multipoints.geom
                  )
               ),
               -1
            ),
            st_srid(multipoints.geom)
         ),
         st_mpointfromtext(
            'MULTIPOINT(1 1, 2 2, 3 3, 4 4)',
            8307
         )
      );

因此,为了找到满足标准的所有多点,你可以使用类似的东西:

{{1}}

这假设多点不形成闭合多边形(即第一个点等于最后一个)。

我在我的示例中使用了SRID 8307,将其替换为您需要的。