GIS歷史概述與WebGis應用開發技術淺解

聲明:本篇在李曉暉的《雜談WebGIS》,補充更多的資料說明。基於地圖二次開發一直斷斷續續在作,這裏算是補充一下基本功把。其實對於前端,WebGis開發都是api,抄demo,改。GIS深刻似大海,雜魚湯來一碗html

GIS是什麼?

GIS(Geographic Information System),它是在計算機硬、軟件系統支持下,對整個或部分地球表層(包括大氣層)空間中的有關地理分佈數據進行採集、儲存、管理、運算、分析、顯示和描述的技術系統。前端

由於它能夠對空間信息進行分析和處理(簡而言之,是對地球上存在的現象和發生的事件進行成圖和分析)。 GIS 技術把地圖這種獨特的視覺化效果和地理分析功能與通常的數據庫操做(例如查詢和統計分析等)集成在一塊兒。web

結合地理學與地圖學以及遙感和計算機科學,已經普遍的應用在不一樣的領域,主要用於輸入、存儲、查詢、分析和顯示地理數據。數據庫

什麼是GIS學科

談GIS,得先回顧地理科學的發展後端

地圖繪製的發展歷史與地圖功能的演變史

人類使用地圖的歷史大約有3000年。地圖是早期人類探索世界時發明的一種工具。推薦閱讀 西蒙·加菲爾德的《地圖之上:追溯世界的原貌》api

現存最古老的地圖,是古巴比倫的世界地圖,約公元前700年~公元前500年間在美索不達米亞製成,刻在一塊泥板上。地圖把古巴比倫描繪成圓環形狀,處在地圖中心位置,國土被幼發拉底河一分爲二,外圍被海洋環繞。地圖的真正做用,不是用來導航出行,而是讓地圖持有者(帝國皇帝)認識整個世界,固然前提是以本身爲中心。這是地圖最原始的做用。瀏覽器

古羅馬製做了一幅高約0.3米,寬達數米長,能夠捲起來的大地圖。羅馬帝國廣袤的疆域就畫在這幅卷軸上,顯然它不適合出行攜帶,做用只是彰顯帝國領地的一種藝術表現形式。那時地圖的做用也基本如此。tomcat

公元2世紀,古羅馬帝國天文學家托勒密,也是占星家,爲了製做星相占卜圖,把羅馬帝國許多城鎮的位置進行了精確標註(出生地位置是星相占卜的一大因素)。托勒密收集了大量檔案、故事等各類信息,並設計一套經緯線系統,覆蓋了西歐、亞洲、北非等各地。他還設計了使大地的三維球面投影在二維平面上的方法(當時人們已相信大地是球形的),並稱之爲「地理」。由此托勒密開創了人類史上兩個第一:第一份具有實際導航意義的地圖,第一次涉及到了新的地理學科。然而它曇花一現,西羅馬帝國滅亡後,托勒密地圖隨即消失。服務器

公元4世紀開始,基督教獲得合法地位,並向歐洲各地傳播,基督教的特點也隨之附着在地圖上。地圖重在彰顯基督福音在世上的傳播。當時人們認爲東方是神聖的方向,由於上帝最初創造的伊甸園位於東方。地圖頂端就朝向東方,還配了幾幅圖畫,即亞當夏娃被逐出伊甸園,及世界末日基督再臨。設計地圖,根本不是爲了人在地上出行找路,而是爲了引導人進入天國。網絡

真正幫助人出行的地圖,直到文藝復興才發展起來。商業貿易迅速發展,尤爲是遠洋貿易,特別須要地圖指導。人們從新挖掘古代遺產,找到了托勒密的地圖和製圖法。再加上科技進步以及羅盤使用,人們又從新繪製了新地圖,這就是「波多蘭航海圖」。它是大航海時代的產物,上面都是大海和港口,海面上航道密佈,縱橫交錯,鏈接各個港口城市。

