整理一下postgresql的扩展功能postgis和pgrouting的使用
postgis windows的下的安装使用postgresql的bin目录下的stackbuiler
Ubuntu14.04下的安装:
apt-get install postgresql-9.3-postgis-2.1(也可以用apt-cache search postgresql postgis查找最新的版本)
postgis:
1.建表语句:
create table NODES (ID SERIAL not null,geometry geography(POINTZ, 4326) null); 字段geometry表示的是三维空间的点,二维的点将POINTZ改为POINT即可
create table EDGES (ID SERIAL not null,geometry geography(LINESTRINGZ, 4326) null); 字段geometry表示的是三维空间的线,同理,二维的将LINESTRINGZ改为LINESTRING即可
2.插入语句:
insert into nodes(geometry) values(ST_GeographyFromText('SRID=4326; POINT(-110 30 40)'));
insert into edges(geometry) values(ST_GeographyFromText('SRID=4326; LINESTRING(-110 30 40,11 22 33)'));
3.修改字段类型:
alter table public.nodes alter column geometry set data type geography(PointZ,4326);
4.查询语句:
select ST_AsText(geometry) from nodes;
select ST_AsText(geometry) from edges;
有关pgrouting:
1.Windows下的安装:
在官网下载和本机PostgreSQL对应版本的PGRouting,我这里的版本的PostgreSQL 9.2,这个版本可以使用的PGRouting对应版本是2.0。
下载PGRouing之后,可以看到里面有3个文件夹(bin、lib、share)和5个文件,以后可能会有变动,将这三个文件夹拷贝到PostgreSQL的安装目录下,和同名文件夹合并。
2.Ubuntu14.04下的安装:
sudo apt-get install postgresql-9.3-pgrouting(如果出现package not found的情况,则需要添加pgrouting的repository)
add pgrouting repository: sudo apt-add-repository -y ppa:ubuntugis/ppa
sudo apt-add-repository -y ppa:georepublic/pgrouting
sudo apt-get update
sudo apt-get install postgresql-9.3-pgrouting
3.让数据库支持pgrouting:
CREATE EXTENSION pgrouting;
4.pgrouting需要在edges中加入一些基本的字段
columns 'source', 'target' must be of type int4, 'cost' must be of type float8(也可以使用其他的字段名,使用内置函数查询的时候注意点就好了)
5.查询两个node之间的最短路径:
select * from pgr_dijkstra('select id as id,source::integer,target::integer,length::double precision as cost from edges',30,60,false,false);
该查询语句表示的是得到ID为30和60的node之间的最短路径,第四个参数指的是是否限制方向
注意!!!注意!!!
非常抱歉关于上面的字段geometry的数据类型的错误,需要将 geography 改为 geometry,同时需要将插入语句的 ST_GeographyFromText 改为 ST_GeomFromEWKT 或 GeomFromEWKT (geography 主要表示经纬度,x的范围是(-180,180),y的范围是(-90,90)),其他的不变
整理一下postgresql的扩展功能postgis和pgrouting的使用的更多相关文章
- 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划
前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...
- mac环境下安装posgreSQL,postGIS,pgrouting方法
费了九牛二虎之力,终于安装成功...都是mac的坑,好好的window环境多好,非要换mac环境,导致软件配置极其的麻烦,window的环境下配置会少很多事,自己惹的祸自己担着吧还是.换mac要慎重, ...
- 学习笔记之PostgreSQL / pgAdmin / Psycopg / PostGIS
PostgreSQL: The world's most advanced open source database https://www.postgresql.org/ POSTGRESQL: T ...
- Windows应用程序未响应
昨天在安装postgresql的扩展功能postgis的时候,stackbuilder刚打开就死掉,一直未响应,刚开始以为是内存的原因,后来发现并没有占用太多内存,最后打开vpn发现就可以了,原来是网 ...
- postgresql+postgis+pgrouting安装步骤图解
1.在此(https://www.bigsql.org/postgresql/installers.jsp/)下载postgresql(开源数据库,gis行业推荐使用); 2.在此(http://wi ...
- postgresql+postgis+pgrouting实现最短路径查询(1)---线数据的处理和建立拓扑
准备一个线shp数据,并将其导入postgres里面,postgres安装postgis和pgrouting两个插件(方法见http://www.cnblogs.com/nidaye/p/455352 ...
- PostgreSQL与PostGIS的关系
PostgreSQL相当于PostGIS的祖先,PostGIS是在PostgreSQL的基础上发展起来的,从它们的名字上也能看出些许端倪.PostgreSQL是一个开源数据库,而PostGIS在此基础 ...
- PostgreSQL数据库的安装与PostGIS的安装(转)
原文:http://lovewinner.iteye.com/blog/1490915 安装postgresql sudo apt-get install postgresql-9.1 postgre ...
- PostGIS pgrouting路径分析
--让数据库支持PostGIS和pgRouting的函数和基础表(安装后第一次使用时执行,以后都不再执行) CREATE EXTENSION postgis; CREATE EXTENSION pgr ...
随机推荐
- bzoj 2125 最短路——仙人掌两点间最短路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2125 因为看了TJ又抄了标程,现在感觉还是轻飘飘的……必须再做一遍. 两点间的情况: 1.直 ...
- Nuget:目录
ylbtech-Nuget:目录 1.返回顶部 1. https://www.nuget.org 2. https://docs.microsoft.com/zh-cn/nuget/ 3. https ...
- altium designer 中的top/bottom solder和top/bottom paste mask
转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/51751936 1.top solder为助焊层,说白一点就是说,有这个层的地方就没 ...
- [FATAL_ERROR] Uncaught PDOException: There is already an active transaction
[FATAL_ERROR] Uncaught PDOException: There is already an active transaction ... $mysql->beginTran ...
- linux日常管理-xarge_exec
在find搜索到文件之后再进行操作 exec是find的一个选项. {}表示前面搜索到的结果,\:是exec特殊的用法. xarge拥有同样的功能,需用选项 -i 可以用在其他命令的后面
- 使用SwingWorker为界面执行异步任务
------------------siwuxie095 工程名:TestSwingWorker 包名:com.siwuxie095.swing ...
- 单片机CY与OV的区别
CY(Carry): 用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则为0 OV: 表示运算过程中是否发生了溢出,若运算结果超过了8位二进制数所能表示数 ...
- 关于C/C++中的“auto”关键字
C/C++ 98标准 C++03标准 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期.此用法是多余的,因为即使定义变量时不加" ...
- 11、scala类型参数
一.类型参数1 1.介绍 类型参数是什么?类型参数其实就类似于Java中的泛型.先说说Java中的泛型是什么,比如我们有List a = new ArrayList(),接着a.add(1),没问题, ...
- sublime插件-OmniMarkupPreviewer浏览器打开报404解决办法
Sublime Text > Preferences > Package Settings > OmniMarkupPreviewer > Settings - Default ...