gis插入的文本怎么搞成两行_GIS算法:10_postgresql数据库与postgis

postgresql是对空间数据支持比较好的关系型数据库,postgis是它的空间计算拓展插件。

数据库与插件都是开源的。

e7720e3c0d017e14a09293ab404bb2a1.png

(加拿大是现代地理信息产业的发源地,时至今日,加拿大仍然活跃着许多GIS开源项目的开发者。)

412f6055c02c3c9849588dec8f058179.png

postgresql还有一些对GIS有用的拓展插件:pgrouting,用于路径规划;postgis_topology,基于postgis的拓扑套件;fuzzystrmatch,文本模糊匹配;postgis_tiger_geocoder,tiger英文地址编码;address_standardizer,地址标准化插件;pg-trajectory,时空检索插件。

postgis由OSGeo(开放地理信息联盟)维护,它的数据结构和算法设计,完全符合OGC的规范,postgis由C语言编写,它直接移植了C语言编写的GEOS空间算法库和GDAL数据处理库,因为它也包含Proj.4,所以它可以进行坐标系转换和空间投影,它还可以解析XML和JSON。

总之,GIS开发者需要的大部分空间算法与数据转换,postgis都能在postgresql数据库中实现。

postgis的官方网站:http://postgis.net/

官网上关于postGIS的介绍是:关系型数据库postgresql的空间拓展程序,增加了对地理对象的支持,允许在SQL中进行位置查询。

如何安装postgis见:http://postgis.net/install/

要是连postgresql都没有,那就看postgresql官网吧:https://www.postgresql.org/

安装好了之后,新建数据库,运行“CREATE EXTENSION postgis; ”进行拓展。

postgis安装后,可支持多个GIS相关扩展,postgis是支持空间运算的,postgis_raster支持基于影像数据的运算,postgis_topology支持数据拓扑,postgis_sfcgal支持三维数据计算……。

postgis新建包含空间数据字段的表语句:

CREATE TABLE mytable (
  id SERIAL PRIMARY KEY,
  geom GEOMETRY(Point, 4326),
  name VARCHAR(128)
);

添加空间索引的语句:

CREATE INDEX mytable_gix
  ON mytable
  USING GIST (geom);

插入一个点语句:

INSERT INTO mytable (geom) VALUES (
  ST_GeomFromText('POINT(0 0)', 4326)
);

查询距离范围内的点语句:

SELECT id, name,st_astext(geom)
FROM mytable
WHERE ST_DWithin(
  geom,
  ST_GeomFromText('POINT(0 0)', 4326,
  0.01
);

postgis的用户文档:http://postgis.net/docs/manual-3.0/

postgis支持的矢量函数列表:http://postgis.net/docs/manual-3.0/reference.html

栅格数据处理说明:http://postgis.net/docs/manual-3.0/using_raster_dataman.html

虽然是英文文档,但使用Chrome浏览器,一键翻译即可。

postgis函数很多,还支持聚类和轨迹处理,

70319cb980ea03415f1970da1a5297e5.png

5b74c55a49d26c17713fcd674c16da6a.png

一路看下来,postgis能满足大部分需求,即使有pg-trajectory专门处理时序数据的扩展,但它能实现的,用postgis也能实现,把时间戳当成m值就可以了。

剩下一个postgis没有办法实现功能的拓展就是路径规划拓展pgrouting了。用pgrouting部署一个路径规划服务,还是挺方便的,跟本文无关,先不讲了。

最好的参考资料,就是官方文档,postgis的文档写得非常详尽,有什么地方不清楚,直接查阅文档是最好的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值