16世紀德國製圖學家墨卡託發明了一種新的製圖法,開創了墨卡託投影法。咱們如今所用的世界地圖,就是以這種方法設計的。爲了能在平面地圖上完整顯現三維球體表面,墨卡託把北方和南方遠處的陸地、海洋麪積逐步擴大,投射下來。這種設計第一次把全球繪製在一張地圖上。

雖然其有以下缺點:它輕微地扭曲了人們對世界的見解。靠近北極的國家,其國土面積被人爲擴大,如加拿大和俄羅斯,而赤道地區則人爲地縮小了,如非洲。可是它既對航海幫助很大,也對國王們爭奪殖民地「幫助不小」——宣示主權

數學推理和測量技術大幅進步,世界地圖愈來愈精確,地方的局部地圖也是如此,至此,地圖的發展也就是查漏補缺,精度提升。地圖的主要用途即是給人們的行軍、航海等作嚮導,而這一樣也是現代GIS學科裏GIS最基本的功能之一。

GIS的發展

19世紀時,現代GIS學科開始慢慢萌芽。這裏有一個頗有名的例子。1854年倫敦發生霍亂,10天就死了500人。居民大多懷疑瘟疫是因爲地下的墓穴引發的,引發了極大的社會恐慌。當時有個有名的醫生叫Snow博士,他不信這個緣由,爲了查出真正的霍亂源頭,他首先繪出了倫敦地圖,而後將全部霍亂病人的所在地標出來,而後他發現了一個有趣的現象,在倫敦的一個居民飲水井附近出現的霍亂病人最多,而且最開始出現的霍亂病人也是在那裏發現的。最後Snow博士對那口井進行檢查,肯定了霍亂髮生的源頭。從這個例子中咱們能夠看出,地圖的應用已經再也不侷限於導航了,而開始慢慢利用其得天獨厚的時間空間優點與其餘學科開始進行結合

到了20世紀電腦的出現,人造衛星的昇天等技術的突破,GIS這個學科也相應的開始走向成熟以及開始普及。20世紀60年代,加拿大科學家首先提出了GIS這個學科。到了20世紀末,一大批優秀的GIS軟件已經出現,好比Esri公司的ArcGIS系列,MapInfo公司的MapInfo。國內的GIS從上世紀80年代纔開始起步,不過到上世紀末時,也出現了本身的GIS公司,比較有名的有GeoStar、MapGIS等。

而此時的GIS已再也不是侷限紙上的地圖了,它已經成爲了一個計算機技術和多種學科相交叉的新型學科了。它涉及到測量學——地理信息的採集和地圖的製做等,計算機科學——電子地圖的製做和展示以及各類GIS功能的實現,物理學——對傳感器的研究以及光譜和影像的研究,氣象學——大氣層等對衛星影像的影響等,生物學、醫學、犯罪學等——研究地理等各時間空間因素對這些學科的影響。

因此GIS是什麼呢?說的最通熟易懂的就是,GIS是利用測繪生成紙製地圖或者航拍以及衛星等生成影像後,將這些數據存儲在計算機中,以地圖或圖片的形式表現出來,而後根據實際生產生活以及科研中的各類需求,進而提供具體的通過處理後的數據

什麼是WebGIS

WebGIS就是展示於網絡上的GIS。在上世紀八十年開始,出現的大量GIS軟件,基本上都是C/S架構的,也就是首先須要在本機上裝有專業的GIS軟件,而後用戶根據需求使用這些GIS軟件。固然這種桌面端的GIS軟件有其自然的優點,好比開發相對簡單,不須要Internet支持,以及能夠作更多的複雜功能、響應相對迅速等優點。可是同時,其缺點更是不容忽視。首當其衝的即是不便於推廣,而不便於推廣的緣由在於C/S系統其自己的自然的劣勢:不便於更新,不便於跨平臺,不便於用戶在不安裝指定客戶端的狀況下使用。

