PostgreSQL及PostGIS使用
基础知识
参考文档:http://www.postgis.net/docs/
PostGIS支持的GIS对象是OpenGIS Consortium(OGC)定义的“简单特征”的超集。OpenGIS规范定义了两种表达空间对象的标准方法:the Well-Known Text (WKT) form and the Well-Known Binary (WKB) form。WKT和WKB都包括有关对象类型和形成对象的坐标的信息。
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))
OpenGIS规范还要求空间对象的内部存储格式包括空间参考系统标识符(SRID)。创建空间对象以插入数据库时,需要SRID。下面的接口可以转换:
bytea WKB = ST_AsBinary(geometry);
text WKT = ST_AsText(geometry);
geometry = ST_GeomFromWKB(bytea WKB, SRID);
geometry = ST_GeometryFromText(text WKT, SRID);
例如,向geotable表插入数据:
INSERT INTO geotable ( the_geom, the_name )
VALUES ( ST_GeomFromText('POINT(-126.4 45.32)', 312), 'A Place');
SRID/geometry和geography
空间参考标识符 (SRID) :是与特定坐标系、容差和分辨率关联的唯一标识符。
SRID 的填充方式及其所示含义取决于存储数据所用的数据库。目前有多种公认的标准 SRID,例如欧洲石油测绘组 (EPSG) 定义的 SRID。某些数据库和空间类型(如 PostgreSQL 中的 PostGIS 几何或 SQL Server 中的地理类型)使用预定义的 EPSG 代码子集,只可使用具有这些 SRID 的空间参考。其他情况下(如 Oracle、PostgreSQL、IBM DB2 和 Informix 中的 ST_Geometry 类型)可使用具有 Esri 定义的 SRID 的空间参考。
用得最多的是EPSG:4326球坐标,EPSG:3785的墨卡托投影坐标。
geometry:平面坐标系,支持平面对象也支持空间对象。
geography:地理坐标系,仅支持空间对象。
两种坐标系:
1、一种球坐标(地理坐标);地理坐标系(Geographic Coordinate System),是使用三维球面来定义地球表面位置,以实现通过经纬度对地球表面点位引用的坐标系。一个地理坐标系包括角度测量单位、本初子午线和参考椭球体三部分。在球面系统中,水平线是等纬度线或纬线。垂直线是等经度线或经线。
2、另一种平面坐标(投影坐标):投影坐标系 (Projection coordinatesystem)平面坐标系统地图单位通常为米 ,也称非地球投影坐标系统(notearth),或者是平面坐标。
无论使用哪种空间坐标系,测量返回的单位(ST_Distance,ST_Length,ST_Perimeter,ST_Area)和ST_DWithin的输入均以米为单位。
SQL语句,当未指定srid时,创建具有2D点地理的表默认为4326。
不指定srid:
CREATE TABLE ptgeogwgs(gid serial PRIMARY KEY, geog geography(POINT) );
指定srid:
CREATE TABLE ptgeognad2(gid serial PRIMARY KEY, geog geography(POINT,4269) );
geography(a,b)类型支持两个可选修饰符:一个类型修饰符,用于限制列中允许的形状和尺寸类型; SRID修饰符,用于将坐标引用标识符限制为特定数字。
类型修饰符的允许值为:POINT,LINESTRING,POLYGON,MULTIPOINT,MULTILINESTRING,MULTIPOLYGON。修饰符还通过后缀支持维度限制:Z,M和ZM。因此,例如,“LINESTRINGM”的修饰符只允许包含三维的线串,并将第三维视为度量。同样,'POINTZM'会期望四维数据。
创建表 带GEOGRAPHY column:
CREATE TABLE global_points (
id SERIAL PRIMARY KEY,
name VARCHAR(64),
location GEOGRAPHY(POINT,4326)
);
查看带GEOGRAPHY column的表:
SELECT * FROM geography_columns;
插入语句:
INSERT INTO global_points (name, location) VALUES ('Town', 'SRID=4326;POINT(-110 30)');
INSERT INTO global_points (name, location) VALUES ('Forest', 'SRID=4326;POINT(-109 29)');
INSERT INTO global_points (name, location) VALUES ('London', 'SRID=4326;POINT(0 49)');
创建索引:
CREATE INDEX global_points_gix ON global_points USING GIST ( location );
查询:
-- Distance calculation using GEOGRAPHY (122.2km)
SELECT ST_Distance('LINESTRING(-122.33 47.606, 0.0 51.5)'::geography, 'POINT(-21.96 64.15)'::geography);
-- Distance calculation using GEOMETRY (13.3 "degrees")
SELECT ST_Distance('LINESTRING(-122.33 47.606, 0.0 51.5)'::geometry, 'POINT(-21.96 64.15)'::geometry);
PostgreSQL及PostGIS安装和使用可以参考:https://blog.csdn.net/ljg124034929/article/details/70142119
PostgreSQL9.6+PostGIS2.3学习笔记(一)导入shp文件:https://blog.csdn.net/u013420816/article/details/53572085
PostgreSQL及PostGIS使用的更多相关文章
- ubuntu安装postgresql与postgis
版本信息 ubuntu 14.04.1LTS postgresql 9.3.5 postgis 2.1.2 今天尝试着安装了postgis 2.1.2,(较简便的包安装,不是源码 ...
- CentOS 6.9/7通过yum安装指定版本的PostgreSQL扩展PostGIS
一.安装PostGIS扩展插件(24_10) // 安装EPEL源 # rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-rele ...
- CentOS7使用yum安装PostgreSQL和PostGIS
更新yum源 CentOS7默认yum源的PostgreSQL版本过低,不适合在本版本上使用.在https://yum.postgresql.org/repopackages.php上找到适合Cent ...
- PostgreSQL与PostGIS安装使用时需要注意的坑
最近些许繁忙,没有时间系统整理PostgreSQL和PostGIS的安装和使用方法.所以就简单记录一下遇到的坑. 1.找不到 libintl-9.dll 我安装的PostgreSQL版本是11.7,P ...
- 与你相遇好幸运,Postgresql和postgis安装
笔者开发环境: windows 7 x86_64 一开始安装的是官网最新版 PostgreSQL 9.6 ,安装成功 之后安装PostGIS Bundle 2.2 for PostgreSQL x64 ...
- PostgreSQL 与 PostGIS
PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大.特性最丰富和最复杂的自由软件数据库系统.它起源于伯克利(BSD)的数据库研究计划,目前是最重要的开源数据库产 ...
- PostgreSQL与PostGIS的关系
PostgreSQL相当于PostGIS的祖先,PostGIS是在PostgreSQL的基础上发展起来的,从它们的名字上也能看出些许端倪.PostgreSQL是一个开源数据库,而PostGIS在此基础 ...
- ubuntu16.04搭建geodjango+postgresql+postgis的WebGIS框架(二))安装postgresql和postgis
卸载老版本sudo dpkg --purge postgis postgresql-9.3-postgis1.安装postgresql sudo apt-cache search postgresql ...
- centos7安装postgresql和postgis
1.安装步骤 -- 安装对应的rpm文件(其他系统的rpm包,请自行到https://yum.postgresql.org/下载)yum install -y https://download.pos ...
随机推荐
- ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第二天(非原创)
文章大纲 一.课程介绍二.整合淘淘商城ssm项目三.Mybatis分页插件PageHelper使用四.整合测试五.项目源码与资料下载六.参考文章 一.课程介绍 一共14天课程(1)第一天:电商行业 ...
- 自定义button上传按钮
<div class="upload_files"> <input type="file" class="upload_icon&q ...
- 迅速搞懂JavaScript正则表达式之方法
咱们来看看JavaScript中都有哪些操作正则的方法. RegExp RegExp 是正则表达式的构造函数. 使用构造函数创建正则表达式有多种写法: new RegExp('abc');// /ab ...
- 生产者-消费者中的缓冲区:BlockingQueue接口
BlockingQueue接口使用场景相信大家对生产者-消费者模式不陌生,这个经典的多线程协作模式,最简单的描述就是生产者线程往内存缓冲区中提交任务,消费者线程从内存缓冲区里获取任务执行.在生产者-消 ...
- Linux之基础命令——文件操作
ls(显示指定工作目录下的内容) -a 显示所有文件及目录 包括隐藏文件 -l 除文件名称外,还会将文件类型.权限.拥有者.文件大小等信息详细列出[可以ll简写] -r 将文件以相反次序显示(默认是a ...
- cf536b——优先队列的运用
题目 题目:cf536 B题 题目大意:一个饭店有n种食物,每种食物有对应的价格和数量,然后有m个顾客,每个顾客需要$d_j$份第$t_j$种食物,如果该种食物数量不够,则选其它尽可能便宜的代替(出现 ...
- 关于Maven项目的pom.xml中的依赖或插件失效的解决方法
1.请将<dependency>标签包含的依赖从<dependencyManagement>中拿出来,单独放在<dependencies>标签里面.2.请将< ...
- 20面向对象三特征 之继承 方法重写 super
继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过extends关键词去让原来的类和新类产生继承关系,子类只能拿到父类一部分信息.通过extends关键词去指明类与类之间的关系,一个父类可 ...
- Perl语言入门:第七章习题:输出文件中包含一个大写字母的所有行,不输出一行的内容全是大写的
文件内容: bash-2.03$ cat file_4_ex_ch7.txt anonymous attribute demolition grammar rules indices refernce ...
- 硕毕论文_基于 3D 卷积神经网络的行为识别算法研究
论文标题:基于 3D 卷积神经网络的行为识别算法研究 来源/作者机构情况: 中 国 地 质 大 学(北京),计算机学院,图像处理方向 解决问题/主要思想贡献: 1. 使用张量CP分解的原理, ...