我总是得到4分,我想查询多点定义的多边形是否包含这4个点。我正在使用PostGIS和Postgres。
我也在为此目的使用OGR / GDAL。有人会为此向我提供使用SQL的查询。
答案 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,将其替换为您需要的。