google-code-prettify

顯示具有 GIS 標籤的文章。 顯示所有文章
顯示具有 GIS 標籤的文章。 顯示所有文章

星期五, 2月 14, 2020

【GIS】MapWinGIS ocx 建置

口白:
流動的水沒有形狀,漂流的風找不到蹤跡,任何案件的 Coding 都取決於心
唯一看透真相的是,外表看似卜朧共,智慧卻低於常人的 名卜朧共 刻爛
(謎之音:把 Code 刻到爛簡稱刻爛.爛..爛...)
Music:
#表升半音 []表高八度
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 5 4 3 4 2 6 4 5 [2] [1] #6 6 5 6
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 4 3 2 4 2 6 4 5 [2] #6 6 5 6
口白:
刻爛:真実はいつも一つ!

流程主軸:
1. 下載檔案( MapWinGIS V5.1.1、gdal and mapserver 需選擇對應開發工具及版本)
2. 環境說明
2.1 基礎環境
2.2 必要安裝
3. 原碼編譯
3.1 解壓縮
3.2 編譯 SupportLibs
3.3 編譯 MapWinGIS

1. 下載檔案
下載 MapWinGIS V5.1.1


下載  GDAL and Mapserver
有分 64bit  or 32bit  版本並且有對應開發工具 MSVC 2017 與 MSVC 2015 等等版本,
依據開發工具對應下載吧

使用 VS2015
release-1900-gdal-2-4-2-mapserver-7-4-0.zip、
release-1900-gdal-2-4-2-mapserver-7-4-0-libs.zip
使用 VS2017、VS2019(2017 老子不爽裝,2019 硬幹啦)
release-1911-gdal-2-4-2-mapserver-7-4-0.zip、
release-1911-gdal-2-4-2-mapserver-7-4-0-libs.zip
(有很多對應版本,只測成功過VS2015 x86 對 1900;VS2019 對 1911)

在 [Tutorial] Compiling MWGis in VS2017 有說了一段話
所以,只測過 32bit 版本囉(謎之音:有病嗎?頻寬很多嗎?抓那麼多檔案是有收集癖)

2. 環境說明
2.1 基礎環境
作業系統:Windows 10 64Bit
開發工具:Microsoft Visual Studio Enterprise 2019
2.2 必要安裝
安裝完 Visual Studio 2019 後,使用 Visual Studio Installer 安裝環境
需要安裝 【.NET 桌面開發】
【使用 C++ 的桌面開發】 需要 v142 建置工具的 C++ MFC(x86 & x64...)
【使用 C++ 的桌面開發】 需要 Windows 10 SDK (10.0.17...)

3. 原碼編譯
3.1 解壓縮
分別解壓縮兩個壓縮檔
release-1900-gdal-2-4-2-mapserver-7-4-0.zip
release-1900-gdal-2-4-2-mapserver-7-4-0-libs.zip

release-1911-gdal-2-4-2-mapserver-7-4-0.zip
release-1911-gdal-2-4-2-mapserver-7-4-0-libs.zip

Visual Studio 2015 對的版本號是 v140( MapWinGIS-4.9.3.6编译方法 ) ;
Visual Studio 2017 對的版本號是 v141( youtube 上是這樣教的);
Visual Studio 2019 對的版本號是 v142(嘗試把v142目錄建立起來,編譯是成功的)
將 release-1900-gdal-2-4-2-mapserver-7-4-0 壓說檔內的 bin 資料夾的檔案複製到
MapWinGIS-5.1.1.1\support\GDAL_SDK\v140\bin\win32\ 資料夾中



將 release-1900-gdal-2-4-2-mapserver-7-4-0-libs 壓說檔內
include 資料夾的檔案複製到
MapWinGIS-5.1.1.1\support\GDAL_SDK\v142\include\win32\ 資料夾中

lib 資料夾的檔案複製到
MapWinGIS-5.1.1.1\support\GDAL_SDK\v142\lib\win32\ 資料夾中


3.2 編譯 SupportLibs
以管理員身份使用 VS2019 打開 MapWinGIS-5.1.1.1\support\ 資料夾裡的 SupportLibs.sln
編譯 cqlib.lib 和 spatialindex-mw.lib

在【解決方案】上,按右鍵  打開【屬性】 設定界面,將【通用屬性】中的【起始專案】
改成多個啟始專案

