postgis 判断一个表中的一些点 是否在某个区域内
时间: 2023-05-20 22:02:20 浏览: 121
可以使用 ST_Contains 函数来判断一个表中的点是否在某个区域内。具体的 SQL 语句如下:
SELECT *
FROM table_name
WHERE ST_Contains(geom_column, ST_GeomFromText('POLYGON((x1 y1, x2 y2, x3 y3, ..., x1 y1))'));
其中,table_name 是要查询的表名,geom_column 是存储点坐标的列名,POLYGON((x1 y1, x2 y2, x3 y3, ..., x1 y1)) 是要判断的区域的多边形坐标,可以根据实际情况进行修改。
相关问题
postgis 查询一个区域内的建筑物
好的,我可以回答这个问题。要查询一个区域内的建筑物,可以使用 PostGIS 的 ST_Contains 函数。首先,需要创建一个多边形表示查询区域,然后使用 ST_Contains 函数查询该区域内的建筑物。具体的 SQL 查询语句可以参考以下示例:
SELECT * FROM buildings
WHERE ST_Contains(
ST_GeomFromText('POLYGON((x1 y1, x2 y2, x3 y3, ..., x1 y1))'),
geom
);
其中,x1 y1, x2 y2, x3 y3, ... 表示多边形的顶点坐标,geom 表示建筑物的几何信息。
写一个sql脚本,在postgis的一个表中查出不重复的重叠面
好的,下面是一个简单的 SQL 脚本,用于在 PostGIS 中查找不重叠的重叠面:
```
SELECT DISTINCT a.geom
FROM table1 a, table1 b
WHERE ST_Intersects(a.geom, b.geom) AND a.id <> b.id AND NOT ST_Touches(a.geom, b.geom);
```
这个脚本的意思是,从表 table1 中选择不重叠的重叠面,其中 a.geom 和 b.geom 分别是两个表中的几何列,ST_Intersects(a.geom, b.geom) 表示两个几何体相交,a.id <> b.id 表示排除同一行,NOT ST_Touches(a.geom, b.geom) 表示两个几何体不相邻。使用 DISTINCT 关键字来排除重复结果。