PostGIS2

postgis 是postgresql数据库一个支持管理、存储、操作地理对象一个插件,具有三个明显性特征空间类型、空间索引、空间函数。

1.简单查询

示例数据:美国纽约街道人口普查数据

1.1查询人口大于5000普查区域

SELECT * FROM nyc_census_blocks_2000
WHERE popn_total > 5000 ;

1.2计算总人口

SELECT sum(popn_total)as population FROM nyc_census_blocks_2000

1.3计算平均值

SELECT avg(popn_total)as population FROM nyc_census_blocks_2000

1.4计算白人占总人口的百分比

SELECT
	boroname,100*SUM(popn_total)/sum(popn_total) as white
FROM 
	nyc_census_blocks_2000
GROUP BY
	boroname;

2.几何计算

示例数据 某城市数据

 2.1使用st_area函数计算某行政区面积

SELECT
	st_area(geom) as Area
FROM
	wuhan
WHERE
	NAME = '江夏区';

2.2使用st_length函数计算道路长度

SELECT
	st_length(geom) as le
FROM
	street
WHERE
	NAME = '红旗大道';

2.3查看地理对象的结构

SELECT
	NAME,
	st_geometrytype (geom),
	st_ndims (geom),
	st_srid (geom)
FROM
	bank
WHERE
	NAME LIKE '%邮政%'

2.4返回wkt文本

select st_astext(geom)
from hotel

3.空间连接

示例数据 某城市数据

3.1.全外连接:查询两个表全部数据

SELECT
	*
FROM
	bank
FULL JOIN enping ON bank.gid = enping.gid


3.2 内连接:查询两个表的字段名称相同的数据

SELECT
	*
FROM
	bank
INNER JOIN enping ON bank.gid = enping.gid


3.3 左外连接:查询左表加上右表字段名称相同数据

SELECT
	*
FROM
	bank
LEFT OUTER JOIN enping ON bank.gid = enping.gid

3.4右外连接:查询右表加上左表字段名称相同数据

SELECT
	*
FROM
	bank
RIGHT OUTER JOIN enping ON bank.gid = enping.gid


3.5 左链接:只查询左表存在的数据

SELECT
	*
FROM
	bank
LEFT JOIN  enping ON bank.gid = enping.gid


3.6右连接:只查询右表存在的数据

SELECT
	*
FROM
	bank
RIGHT JOIN enping ON bank.gid = enping.gid


4.空间关系
示例数据 某城市数据 设置好srid
空间关系相交、相等、包含、距离(相邻)
4.1查询两个对象相等:st_equals()测试两个几何的空间相等性

SELECT
	*
FROM
	bank
JOIN  enping ON st_equals( bank.geom, enping.geom)

4.2查询两个对象相交:st_intersects,st_crosses,st_overlaps测试两个几何内部相交,st_disjoint()反之两个几何不相交

SELECT
	*
FROM
	sub
JOIN  enping 
ON  st_intersects(sub.geom, enping.geom)

select *
from school
JOIN enping
on st_disjoint(school.geom,enping.geom)

4.3查询对象之间存在是否包含关系st_contains()

select * FROM enping
JOIN school on st_contains(enping.geom,school.geom)

4.4计算两个点之间的距离st_dwithin()

SELECT
	*
FROM
	sub
JOIN school ON st_dwithin (sub.geom, school.geom, 100)

5.空间索引
空间索引是在空间数据量非常之大的时候体现出来的优势,如果没有空间索引去查找每个记录的话去只能按顺序查找。r-tree是用于空间访问方法的树数据结构,即用于索引地理坐标、矩形或多边的多维信息。

CREATE INDEX sp ON supermarket USING GIST(geom);

R-Tree将数据分解成矩形,子矩形和子子矩形等。它是自动调整索引结构,可自动处理可变数据密度和对象大小,
具体了解原理请google!


6.空间投影

前面我们计算两个点之间距离是对数据进行过投影,不然话是计算不出来实际距离。使用st_transfrom()函数

select st_transform(geom, 4326) from wuhan

参考资料

http://workshops.boundlessgeo.com/postgis-intro/

http://postgis.net/docs/manual-2.3/


转载自:https://blog.csdn.net/wywywywywywy123456/article/details/72639291

You may also like...