標籤:integer 2.0 整理 har blog set 之間 sha 目錄
postgis的安裝使用postgresql的bin目錄下的stackbuiler
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.讓資料庫支援pgrouting:
CREATE EXTENSION pgrouting;
3.pgrouting需要在edges中加入一些基本的欄位
columns ‘source‘, ‘target‘ must be of type int4, ‘cost‘ must be of type float8(也可以使用其他的欄位名,使用內建函數查詢的時候注意點就好了)
4.查詢兩個node之間的最短路徑:
select * from pgr_dijkstra(‘select id as id,source::integer,target::integer,length::double precision as cost from edges‘,30,60,false,false);
整理一下postgresql的擴充功能postgis和pgrouting的使用