webgis從基礎到開發實踐_開源WebGIS教程系列——11.1 GISLite 的開發背景與設計

地理信息門戶可以幫助人們更容易地發現、訪問和使用地理空間信息, 是地理信息發布、服務和共享的重要環節。許多國家都很重視地理信息門戶的 建設,把它作為國家空間數據基礎設施(spatial data infrastructure,SDI)的重要組成部分。

GISLite 是地理數據發布的一個項目,使用了本書前面章節中的一些地理信息與互聯網方面的一些技術, 做的一個功能簡單的 GIS 數據發布系統,以形成一個小型的靜態網站,方便地理空間數據的查看與管理。本書兩位作者負責與參與的數據中心與知識服務項目的工作,很多數據就通過這種方式發布出來。

由于 GISLite 實現之初寫的比較匆忙,沒有經過好的設計;而且其處理的內容也比較簡單,后面也沒有再經過仔細的修改。而且隨著使用,代碼也在更新之中。在這一章進行說明時,會對設計的思想與涉及的代碼進行一些說明, 但不會太詳細,以避免代碼更新之后與書的內容對應不起來。發布一個版本也許是一種解決的方法,但隨時使用最新的代碼可能更好一點。

項目的地址為 https://www.osgeo.cn/gislite/?, 這個功能也集成到本書的配套網站中, 通過 http://webgis.cn/gislite-index.html 訪問。

先來了解一下開發的背景與設計。

9ce01c8c9546f530ed6f403d04ce5515.png

11.1.1.?開發背景

在數據中心工作,經常會有一些地理空間數據需要通過 WebGIS 技術發布出來 。前面提到過數據共享。現在數據共享的工作越來越多。在數據共享中,很多的內容需要充分公開地向用戶發布出來。

元數據是了解數據的一種方式,它包含了數據的大小, 各個方面的屬性,以及空間范圍。科學數據一般也都有縮略圖,縮略圖也是一個可視化的方式。地理信息方面的一些數據,就是這種方式來快速了解。使用 WebGIS 技術可視化效果更好一些, 而且也是一個管理的一個方式,因為所有的數據能看見,當用的時候,查找更加方便。

在實際使用 WebGIS 技術發布數據時,存在有以下的問題:

  1. 有大量發布的需求,需要經常進行配置。也需要進行重新的轉換;

  2. Mapfile 的編輯修改需要較多專業的知識;

  3. 發布后需要進行查看,以進行檢查;

  4. 數據發布過程需要的步驟較多,需要通過程序工具集成到一起。

11.1.2.?設計的基本思路

基于以上背景,建立了 GISLite 項目,基本設計思路如下。

GISLite是一個基于開源GIS技術開發,使用了靜態網站形式的GIS數據發布的應用程序。基于 MapServer 的服務器端 GIS 數據圖層發布管理系統。用于解決發布較多數量的地圖時的數據更新、樣式修改,以及不同樣式組合應用的問題。解決辦法是使用 XLSX 文件定義樣式,利用MapServer、MapProxy實現GIS數據圖層發布管理。主要面向GIS開發人員、學生以及GIS愛好者。

使用 XLSX 是工程實踐的妥協。作為一種二進制的文件形式,XLSX 的修改無法使用 Git 等代碼管理工具進行歷史的記錄, 也就無法進行回溯與比較,所以并不能算是一種好的記錄方式。在定義 Mapfile 時,其實也可以使用 XML 或 YAML 。YAML 已經比較容易編輯修改,但是依然容易出錯。而使用 XLSX 建立好模板,則不需要進行太多的說明,普通的工作人員就可以使用其來修改與更新地圖的樣式。考慮到地圖的樣式可能不必需要太多的代碼級別的仔細核對,所以最終決定了使用這種方式。

盡量實現數據源唯一性,使用 XLSX 文件定義樣式。主要實現 GIS 數據圖層的發布,但也實現了多源數據發布為單個地圖瓦片, 以及多個圖層發布為圖層分組的功能。主要有以下特點:

  • 基于 MapServer 、 MapProxy ;

  • 使用開放電子表格格式 XLSX 定義樣式 ;

  • 可用于團隊地理信息數據快速發布管理 。

11.1.3.?靜態網站的優點

在 GISLite 設計中,參考了靜態網站程序的方案。

近年來,作為傳統動態網站基礎架構的替代方案,現代靜態網站生成器日漸盛行。許多導致靜態網站失敗的限制已不復存在。現在,每周都會有新的靜態網站生成器發布。簡單來說,靜態網站生成器就是一個由輕量的標記語言以及模版語言和元數據以及 CSS 預處理器, 加上可以編譯成 JavaScript 的語言構成的用來生成靜態 HTML , CSS 和 JS 文件的程序。

