第4章 空间结构化查询语言

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


支持OpenGIS中所有空间数据类型

POINT, LINESTRING, POLYGON, MULTI-POINT, MULTI-LINESTRING, MULTI-POLYGON, GEOMETRY COLLECTION
二、 PostGIS概述

PostGIS遵循OpenGIS的规范
PostGIS支持所有的对象表达方法,如WKB和 WKT。 支持所有的数据存取和构造方法 提供空间分析函数 提供对元数据的支持及其相关的访问函数 提供了一系列用于检测空对象之间的空间关系 二元谓词 提供空间操作符用于空间数据操作

OpenGIS Simple Features Specification for SQL, Revision1.1

select * from test1; select myID,ST_AsText(Geom) from test1;
五、 PostGIS读写数据

读写PostGIS目前主要有以下四种方式:

2 .使用一些小工具


有两个很有用的小的转换工具,一是shp2pg;一是ogr2ogr。 (1)shp2pgsql和pgsql2shp shp2pgsql和pgsql2shp是PostGIS自身携带的一对在 Shape文件和PostGIS数据库之间进行转换的工具。 使用范围有限,只针对Shape文件格式 (2) ogr2ogr ogr是转换矢量GIS数据的软件库。(MapTolols) 目前ogr能够支持的数据格式包括: Arc/Info Binary Coverage、DWG、ESRI Personal GeoDatabase、ArcSDE、ESRIShapefile、GML、 GRASS、Mapinfo File、Microstation DGN、ODBC、 Oracle Spatial和PostgreSQL等。应该说,这就基本 包括了我们平常用到的所有矢量型 GIS文件格式了。
3
一、PostgreSQL概述
在PostgreSQL中已经定义了一些基本的 集合实体类型,这些类型包括:点 (POINT)、线(LINE)、线段 (LSEG)、方形(BOX)、多边形 (POLYGON)和圆(CIRCLE)等; PostgreSQL定义了一系列的函数和操作 符来实现几何类型的操作和运算; PostgreSQL引入空间数据索引R-tree。
16 字节 空间中一点 32 字节 直线 32 字节 线段(只有两个点)
32 字节 长方形 16+16n path 闭合路径(与多边形类似) 字节 16+16n path 开放路径 字节 40+16n polygon 多边形(与闭合路径类似) 字节 circle 24 字节 圆(圆心和半径)
四、PostGIS空间数据类型

四、PostGIS空间数据类型
geometry 几何类型 geometry[] 几何数据类型数组 geometry set 几何数据类型的集合 raster 栅格类型 setof geomval 几何对象与值的集合:用 于返回几个对象及与该几何对象对应的栅 格值。 text 文本类型 Varchar 相当于CLOB,表示一个可变长 的文本描述,7.1后改为character varying.
三、 PostGIS拓展功能

栅格数据类型 PostGIS通过一种新的数据类型——片, 提供对于大的栅格数据对象的存储。 片由以下几个部分组成:包裹矩形框、 SRID、类型和一个字节序列。通过将 片的大小控制在数据库页值(32×32) 以下,使得快速的随即访问变成可能。 一般大的图片也是通过将其切成32×3 2像素的片然后再存储在数据库中的。

PostGIS遵循OpenGIS的规范
http://postgis.refractions.net,最新版本1.4.0 基于空间对象库GEOS和空间投影库PROJ.4开发 支持桌面GIS软件:GRASS, QGIS, uDig, JUMP 支持中间件服务器:MapServer, GeoServer等 支持开发库:GeoTools, OGR ESRI ArcGIS 9.3支持PostGIS空间数据类型
五、 PostGIS读写数据
C:\Program Files (x86)\PostgreSQL\9.2\bin\shp2pgsql.exe C:\Program Files (x86)\Quantum GIS Lisboa\bin\ogr2ogr.exe

20
五、 PostGIS读写数据

读写PostGIS目前主要有以下四种方式: 3. 在其他GIS软件中读写PostGIS数据 比如在QGIS中,能够打开PostGIS图 层,还有SPIT插件可以把Shape文件输 入到PostGIS数据库中。 其他GIS软件如uDig,Grass等,甚至 连ArcInfo都支持或部分支持读写 PostGIS数据。
五、 PostGIS读写数据
五、 PostGIS读写数据

读写PostGIS目前主要有以下四种方式: 4. 利用接口在应用程序中读写PostGIS数 据 广大的开源GIS程序员几乎为每一种程 序设计语言设计好了读写PostGIS的接 口,如利用PostgreSQL的JDBC库,可 以使用Java语言在程序中读写PostGIS 数据;利用libpq库,可以使用C语言 读写PostGIS数据。

四、PostGIS空间数据类型