從本世紀開始,internet進入了爆發式增加階段,網絡的鋪設以及網速的提高都有了大幅度增長,這爲WebGIS的發展提供了堅實的大環境。因而,基於B/S的GIS系統愈來愈多的開始提供服務,而且在RIA(富客戶端)技術、AJAX(動態網頁)技術的涌現和成熟,WebGIS也基本能展示出與C/S同樣的效果和功能。而WebGIS的大發展,更是用戶的需求,google地圖和百度地圖等服務提供商的大規模擴張即是最好的證實。

什麼是WebGIS,就是將GIS這門學科所能提供的功能,以B/S技術展示給用戶,使用戶只須要在瀏覽器上便能使用這些GIS功能的一個應用方向。

對國內WebGIS行業的理解

目前使用WebGIS技術的公司能夠大體分爲兩個方向:一個是互聯網方向,一個是行業應用方向。

國內的互聯網方向裏基本能夠說已經被百度地圖,搜搜地圖,高德地圖,三個巨頭壟斷。因此對於想從事互聯網方向的WebGIS開發人員,其實能夠選擇的大公司並很少。可是,若是你是一個技術足夠好,且技術不侷限於通常的關係數據庫,對大數據和分佈式系統感興趣的WebGIS開發人員,強烈建議你去這些互聯網公司,在那裏你能接觸到最新的IT技術以及感覺到強大的頭腦風暴。也即是,對新技術,對前沿方向有更多追求的人,去互聯網公司是很好的選擇。

可是咱們不得不認可另一個現實,這些互聯網公司基本集中在北上廣深,而且對GIS研發人員在技術上的需求是,計算機技術的比重要遠大於對GIS學科自己的理論所佔的比重。因而,更多的GIS學科出身的人,最後選擇的是行業應用公司。而投身於這樣的公司,就沒有前途嗎?答案是否認的。

Esri公司做爲全球最成功的GIS軟件公司,很好的給出了這個答案。目前Esri的AO庫號稱世界上第二大的庫,除了微軟的Framework,就是它了。它同時也是一個年盈利在8億美圓的公司。Esri公司與美國和加拿大政府的合做堪稱行業公司的典範,它爲這兩個國家的數字化城市的建設立下了汗馬功勞,作出了不少優秀的做品。說這個例子,只是爲了代表,在咱們的數字化城市的需求愈來愈深刻,政府的需求愈來愈實際,整個國家的市場建設愈來癒合理以及公平公正透明,WebGIS在行業上的應用也將愈來愈普遍,而且愈來愈可以服務政府、企業和人民,而且更能作出有真實價值的產品。而且,從事行業應用的研發人員,隨着對所從事行業理解的深刻,這些理解給將來所帶來的收穫可能比技術單純的提升所帶來的收穫要大得多。要知道,項目需求分析靠的基本是行業理解,固然,對技術的瞭解也給項目可行性分析提供了保障。二者相輔相成。

每一個人追求不同,根據本身的需求,根據本身的現狀,作出選擇,堅持下去,不說夢想是否能實現,起碼你不會是一個本身都認爲本身活該如此平庸的人。

WebGIS的框架

前面說了太多的非技術類的話,這裏咱們開始提一個技術類話題——WebGIS的框架。其實WebGIS的框架跟其餘Web項目的框架沒有不少本質上的區別。可能惟一的不一樣是WebGIS須要提供一些地圖方面的功能服務。這裏我先把這個框架給出,同時每一個層面須要的技術我也在其中大體畫出。

                                    

目前不少公司都提供了本身的二次開發包,在前端的有OpenLayers、AGS API for JS、maptalks。在後臺的也有geoTools、AO等。用這些開發包,咱們能夠很快的實現出圖以及不少GIS功能,基本上不用寫太多的編碼。玩會一種開源的maptalk,ol,mapbox便可。好比ArcGIS Web APIs,SuperMap iClient 等,表示:玩不起!請招或者外包GIS人員來搞

可是,因爲封裝的太好,不少WebGIS的原理咱們也便忽略而不作了解了。

WebGis前端

首推Open GIS,WebGIS所提出的這些要求正是Open GIS聯盟(OGC)所成立的目的