以 PHP 應用為例,PHP 項目得到廣泛應用的一個原因,就是易于部署。項目整體打包在一起,拷貝到約定的目錄下,配置好相關的一些參數,就可以運行起來。將數據與程序獨立出來,程序提供了功能的接口。

靜態網站有以下優點:

  1. 訪問速度快

即使是優化最好的動態網站,其性能也無法同靜態網站相比。并且,對于動態網站而言,緩存失效非常難以恢復,尤其是需要充分利用 CDN 的分布式緩存。靜態網站所有內容都儲存在 html 里面,不需要后臺服務器對內容進行渲染, 避免了查詢數據庫等操作,而且可以充分利用緩存和 CDN 。

  1. 非常安全

動態網站容易遭受蠕蟲攻擊。據保守估計,超過 70% 的 WordPress 部署容易因為已知漏洞遭受攻擊 (超過23%的 WEB 網站以 WordPress 為基礎構建)。網站安全兩大威脅 SQL 注入和 XSS(cross-site scritpting)攻擊, 靜態站點都可以很好的避免。

  1. 易于部署

靜態網站沒有后端要求,想部署在哪兒就部署在哪兒。服務器端配置簡單。只需要一個 web 服務器程序(apache、nginx)。

  1. 利于版本控制

靜態網站是由靜態文件組成,所以非常容易使用 Git 等工具進行版本控制,非常容易維護。

? ? ?5.易于集成

另外還有一點就是易于集成。在本書的配套網站中就集成了 GISLite 發布的數據, 見 http://webgis.cn/gislite-index.html 。

基于以上靜態網站的特點,適合地圖發布服務的應用。因為在用戶使用過程中只是瀏覽、查看,不需要更新、刪除等操作, 沒有動態網站的需求。

11.1.4.?程序配置

GISLite 基于 MIT 協議開源發布,托管在 github,下載程序, 源代碼網址為:https://github.com/bukun/GISLite.git 。

在開始之前,首先下載部署 GISLite 的實例,來了解一下。以下的操作都 以 Ubuntu/Debian 為例。

服務器端的安裝配置

程序的運行需要操作系統與應用程序的支持。服務器端的基本環境包括本書涉及的 Apache 、 Python3 、MapServer ;Python 語言所需要的環境包括本書前面章節介紹的 mappyfile 、 MapProxy , 以及 GDAL 、 Markdown、OpenpyXL 等模塊。

  1. OpenpyXL 是一個Python庫,用于讀取/寫入Excel xlsx / xlsm / xltx / xltm文件。

  2. Markdown 是一種標志語言,Python-Markdown 則用來進行解析處理。

  3. GDAL 是柵格和矢量地理空間數據格式的轉換器庫,作為一個庫, 它為調用的應用程序提供了所有支持的格式的單個柵格抽象數據模型和單個矢量抽象數據模型。它還帶有用于數據轉換和處理的各種有用的命令行實用程序。

GISLite 綜合使用了本書介紹的技術,在安裝使用時首先需要基本的 WebGIS 運行環境。在操作系統中運行如下命令安裝基本的環境,由于 mappyfile 未包括在 Debian 源中, 需要使用 Python 的 pip 命令安裝。

sudo apt install -y apache2 php libapache2-mod-fcgid cgi-mapserver mapserver-bin libapache2-mod-phpsudo apt install -y python3-openpyxl python3-mapproxy python3-markdownsudo apt install -y build-essential  python3-gdal python3-pippip3 install mappyfile

程序安裝與配置

為了進行說明,先將 GISLite 配置安裝一下。

首先獲取源代碼, 使用命令:

git?clone?https://github.com/bukun/GISLite/

GISLite 運行需要有數據支持,可以到 http://webgis.cn 網站將示例數據下載下來。

有了數據之后,需要使用配置文件將說明項目的地址、數據的位置等信息。由于 Python 語言的特征,直接將配置信息寫到 .py 文件中。cfg_demo.py 文件是一個包括配置信息的模板文件, 程序運行時需要 cfg.py 文件。將 cfg_demo.py 文件復制為 cfg.py , 并進行相應的修改。

下面是一個基本的例子,進行一下簡要說明。

TILE_SVR = '192.168.56.1:8011'GIS_BASE = '/home/bk/opt/geodemo'SITE_WS = '/home/bk/github/GISLite'USER = 'bk'