除了OpenGIS定义的地理数据类型之外,PostGIS还 对数据类型进行了扩展,这种扩展主要是两方面的扩 展: 一是把二维的数据向三维和四维扩展; 二是在WKT和WKB数据类型基础上扩展出EWKT和 EWKB数据类型。 EWKT, EWKB(包含了SRID信息的WKT/WKB) SRID(Spatial Referencing System Identifier):每个 空间实例都有一个空间引用标识符 (SRID)。SRID 对应于基于特定椭圆体的空间引用系统,可用于平 面球体映射或圆球映射。空间列可包含具有不同 SRID 的对象。
Spatial Data Type WKT as defined by the OGC

Examples of WKT: POINT(0 0) LINESTRING(0 0,1 1,1 2) POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) MULTIPOINT(0 0,1 2) MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1))) GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4))
PostgreSQL 支持的几何类型
名字 point line lseg box 存储空 间 描述 表现形式 (x,y) ((x1,y1),(x2,y2)) ((x1,y1),(x2,y2)) ((x1,y1),(x2,y2)) ((x1,y1),...,( xn,yn),(x1,y1)) [(x1,y1),...] ((x1,y1),...) <(x,y),r>(圆心与 半径)
table PROF ( PNO char[10], PNAME char(20) not null, SAL int, AGE int, DNO char[10], primary key (PNO), foreign key (DNO) references DEPT(DNO), check (SAL > 0))
4.2 SQL概述
SQL功能 数据查询 数据定义 数据操纵 数据控制 操作符 SELECT CREATE,DROP INSERT,UPDATE,DELETE GRANT,REVOKE
基本表的定义

基本表的定义(CREATE) 格式
create table 表名(
列名 数据类型 [default 缺省值] [not null]
Байду номын сангаас
三、PostGIS拓展功能
数据库坐标变换 数据库中的几何类型可以通过ST_Tra nsform函数从一种投影系变换到另一 种投影系中。 球体长度运算 存储在普通地理坐标系中的集合类型 如果不进行坐标变换是无法进行程度 运算的,OpenGIS所提供的坐标变换 使得积累类型的程度计算变成可能。
五、 PostGIS读写数据

读写PostGIS目前主要有以下四种方式:

1. 使用psql语言
Psql语言是PostgreSQL内嵌的一个命令行工 具,其语法基本上和标准的SQL语法是一致 的,可以使用Psql工具,结合标准SQL语法 和一些PostGIS的扩展对PostGIS数据库进行 读写操作。 这种方式功能强大,但全部需要手工操作, 烦琐且繁重。

一、PostgreSQL概述
尽管在PostgreSQL提供了上述几项支持 空间数据的特性,但其提供的空间特性 很难达到GIS的要求,主要表现在: 缺乏复杂的空间类型; 没有提供空间分析; 没有提供投影变换功能。为了使得 PostgreSQL更好的提供空间信息服务, PostGIS应运而生。
[,列名 数据类型 [default 缺省值] [not null]] …… [,primary key(列名 [,列名] …)] [,foreign key (列名 [,列名] …) references 表名 (列名 [,列名] …)] [,check(条件)])
基本表的定义

示例
create
空间数据库技术
李瑞改
1
第4章 空间结构化查询语言
4.1 PostgreSQL/PostGIS介绍 4.2 SQL基础 4.3 矢量数据的定义与操纵

2
4.1 PostgreSQL/PostGIS介绍

PostgreSQL的前身是1986 年由加州伯克利分校的 Michael Stonebraker教授 领导的Postgres项目开发的 对象关系型数据库系统。 这个项目的成果非常显著, 在现代数据库的许多方面 都作出了大量的贡献。

三、 PostGIS拓展功能


三维的几何类型 ◦ SFSQL规范只是针对二维几何类型。OpenGIS提供了对 三维几何类型的支持,具体是利用输入的集合类型维数来 决定输出的表现方式。例如,即便所有几何对象内部都以 三维形式存储,纯粹的二维交叉点通常还是以二维的形式 返回。此外,还提供几何对象在不同维度间转换的功能。 空间聚集函数 ◦ 在数据库中,聚集函数是一个执行某一属性列所有数据操 作的函数。比如Sum和Average,Sum是求某一关系属性 列的数据总和,Average则是求取某一关系属性列的数据 平均值。与此对应,空间聚集函数也是执行相同的操作, 不过操作的对象是空间数据。例如聚集函数ST_Extent返 回一系列要素中的最大的包裹矩形框。
二、PostGIS概述
PostGIS是Refractions Research公司研发的 对象关系型数据库系统PostgreSQL的一个 扩展。 PostGIS提供如下空间信息服务功能:空间 对象、空间索引、空间操作函数和空间操 作符。 PostGIS遵循OpenGIS的规范。

二、 PostGIS概述
boolean 布尔类型,t(真)或f(假) box2d 矩形框,由矩形框左下角、右上角坐 标组成,如box2d(0 0,5 5) box3d 长方体类型,由长方体左前下角和右 后上角坐标组成,如box3d(0 0 0,5 5 5) bytea 相当于BLOB类型,表示一个可变长的 二进制值。 int4 最大显示宽度为4字节的整型, PostgreSQL 7.1之后的版本将其改为integer。 float8 最大显示宽度为8字节的浮点型,后改 为double precision。
相关文档
最新文档