開源的maptalk,ol,mapbox

地圖方面: Mapbox、ArcGIS、OpenLayers、cesiums、百度地圖BMap、高德地圖AMap、Google Map 等;

集成包有:OpenLayers、AGS API for JS、maptalks  leaflet

Echarts 地圖可視化,

https://echarts.baidu.com/option.html#geo  

https://echarts.baidu.com/option.html#series-map

能夠看看我以前寫的:《echarts矢量地圖自定義圖標數據展現—echarts地圖圖表三種方案 

WEBGIS前端自動生成工具 QGIS,試了一下,我是放棄了。

WebGIS開發API選擇

主流的開發API有:ArcGIS API、SuperMap API 、OpenLayer、LeafLet、百度API、天地圖API等。谷歌和必應的相對用的較少。

GIS開發人員確定知道地圖服務器這個東西。API使用是免費的,可是地圖服務器並難免費,畢竟結合相應的地圖服務器才能發揮API的功效。國內主要是用ArcGIS Server和SuperMap iServer兩個地圖服務器,另外還有GeoServer的開源地圖服務器。

  • ArcGIS API:適合大型的項目開發,ESRI做爲最完善的GIS服務商,其API提供的功能也最爲強大,支持的數據類型也多,可以很好地解決數據異構,座標轉換等問題,並提供二三維一體化的服務解決方案,版本的更新迭代也很快,API可以對兼容老版本的功能,實現的GIS功能也更爲全面。API分爲3.x版本開發2維應用,4.x開發三維版本。可是,其地圖服務器採購價格接近30w,對於中小項目來講成本也是比較大的。

  • SuperMap API:國內公司,也被譽爲國內業內第一的公司,也提供了一整套的數據解決方案,而且更符合國情,一些功能模塊主要是面向國內用戶的,三維GIS可以直接利用傾斜攝影的數據。這個API適合開發大中型項目,實現的功能固然沒有ARCGIS的完善,但對於基本的和稍微複雜的GIS功能來講已經足夠了。(特別不喜歡他的類參考,感受很雜,三維)。地圖服務器採購價也差很少是30w,但提供服務就不如ArcGIS的了。

  • OpenLayer 開源地圖服務器,屬於開源項目,這個主要是能節省成本,適合中小型項目,提供的功能也比較強,經常與其餘軟件結合使用(OpenLayer+GeoServer+uDig),提供地圖服務。可是有問題就須要本身解決了,畢竟沒有專門的技術支持人員。感受更偏向弱或稍強的GIS項目,可以提供基本的數據服務。

  • LeafLet 主要是移動端的API,輕量級的,提供的功能服務就很弱了,更偏向於信息展現,在數據展現方面這個API的展現效果是很不錯的,也不須要專業的能力,適應性更好。

  • 百度API、天地圖API:這一類的API功能比較單一,只能使用在線地圖服務器,能夠說是同質化的產品。更適合開發項目中的GIS模塊,而不適合開發GIS項目,另外說下,百度的不支持OGC協議(很憎恨這個),若是要使用對平臺的地圖服務,不建議使用百度的API,百度的更偏向於消費的商業市場,因此,鄉鎮數據不多,主要集中於城市數據。天地圖的是由國家推進的,提供的服務某方面不如百度,但支持OGC協議。

總結來講,大項目選擇ArcGIS 或SuperMap,大中型的選擇SuperMap或者OpenLayer,小項目就使用maptalks。GIS模塊的話能夠考慮百度、天地圖、leaflet、高德等,沒有定數。另外,三維的項目需求也比較多了,特別是二三維一體化的項目,還有個Cesuim、three.js這個用得比較多。之後確定是毋庸置疑往三維上發展的。

webgl開源三維引擎的選擇

小場景的開源三維js引擎