這幾個變量是必須要定義的。

  • TILE_SVR?聲明服務器端瓦片服務的地址與接口,

  • GIS_BASE?聲明地理空間數據庫所在的目錄,

  • SITE_WS?聲明項目(即代碼庫)的目錄,

  • USER 聲明進行操作的用戶名,這個用戶需要在 sudo 組內。

cfg.py 中的定義是比較靈活的。如果要使用遠程部署,可以將服務器登陸的信息放到這里:

machines = {    'aliyun3': {'u': 'bk',                'h': '192.168.56.1',                'p': 'passwd',                'ws': 'workspace'},}mach = machines['aliyun3']

現在可以在代碼倉庫下運行:

python3?build_gislite.py

運行后會生成地圖圖層的 Mapfile ,網站 HTML 文件,以及運行 MapProxy 需要的文件。這會生成一個靜態的網站。其中 Mapfile 是由主文件與各圖層定義的 Mapfile 組成。

文件生成后,需要使用下面命令將 MapProxy 服務運行起來:

cd wcs_imgmap/usr/lib/python3-mapproxy/mapproxy-util serve-develop ./mapproxy.yaml -b 0.0.0.0:8013

在 Web 瀏覽器內打開就可以瀏覽發布的 GIS 數據了 。

以上就是《開源WebGIS》教程系列——11.1 GISLite 的開發背景與設計的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537213.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537213.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537213.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle數據庫及在DOS命令下面的簡單操作

在Oracle數據庫注釋用--表明為注釋,但以下用//或--代表解釋;數據庫不怎么區分大小寫; 先說說一些簡單Oracle數據庫操作的語句: 使用語句創建普通用戶: Create user username identified by password; //創建普通用戶 Grant reso…

CSS屬性(display)