在【解決方案】上,點選它,然後點選【屬性】頁籤,
將【使用中的組態】的屬性改成 Release|Win32

完成以上設定後,就可以按下 F6  來建置方案
建置完成就會產生 spatialindex-mw.lib、cqlib.lib

3.3 編譯 MapWinGIS
以管理員身份使用 VS2019 打開 MapWinGIS-5.1.1.1\src 資料夾裡的 MapWinGIS.sln
修改 AngleHelper.cpp 檔案

s.Format(format + L"?, angle); //L"%.1f?
改成
s.Format(format + L"%.1f", angle); //L"%.1f?

接下來就可以建置它囉
完成後會產出 MapWinGIS.ocx

建置是成功了能不能用不知道啦
下次搭配 MapWindow 試看看好了
下回可能跟冨樫 yoshirin 的獵人一樣不知何時才會有下ㄧ回不要期待吧

                                                                                                                                                 (未完待續…)

參考文獻:
【Github】MapWinGIS v5.1.1
GDAL and MapServer Older Releases
【Blog】MapWinGIS-4.9.3.6编译方法
[Tutorial] Compiling MWGis in VS2017
【Youtube】Compiling MWGis in VS2017






星期三, 12月 20, 2017

【QGIS】將 QGIS Server 安裝在 windows 2016 的 IIS 10 手把手教學

口白:
流動的水沒有形狀,漂流的風找不到蹤跡,任何案件的 Coding 都取決於心
唯一看透真相的是,外表看似卜朧共,智慧卻低於常人的 名卜朧共 刻爛
(謎之音:把 Code 刻到爛簡稱刻爛.爛..爛...)
Music:
#表升半音 []表高八度
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 5 4 3 4 2 6 4 5 [2] [1] #6 6 5 6
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 4 3 2 4 2 6 4 5 [2] #6 6 5 6
口白:
刻爛:真実はいつも一つ!

環境:
Oracle VM VirtualBox 5.1.30
VM 作業系統:Windows 2016、Windows 2012
IIS 版本:10.0.14393、8.5(測試成功)7.x (理論上都一樣未試過)
qgis server:2.14.20 ltr
qgis desktop:2.14.20 ltr

狀況:
1. 台灣的代理商、經銷商,就像是水貨商一樣
賣你東西之前,說的他的東西有多好用…會飛天會遁地…
賣你東西之後,它錢收了爽完…就不理你了…就跟花錢玩的牛郎一樣(因該吧我也沒玩過)
2. 就是喜歡不一樣,要站在巨人的頭頂上(那裡風景好阿),不要塞在水貨商的屁眼裡!
在那兩個禮拜學會寫 python 的日子裡,看了 Mosky Liu youtube 影片 年會:群在故我在,你的簡單信念是什麼 ,為了讓那些像水貨商的代理商、經銷商去呷賽(吃屎、kiss ass hole),
為了著偉大的理想,發了一篇有極微貢獻的 blog 文章,讓 QGIS Server 因使用而產生價值!
更重要的是讓那些像水貨商的代理商、經銷商去呷賽
3. 實現奧卡姆剃刀原則
奧卡姆剃刀(英語:Occam's Razor, Ockham's Razor),又稱「奧卡姆的剃刀」,拉丁文為lex parsimoniae,意思是簡約之法則是由14世紀邏輯學家、聖方濟各會修士奧卡姆的威廉(William of Occam,約1287年至1347年,奧卡姆(Ockham)位於英格蘭的薩里郡)提出的一個解決問題的法則,而其中最流行的「若無必要,勿增實體」(Non sunt multiplicanda entia sine necessitate)
「切勿浪費較多東西,去做『用較少的東西,同樣可以做好的事情』。」
我深深的覺的QGIS SERVER做到了這點…

大綱:
1. 安裝基礎環境
2. QGIS LTR 安裝
2.1 下載 qgis server 安裝包
2.2 安裝程式
3. IIS 相關設定
3.1 在 IIS 安裝 fcgi
3.2 接下來設定系統變數吧
3.3 目錄權限設定
3.4 IIS 設定
4. 建立 qgis 地圖專案
5. 測試

概略說明:
在谷哥庇佑下,遍尋天下文章…找的安裝 QGIS Server 幾乎都是安裝在 Apache 下,
只有極少數的粗略說明,幾乎毫無幫助…
IIS 也一樣有提共網站服務阿,為什麼在 windows 下還要在裝 Apache?
基於奧卡姆剃刀原則,不因該拿牛刀殺雞雞…
我一定要找出方法…

安裝方法:
1. 安裝基礎環境
在 Windows 作業系統上,安裝 iis、DotFramework 2.x 3.x 4.x…

2. QGIS LTR 安裝
2.1 下載 qgis server 安裝包
去官網下載吧

下載存檔


2.2 安裝程式
執行安裝程式吧

選 Advenced Install

挑喜歡的安裝方式吧

下一步…

由於我選擇的是 Install from Internet ,所以要選擇安裝包的位置

下一步…

下一步…

挑選要裝的套件吧
基本上我只裝了 Desktop、Server

Desktop 選裝 2.14.21-1 ltr

Server 選裝 2.14.21-1 ltr

下一步…

下一步…

安裝中…

在經歷過無腦的下一步攻擊後,終於裝完


3. IIS 相關設定
3.1 在 IIS 安裝 fcgi
預設安裝好的 IIS 是沒有 FastCGI 的喔


開啟 伺服器管理員 > 新增角色及功能

下一步吧

選擇安裝類型 > 角色型或功能型安裝

下一步吧


將 CGI 勾選

我勾了這些

.NET Framework 我裝了這些

安裝

裝好啦

FastCGI 設定 出現啦

3.2 接下來設定系統變數吧
設定環境變數

系統變數 Path 增加:
C:\OSGeo4W64\bin
C:\OSGeo4W64\apps\qgis-ltr\bin
C:\OSGeo4W64\apps\grass\grass-@grassversion@\bin 
C:\OSGeo4W64\apps\grass\grass-@grassversion@\lib
(grass 沒裝應該不用設啦…)

2016 設定界面 長的不一樣…

新增系統變數QGIS_AUTH_DB_DIR_PATH、PYTHONHOME、PYTHONPATH、QGIS_PREFIX_PATH、QT_PLUGIN_PATH、GDAL_CACHEMAX、GDAL_DATA、GDAL_DRIVER_PATH、PDAL_DRIVER_PATH、PROJ_LIB

系統變數增加變數名稱為 QGIS_AUTH_DB_DIR_PATH
值為C:\OSGeo4W64\apps\qgis-ltr\resources

系統變數增加變數名稱為 PYTHONHOME
值為C:\OSGeo4W64\apps\Python27


系統變數增加變數名稱為 PYTHONPATH
值為C:\OSGeo4W64\apps\qgis-ltr\.\python;C:\OSGeo4W64\apps\qgis-ltr\.\python\plugins;C:\OSGeo4W64\apps\Python27\DLLs;C:\OSGeo4W64\apps\Python27\lib;C:\OSGeo4W64\bin;C:\OSGeo4W64\apps\Python27;C:\OSGeo4W64\apps\Python27\lib\site-packages;

系統變數增加變數名稱為 QGIS_PREFIX_PATH
值為 C:\OSGeo4W64\apps\qgis-ltr

系統變數增加變數名稱為 QT_PLUGIN_PATH
值為 C:\OSGeo4W64\apps\qgis-ltr\qtplugins;C:\OSGeo4W64\apps\qt4\plugins

 系統變數增加變數名稱為 GDAL_CACHEMAX
值為 64

 系統變數增加變數名稱為 GDAL_DATA
值為 C:\OSGeo4W64\share\gdal

 系統變數增加變數名稱為 GDAL_DRIVER_PATH
值為 C:\OSGeo4W64\bin

 系統變數增加變數名稱為 PDAL_DRIVER_PATH
值為 C:\OSGeo4W64\bin
(這是啥?我也不知道不要問我…我根據 Apache  環境設定抄來的,因該是沒作用吧)

系統變數增加變數名稱為  PROJ_LIB
值為 C:\OSGeo4W64\share\proj

接下來測試看看 QGIS Server 那隻 FastCGI 程式是否可以正常運作
開啟命令提示字元來測試吧…
基本上 path 設定完,不管在那都可以執行才對…
我測試時是先切換路徑到 qgis server 安裝路徑下,
路徑為 C:\OSGeo4W64\apps\qgis-ltr\bin
如果這隻qgis_mapserv.fcgi.exe,是會正常吐出 xml tag 那就成功一半了

3.3 目錄權限設定
將整個 qgis 安裝的目錄都設定iisuser權限給它
路徑為 C:\OSGeo4W64
使用者包含:IUSR、IIS_IUSRS

3.4 設定


新增虛擬目錄(其實直接新增應用程式也可以才對)

設定別名:qgis(可以隨便定,差別在於服務的網址路徑不同)
實體路徑:C:\OSGeo4W64\apps\qgis-ltr\bin

轉換成應用程式(好啦…我也違反奧卡姆剃刀原則,我當初測試畫面就是這樣嘛)

在 IIS 最根的那層,也就是電腦名稱那層,去設定 ISAPI及CGI限制
原因是底下都會繼承阿,就懶阿

先把 Active Server Page(ASP),限制設定為不允許

新增 ISAPI 或 CGI 限制
ISAPI 或 CGI 路徑:C:\OSGeo4W64\apps\qgis-ltr\bin\qgis_mapserv.fcgi.exe
描述:QGISSERVER (其實有定義沒定義都沒差啦)

允許延伸路徑執行,要打勾

接下來設定 FastCGI

點選 【FastCGI 設定】

新增 FastCGI 應用程式
完整路徑:C:\OSGeo4W64\apps\qgis-ltr\bin\qgis_mapserv.fcgi.exe

設定【處理常式對應】
點選 【處理常式對應】


新增模組對應
要求路徑:qgis_mapserv.fcgi.exe
(iis 收到要求的路徑或檔案來執行下列定義程式運算 也可叫wms*)

模組:FastCgiModule

執行檔:C:\OSGeo4W64\apps\qgis-ltr\bin\qgis_mapserv.fcgi.exe

名稱:qgis_mapserv.fcgi.exe
(可自行定義 叫 wms,不過要給它一個叫wms的 fcgi 檔案,我是這麼幹的…)

2018-05-30 補充:
我額外設定了一組模組對應,要求路徑叫wms*,模組一樣設定為 FastCgiModule,
執行檔也設為 C:\OSGeo4W64\apps\qgis-ltr\bin\qgis_mapserv.fcgi.exe,
名稱則叫做 wms。
copy qgis_mapserv.fcgi.exe ,檔名叫 wms 。

這麼做是wms server網址,可以改成其他的:
http://192.168.15.62/qgis/wms?...


要求限制 > 對應(看上圖吧)

要求限制 > 指令動詞(看上圖吧)GET,HEAD,POST

要求限制 > 存取(看上圖吧)



接下來~測試是否成功…


見證奇蹟的時刻…看到wms 回應的 xml 囉

4. 建立 qgis 地圖專案
於qgis server 路徑下來建立專案檔
qgis server 所安裝路徑為 C:\OSGeo4W64\apps\qgis-ltr\bin

編輯地圖並儲存專案檔 .qgs
Save paths 設為絕對路徑 absolute (這樣只要把 專案檔與fcgi程式放一起即可)

 Project > Project Properties

圖資設定編好後,來發 wms 服務吧
點選【OWS Server】頁籤
(1) Service Capabilities 勾起來,內容就依實況設吧
(2) WMS Capabilities > Advertised extent 勾起來,Boundary 就讓它自己抓吧
把 Use Current Canbas Extent 按下去就行了
(3) CRS restrictions,可以手動加,懶的話就用 Used 按下去,坐標系統就會長出來了
(4) Exclude composers 勾起來
按下 確定 ,然後儲存專案吧

5. 測試
開一空白專案來測試一下發布成果吧

先建立一個 WMS 連結
Name:  local (隨便定的)
URL:http://192.168.15.62/qgis/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
(192.168.15.62 因為從另一台機器去測試;qgis是剛剛設的應用程式)

連接wms server
根據剛才設定wms 連結 來 Connect連接
按下Add 將圖層加入qgis ,來測試顯示結果


結果
成功,圖例就是 QGIS 設定的

再來一發,網頁上也接的到…
這樣一來…該是讓那些像水貨商的代理商、經銷商去呷賽啦~
很重要~所以說三次…

PS:
如果裝完發布沒反應…考慮重啟 IIS 服務吧…
在系統管理員身份的命令提示字元下…iisreset 吧…

【參考文獻】
(1) QGIS Server on Windows 10/Server 2012
(2) QGIS Server在IIS 7.0及以上中配置 (廢…勿入)
(2) QGIS Server 2.8 on Windows Server 2012