1. 程式人生 > >基於postgresql+postGIS+QGIS+MapServer的WebGIS部署

基於postgresql+postGIS+QGIS+MapServer的WebGIS部署

      做一個停車場的專案,使用到了WebGIS技術來實現車場平面圖展示及車位裝置管理,記錄下從搭建WebGIS平臺到實現效果的過程。要實現WebGIS技術,有各種技術搭配,本專案使用的搭配是:postgresql+PostGIS+QGIS+Mapserver+Openlayers。

一、各技術關係

      先來理清一下這幾個的關係。Postgresql就是一個數據庫,但是它具備地理資訊處理擴充套件,從而可實現對地理資訊的儲存。PostGIS是postgresql資料庫的空間資料擴充套件模組,提供的空間資訊服務功能有:空間物件、空間索引、空間操作函式和空間操作符。PostGIS通過新增地理資訊物件,使postgresql資料庫能將空間幾何資料以資料表的形式進行儲存。如圖所示,

        

     PostGIS支援點、線、多邊形、多點、多線和多多邊形等空間資料型別。將停車場中相同物件資料存放在同一個圖層(shapefile)中,例如可分為裝置圖層、車點陣圖層等。不同的圖層儲存在postgresql中不同的資料表中。

     桌面地理資訊系統QGIS,將空間資料以PostGIS圖層的形式,即ShapeFile匯入PostgreSQL。QGIS用來處理Shapefile在PostGIS裡的匯入匯出和編輯。

    地圖伺服器MapServer是一個開源的基於胖伺服器端/瘦客戶端模式的實時地圖釋出系統,客戶端傳送資料請求時,伺服器端實時的處理空間資料,並將生成的資料傳送給客戶端。

    MapServer採用配置檔案方式管理地圖釋出,配置檔案被稱為Mapfile,字尾名為map。 

    MapFile檔案將各種地圖要素組織成具有層次關係的物件系統。資料來源,使用的資料格式,使用者互動和對OGC協議的支援也在MapFile中定義。Mapfile檔案可以手動編寫,也可以通過QGIS自動生成。

二、WebGIS部署

    你需要用到以下安裝包:

1、postgresql資料庫:postgresql-9.3.4-1-windows-x64.exe

2、postGIS空間資料擴充套件模組:postgis-bundle-pg93x64-setup-2.1.1-1.exe

3、Python:python-2.5.4.msi

4、QGIS桌面地理資訊系統:QGIS-OSGeo4W-2.2.0-1-Setup-x86_64.exe

5、MapServer地圖伺服器:ms4w_3.0.6.zip

  接下來一步步介紹安裝部署過程。

(1)postgresql資料庫安裝

1、開啟postgresql-9.3.4-1-windows-x64.exe,下一步

2、選擇安裝位置,可自定義,下一步


3、選擇資料儲存位置,建議預設值


4、設定密碼,使用者名稱預設為postgres(此處密碼需要與map檔案和程式系統引數中一致)


5、設定埠號,強烈建議不要更改


6、設定所在地,直接下一步


7、下一步


8、安裝完成(不需要點對勾)


Postgresql安裝完成後,會發現pgAdminⅢ這個軟體,這是postgresql自帶的圖形介面的資料庫管理工具。





(2)postgis的安裝

1、開啟postgis-bundle-pg93x64-setup-2.1.1-1.exe,接收協議


2、勾選Creat spatial database,下一步


3、選擇安裝路徑,需要與postgresql在相同目錄下


4、建立資料庫car_lot,如果更改為其他資料庫名字,需要修改map檔案和程式系統引數(此處忘記截圖)

5、等待安裝完成



(3)安裝python

1、開啟python-2.5.4.msi

2、選擇安裝路徑,強烈建議在此路徑下,否則需要修改程式中web.xml以及代理檔案中的路徑


3、下一步


4、等待安裝完成


(4)安裝QGIS

1、開啟QGIS-OSGeo4W-2.2.0-1-Setup-x86_64.exe

2、下一步

 

3、同意協議

 

4、選擇安裝位置,可自定義


5、選擇需要安裝的地理資料庫,直接下一步

 

6、等待安裝完成


(5)安裝地圖伺服器ms4w

1、 將ms4w_3.0.6.zip解壓至安裝路徑(建議路徑D:)

2、



3、開啟cmd,進入上圖的路徑,執行apache-install.bat,出現下圖則說明安裝成功


4、修改埠號,開啟D:\ms4w\Apache\conf下的httpd.conf,找到


將Listen改為改為其他埠號,請確保埠不衝突,並修改map檔案和地圖頁面

(5)將shp檔案匯入空間資料庫

1、  開啟QGIS Desktop 2.2.0.exe

2、選擇資料庫->SPIT工具->將shp檔案匯入到postgresql

 

2、  新建連線

3、輸入基本資訊(x為勾選)


4、測試連線是否可用

 

5、新增,選擇要插入的shp檔案


6、確定,插入資料

(6)資料拷貝

1、  將.map檔案和mapSymbol資料夾拷到D盤下(如更改位置需要更改程式設定)

2、 開啟map檔案,找到


修改資料庫連線的密碼

有若干的地方需要修改

3、此處配置字型和符號的路徑,即mapSymbol的路徑


4、此處配置地圖伺服器路徑


(7)其他配置

1、  代理設定,當客戶端與瀏覽器不在同一臺電腦,需要通過ip訪問時,或者在同一臺電腦,但是在不同埠時,都涉及到跨域問題,需要修改此處

開啟D:\tomcat\tomcat-7.0.54\webapps\ParkingSpaceManage\WEB-INF\cgi下的proxy.cgi,找到


在allowedHosts下加入地圖伺服器的地址和埠號。

三、用瀏覽器訪問地圖服務

輸入網址

http://localhost:8080/cgi-bin/mapserv.exe?MAP=D:/gzpark.map&LAYERS=ALL&MODE=MAP

    地圖出來說明部署成功了,以後再介紹用openlayers呼叫在mapserver釋出的WMS(Web Map Service)和WFS(Web Feature Service)服務