1.display屬性 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>08display屬性</title><style>.c1 {background-color: red;/*display: none; !* 讓其在頁面上不顯示 *!*//*display: i…

產品發布系統_【產品發布】第3期|閥門遙控系統

更多精彩&#xff0c;請點擊上方藍字關注我們&#xff01;常熟瑞特電氣股份有限公司的閥門遙控系統是一款經典的產品線&#xff0c;包括了全系列的液壓執行器&#xff0c;電液執行器&#xff0c;微型動力單元&#xff0c;液壓動力泵站&#xff0c;液壓電磁閥箱等產品。閥門遙控…

大數據就業前景,分析的太到位了

大數據廣泛應用于電網運行、經營管理及優質服務等各大領域&#xff0c;并正在改變著各行各業&#xff0c;也引領了大數據人才的變革。大數據就業前景怎么樣&#xff1f;這對于在就業迷途中的我們是一個很重要的信息。 隨著大數據時代的到來【這次國家教育部也改革動真格了】&am…

常用集合(List,Set,Map)的基本定義和操作

集合類存放于java.util包中。 集合類存放的都是對象的引用&#xff0c;而非對象本身&#xff0c;出于表達上的便利&#xff0c;我們稱集合中的對象就是指集合中對象的引用&#xff08;reference)。 常用的集合類型主要有3種&#xff1a;set(集&#xff09;、list(列表&#x…

多麥克風做拾音的波束_麥克風丨人聲應該用動圈話筒還是電容話筒?

無論是在您最喜歡的樂隊的紀錄片中&#xff0c;還是在電影中那些有關錄音棚里的場景中&#xff0c;似乎都存在著一個共同的主題&#xff0c;那就是&#xff1a;歌手們都在使用大振膜的電容麥克風進行錄音。我知道人們應該從別人的經驗中汲取精華&#xff0c;事半功倍。但是我并…

MYSQL安裝與庫的基本操作

mysql數據庫 什么是數據庫 # 用來存儲數據的倉庫 # 數據庫可以在硬盤及內存中存儲數據 數據庫與文件存儲數據區別 數據庫本質也是通過文件來存儲數據, 數據庫的概念就是系統的管理存儲數據的文件 數據庫介紹 數據庫服務器端: 存放數據的主機集群數據庫端: 可以連接數據庫的任意…

java框架mybatis配置文件總結一

先新建個java EE的項目 該配置文件必須在src的目錄下面&#xff0c; 新建一個xml 文件&#xff1a; 建完后發現它會自動建在web目錄下面&#xff0c;我們把這個文件移到src目錄下面&#xff1a; &#xff08;注&#xff1a;對了&#xff0c;該文件的編碼最好用utf-8的no bom,…

python第六周實驗_第六周實驗四

二.實驗的內容(1)根據下面的要求實現圓類Circle。1.圓類Circle的成員變量&#xff1a;radius表示圓的半徑。2.圓類Circle的方法成員&#xff1a;Circle():構造方法&#xff0c;將半徑置0Circle(double r)&#xff1a;構造方法&#xff0c;創建Circle對象時將半徑初始化為rdoubl…

測試:脫離VS2010使用自動化測試時出現 6DA215C2-D80D-42F2-A514-B44A16DCBAAA 錯誤

在前一系列IronRuby中一直是圍繞這UI自動化測試來寫的&#xff0c;今天基本測試框架完成了&#xff0c;測試人員沒有安裝VS2010&#xff0c;不知道能否跑&#xff0c;所以就在測試人員機器上跑跑看&#xff0c;但是問題就出現了 現象 運行run.bat跑單元測試時&#xff0c;出現以…

Linux的遠程連接及Linux系統下Tomcat部署

Linux的遠程需要用的軟件有Xshell&#xff0c;Xftp 本人使用VMware12Pro虛擬機&#xff0c;Linux系統為CentOS7&#xff0c;使用局域網進行遠程連接 Xshell和Xftp沒有安裝的話可以取官網下載&#xff0c;但Xshell需要驗證信息&#xff0c;所以也可以去360電腦軟件下載 在VMw…

uniapp圖標_uniapp擴展自定義uniIcon組件圖標

1、訪問Iconfont-阿里巴巴矢量圖標庫&#xff0c;下載自己想要的圖片&#xff0c;下載svg格式備用2、通過百度字體編輯器打開本地最新的uni.ttf文件(http://fontstore.baidu.com/static/editor/index.html#)&#xff0c;打開之后可以看到所有的uni所有圖標都在里面3、導入第一步…

asp.net面試集合

1 &#xff1a;維護數據庫的完整性、一致性、你喜歡用觸發器還是自寫業務邏輯&#xff1f;為什么 答&#xff1a;盡可能用約束&#xff08;包括CHECK、主鍵、唯一鍵、外鍵、非空字段&#xff09;實現&#xff0c;這種方式的效率最好&#xff1b;其次用觸發器&#xff0c;這種方…

Spring Boot 日志的使用及logback.xml的使用

當前是市場上使用的日志框架有很多&#xff0c;比如&#xff1a;JUL、JCL、Jboss-logging、logback、log4j、slf4j....等等&#xff1b; 但是日志主要分為兩類&#xff0c;日志門面和日志實現兩類&#xff1b;日志門面可以說是日志框架的抽象層&#xff0c;主要實現是的日志實…

基4fft算法的蝶形圖_原地且自動整序的FFT算法

傳統的計算快速傅里葉變換的Cooley-Tukey算法效率極高&#xff0c;因其主要由蝶形運算構成&#xff0c;所以代碼形式也非常簡單&#xff0c;只是需要將輸入或者輸出按照位反轉的方式重新排序。這個重新排序的步驟并不是必須的。Clive Temperton于1991年在Self-Sorting In-Place…

嵌入式BootLoader技術內幕(二)

三、Boot Loader 的主要任務與典型結構框架 在繼續本節的討論之前&#xff0c;首先我們做一個假定&#xff0c;那就是&#xff1a;假定內核映像與根文件系統映像都被加載到 RAM 中運行。之所以提出這樣一個假設前提是因為&#xff0c;在嵌入式系統中內核映像與根文件系統映像也…

MongoDB數據庫的遷移

最近公司開始要換服務器啦&#xff0c;MongoDB上面的數據又得遷移&#xff0c;還是記錄一下比較好。 1&#xff09;、將MongoDB的壓縮包解壓至相對應的路徑(壓縮文件在本地服務器的地址192.168.0.22的/opt/zip文件下面) 2&#xff09;、配置好mongodb.conf文件&#xff0c;配…

excel vba 如何將日期周幾轉換成文字_這5個超實用的Excel技巧,讓你的辦公效率更高...

導讀&#xff1a;對于辦公職員來說&#xff0c;Excel是幾乎每天都會接觸的辦公軟件。在Excel中&#xff0c;有非常多的小技巧&#xff0c;學習這些小技巧需要不斷的積累和應用&#xff0c;今天指北針就來給大家分享5個超實用的Excel技巧&#xff0c;讓辦公變得更加有效率。文/芒…

VMware創建Linux及局域網內獨立訪問IP和訪問外網IP的配置

好早之前有一篇是配置遠程連接Linux和部署Tomcat的文章&#xff0c;但是并沒有講解如何配置IP的相關知識。最近公司在搞集群配置&#xff0c;我就先拿電腦上的VMware上的Linux做個測試&#xff0c;分享和總結一下經驗吧&#xff0c;也算是為了補齊之前的那個空白&#xff01; …

每位設計師都應該擁有的50個CSS代碼片段

每位設計師都應該擁有的50個CSS代碼片段