1.babylonjs:http://www.babylonjs.com/(當前在用)

    優勢:有微軟背景,有很多的demo,有較詳細的api文檔,有供測試的平臺,有提供3dsmax轉換模型的插件,

    缺點:中文資料不多,沒有系統的中文教程,如從入門到精通均可以給你講一遍系統的教程,論壇也會被牆,相關的qq羣較少,羣裏的人也很少,因此能真正指導咱們的大牛也比較少。應該是國內用的 比較少。

2.threejs(當初選擇引擎時關注過,選擇了babylonjs後就沒有去進步瞭解了)

    優勢:國內用的比較多,因此中文的資料也會比較多,有比較系統的中文教程如從入門到精通。用的人比較多,因此相關的qq羣較多,羣裏的人也較多,接觸到的大牛應該也會比較多。

    缺點:沒有提供一些基礎建模軟件的插件,好比3dsmax的模型導出插件,雖說提供一些讀3ds格式,fbx格式的場景。

大場景基於earth的開源三維js引擎

1.cesiumjs(http://cesiumjs.org/)

優勢:有較多的demo,詳細的api文檔,有測試平臺,比較豐富的展現特性和擴展。

2.webglearth(http://www.webglearth.com/)

demo較少,但一些基本的gis功能都有,簡單實用,好像沒什麼更新過

3.openwebglobe(http://world.openwebglobe.org/)

效果不是很好,加載不流暢,展現的功能也比較少,後面就沒有進步瞭解了


WebGis後端

arcgisServer、geoserver、mapserver ……

WebGis中間件

開發時,咱們要選擇適合本身的中間件。不一樣的中間件有其特性,若是是通常項目,tomcat等是很合適的,其使用方便,相關技術支持和資料也很好查找。可是若是是大型的集羣項目,Weblogic和WebShpere多是更好的選擇,可是這兩個中間件首先配置就是有難度的,同時不一樣的版本,可能對某些jar包的支持存在問題。若是項目必須使用國產的中間件,TongWeb和Apusics是不錯的選擇。

WebGis地圖服務器

在WebGIS中,與其餘通常的Web工程有明顯區別的就體如今地圖服務器上面。通常的地圖服務器都由已有的軟件商提供瞭解決方案,比較流行的有AGS、Geoserver、MapServer、SuperServer等。利用這些地圖服務器咱們能很好的實現地圖的發佈以及對一些空間查詢和空間操做的支持。

WebGis業務服務器

業務服務器是Web項目裏不可獲取的一環。無論是利用哪些已有框架編寫,好比Spring、Struts、Hibernate等,咱們通常仍是會將業務服務器的實現分爲三個層次,即有名的MVC模式。而不一樣的框架裏這三個層次的實現各有差異。

WebGis數據

WebGIS的數據大體能夠分爲三種,一種是地圖、影像數據,一種是空間屬性數據、一種是業務數據。地圖、影像數據通常是一些png或者其餘格式的數據組成。

在GIS中有個很重要的概念,即影像金字塔。這個概念主要是爲了加速地圖在前端的顯示。而咱們準備地圖、影像數據時,也通常會首先對這些數據進行切圖。

空間屬性數據,是經過一些工具將已經整理好的數據進行入庫。對於AGS,只有鏈接的是入庫數據的mxd,才能發佈成FeatureServer服務,以供數據的編輯。固然,空間數據入庫後還能夠支持業務邏輯的使用。

第三種數據,業務邏輯數據,是每一個Web項目必須有的,它根據不一樣的業務需求將業務所需的數據進行採集和入庫。

原文連接:GIS歷史概述與WebGis應用開發技術淺解 - maptalks填坑筆記 - 周陸軍的我的網站

最後,《webgis開發資源整理》,對一些開發資料整理彙總。

參考文章:

令德國人崇敬的地圖學家——墨卡託 http://www.sohu.com/a/254951691_329538

雜談WebGIS http://www.javashuo.com/article/p-umhnzjag-ez.html

WebGIS開發進階練手題(二) https://zhuanlan.zhihu.com/p/22424372

關於WebGIS開發API選擇的問題 https://blog.csdn.net/LYQHZ/article/details/80720279

相關文章
相關標籤/搜索