注: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;