瀚高数据库

目录

环境

文档用途

详细信息


环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 7

版本:14


文档用途

系列性的介绍PostGIS及GIS周边的相关资料,本文介绍PostGIS简单使用


详细信息

 · 登录数据库:

[postgres@localhost ~]$ psql postgres postgres


 · 创建postGIS扩展:

postgres=# create extension postgis;

 · PG中创建扩展时,可以指定创建在哪个模式下,默认是public:

postgres=# \dx
                                 List of installed extensions
    Name   | Version  |   Schema   |                        Description            
  ---------+----------+------------+------------------------------------------------------------
  plpgsql | 1.0      | pg_catalog | PL/pgSQL procedural language
  postgis | 3.2.2dev | public     | PostGIS geometry and geography spatial types and functions


上面是已经包含的扩展。

  · postgis扩展会在public下创建表spatial_ref_sys,和视图geography_columnsgeometry_columns

    spatial_ref_sys是坐标系汇总表,srid字段是坐标系名称代码,srtext字段是可以称为坐标系名称及定义;比较常用的坐标系有:WGS 84,国际上通用,代码4326;国内有些要求使用China Geodetic Coordinate System 2000CGCS2000),又称中国大地坐标系统,代码4490

    geometry_columns:对当前数据库下的geometry字段的汇总,包括:其所在的数据库、模式、表、字段名称、维度、坐标系、几何类型。可以看作主要是平面类型。

    geography_columns:对当前数据库下的geography字段的汇总,主要是地理(球面)类型。


1、 创建表

CREATE TABLE roads (
   id SERIAL PRIMARY KEY,
   name VARCHAR(64),
   geom geometry(LINESTRING,3005)
  );
  CREATE TABLE global_points (
   id SERIAL PRIMARY KEY,
   name VARCHAR(64),
   location geography(POINT,4326)
  );


3005、4326都是坐标系代码,不指定会默认给一个坐标系,一般是4326。

 

 2、创建几何表示例

   · 使用默认 SRID 创建一个包含任何类型的几何图形的表:

     CREATE TABLE geoms(gid serial PRIMARY KEY, geom geometry );

   · 使用默认 SRID 创建具有 2D POINT 几何图形的表:

     CREATE TABLE pts(gid serial PRIMARY KEY, geom geometry(POINT) );

   · 创建一个具有 3D (XYZ) POINT 和显式 SRID 为 3005 的表:

     CREATE TABLE pts(gid serial PRIMARY KEY, geom geometry(POINTZ,3005) );

   · 使用默认 SRID 创建具有 4D (XYZM) 线串几何图形的表:

     CREATE TABLE lines(gid serial PRIMARY KEY, geom geometry(LINESTRINGZM) );

   · 使用 SRID 4267(NAD 1927 长纬度)创建具有 2D 多边形几何图形的表:

     CREATE TABLE polys(gid serial PRIMARY KEY, geom geometry(POLYGON,4267) );

   · 一个表中可以有多个几何列。这可以在创建表时指定,也可以使用 ALTER TABLE SQL 语句添加列。本示例添加一个可以保存 3D 线串的列:

     ALTER TABLE roads ADD COLUMN geom2 geometry(LINESTRINGZ,4326);


 3、提供的函数:

   函数数量太多,下面列出几个函数分类:

  · 表管理函数,例如:返回几何字段的坐标系;增加几何字段

  · 几何构造函数,例如:使用坐标创建点

  · 几何体访问函数,例如:返回几何图形的边界

  · 几何编辑函数,例如:向线中加一个点

  · 几何验证,例如:验证几何图形是否有效

  · 空间参考系统函数,例如:给几何图形设置坐标系

  · 几何输入:

    WKT(Well-Known Text),从文本构建几何类型

    WKB(Well-Known Binary),从二进制构建几何类型

    从其他格式构建集合类型,例如:从geojson输出 PostGIS 几何对象

  · 几何输出,与几何输入相反

  · 拓扑关系,例如:计算两个几何图形是否相交

  · 距离关系,例如:计算点是否在定义的圆内

  · 测量功能,例如:计算多边形的面积

  · 覆盖函数,例如:计算两个几何图形相交(不相交)的部分

  · 几何处理,例如:计算几何图形的几何中心

  · 仿射变换,例如:围绕原点、X、Y、Z轴旋转几何图形

  · 边界框函数,例如:返回几何图形的X、Y、Z的最大最小值

  · 线性参照,例如:截取线的一部分

  · 版本函数,返回依赖库的版本


 4、相关扩展:

  · postgis:核心,所有扩展的基础

  · postgis_raster:栅格数据功能,postgis自带

  · postgis_topology:拓扑功能,postgis自带

  · postgis_tiger_geocoder:(postgis自带)对TIGER数据的地理编码功能,依赖fuzzystrmatch(字符串模糊查询,pg自带)扩展,以及address_standardizer(提供地址标准化功能,可选,,postgis自带)、address_standardizer_data_us(地址标准化示例数据集,可选,postgis自带)Extension。TIGER(Topologically Integrated Geographic Encoding And Reference,拓扑集成的地理编码和参考)是美国人口普查局的GIS开放数据,提供了美国全国的行政区划、交通道路、水系等空间数据。

  · postgis_sfcgal:主要是集成了CGAL(Computational Geometry Algorithms Library,计算几何算法库),提供三维空间数据的空间运算;自行安装

  · pgrouting:提供“路径规划”功能;自行安装

  · ogr_fdw:利用OGR读取外部的GIS数据(例如Shepfile);自行安装

  · pointcloud:点云数据支持,很火的无人驾驶有可能就用到了此技术;自行安装


  · postgis安装完后提供的命令行工具有:pgsql2shp,raster2pgsql,shp2pgsql

 

 5、相关工具:

  · ArcGis,不支持高版本的PG

  · SuperMap,国内,可以网络授权

  · QGIS,开源,对标ArcGis

  · GeoScene,利用ArcGis技术开发国内的GIS工具

  · GDAL,栅格和矢量地理空间数据格式的转换库,还带有各种有用的命令行实用程序,用于数据转换和处理

  · GeoServer,GIS WEB服务