注:a.以下安装皆指windows系统 b.只要安装了postgis,pgrouting自带就安装上了
一。postgresql版本10.9,posttgis版本2.5,pgrouting版本2.6(三者版本必须对应!!!)
--查看postgresql版本
show server_version;
--查看postgis版本
SELECT PostGIS_full_version();
--查看pgrouting版本
select pgr_version();
二。安装文件下载地址(点我下载),提取码:j2f8,下载文件名称:postgresql-10.9-2-windows-x64.exe,postgis-bundle-pg10x64-setup-2.5.2-1.exe
三。windows7,windows8安装参考 https://blog.csdn.net/antma/article/details/83579920
四。windows10安装步骤如下
注:很大概率会报错:
Problem running post-install step. Installation may not complete correctly. The database cluster initialisation failed.
原因:由于权限等问题,在初始化数据库的时候,报错,进而使数据进入不了data目录下
网上看了好多文章,尝试了好多次,各种卸载,各种重装都不行,最后一个不小心,搞定了!!!
核心:其实最主要的还是因为windows10权限控制的问题,导致写入data目录的时候,写入不了,所以解决思路肯定要围绕权限做文章
下面是笔者安装的过程和心得,供大家参考:
a.新增postgres用户,并设置密码(一定要设置,不然切换用户执行cmd的时候会报错),注意:这点很重要!!!
b.在上面第四大点,4-1安装失败的基础上,给文件赋值权限,注意:上述postgresql安装报错的不用管,不要卸载,赋值权限完再次安装!!!
先看下我之前安装失败的postgresql的目录
根目录:PostgreSQL
注:综上所述,必须要给PostgreSQL,10,data三个目录赋值所有用户所有权限(为了保险起见,就这么做,多花个几分钟而已!!!我之前只给根目录PostgreSQL赋值权限,来来回回失败了好多次)
赋值权限过程:
注:1.必须添加postgres用户 2.必须所有用户都取得完全权限 3.必须是PostgreSQL,10,data三个目录都这样操作(麻烦就麻烦点吧,能解决问题这点麻烦算啥)
给文件赋值完权限之后,必须重启电脑才能生效!!!
c.重装 这次是以postgres用户重装,之前说了postgres用户要设置密码,在这边就能体现
one.用postgres用户运行cmd runas /user:postgres cmd.exe
two.在新打开的cmd命令中运行安装文件:postgresql-10.9-2-windows-x64.exe
three.因为之前已经安装过,这次安装只要选择存放数据库data路径即可。注:必须选择之前存放数据库的目录!!!(权限已经赋值过了)
four.然后,然后,终于成功了!!!哭~
4-2.安装postgis(postgis安装完,自动pgrouting)
在上述所说的用postgres用户运行的窗口中,运行postgis-bundle-pg10x64-setup-2.5.2-1.exe,安装还是参考上述所说的windows7,windows8安装方式正常安装 https://blog.csdn.net/antma/article/details/83579920
4-3.校验
create DATABASE djys_test;
--添加支持
CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
--查看postgresql版本
show server_version;
--查看postgis版本
SELECT PostGIS_full_version();
--查看pgrouting版本
select pgr_version();
--postgis 空间数据创建和查询(线)
create table EDGES (ID SERIAL not null,geometry geography(LINESTRINGZ, 4326) null);
insert into edges(geometry) values(ST_GeographyFromText('SRID=4326; LINESTRING(-110 30 40,11 22 33)'));
select ST_AsText(geometry) from edges;
来源:oschina
链接:https://my.oschina.net/u/4354403/blog/3429960