随记------postgresql篇
需求:查询表中数据与某个范围相交的部分,利用相交部分进行后期操作
思路:首先查询是否存在相交,若不相交,则不用进行后期操作。
方法:sql语句查询是否相交,结果返回的是每条记录是否与范围相交
1.对查询结果进行二次查询
SELECT 列名... FROM (查询语句) 表名 WHERE 条件
SELECT
st_intersects AS st_intersects
FROM
(
SELECT
st_intersects ( ST_Transform ( ST_MakeEnvelope ( 101.953125, 26.43122806450644, 102.65625, 27.059125784374068, 4326 ), ST_SRID ( geom ) ), geom )
FROM
table_name
) A
WHERE
st_intersects = 't'
2.几何函数
ST_MakeEnvelope(xmin,ymin,xmax,ymax,srid) 根据最小最大经纬度和坐标系构建一个矩形范围
ST_extent(geom) 获取几何图形的范围
ST_SRID(geom) 获取几何图层的空间参考ID
ST_Transform(geom,空间参考ID) 将输入的geom转换为输入的空间参考的值
st_intersects(geom,geom)判断两个几何对象是否相交