浅谈WebGIS开放数据(矢量数据)
今天上午本來打算學習ol3的專題地圖制作,查閱很多資料發現ol3并不支持專題制圖制作,反觀ol2卻支持,專題地圖用處很大,不知道為啥,ol3不支持了,看了一上午開放性數據,在這里聊聊我的看法。
一、主流開放數據格式
- KML是一中文件格式
 - GML是一種地理標記語言
 - GPX是一種XML格式
 - GeoJSON是一種地理對地理結構進行編碼的格式
 
以上四種是主流的開放格式ol3也都支持加載和解析
二、客戶端繪制和服務器端繪制
在這里了解兩個名詞客戶端繪制和服務器端繪制:
1、客戶端繪制:是將服務端返回的數據進行在渲染制圖,這種方式適合少量數據大量數據就會造成癱瘓,ol3中也提供幾種改進方式例如BBOX策略,只獲取視圖范圍的數據,視圖范圍改變進行再次請求服務器,但是這種方式造成請求次數過多,ol3又改進BBOX策略請求,形成Filter策略,這種方式縮小請求范圍,避免了下載所有數據,又保證Filter的高效,客戶端繪制的優勢是一旦從服務器獲得矢量數據,Web地圖用戶就能可以數據交互。
2、服務端繪制:是將地圖繪制好返回圖片給服務器端,缺點交互性差
三、KML
KML是由要素和柵格數據組成,這些元素包括點、線、面、影響、圖形、圖片、屬性等比較多,這和arcgis截然相反,arcgis中數據集是獨立單一要素(點要素只能包括點,先要素只能是線)格式示例:
<Placemark><styleUrl>#style-Parking</styleUrl><Point><coordinates>7.5584046,46.4880564,0</coordinates></Point></Placemark>KML中最重要的XML標簽是Placemark,他定義地理要素、符號、HTML描述標簽等,例如上面地標就是Point。
ol3使用示例:
//實例化矢量數據源,用KML格式的類解析var vectorSource = new ol.source.Vector({url: dataUrl,format: new ol.format.KML()});四、GML
GML能夠表示地理空間對象和非空間數據運用GML,封裝的地理數據和圖形解釋是清楚分離的數據格式如下:
-<gml:featureMember><FID>2</FID><ID>3</ID><長度>0.00666304818749164</長度><道路名稱>東亭路</道路名稱><道路等級/>-<Lin>-<gml:multiLineString>-<gml:lineStringMember>-<gml:LineString><gml:coordinates>114.354756647044,30.5692995197076 114.355329432955,30.5699232772349 114.357219473538,30.571925709305 114.359205347945,30.5741088619185 114.359238150552,30.5742208752377</gml:coordinates></gml:LineString></gml:lineStringMember></gml:multiLineString></Lin></gml:featureMember>如上描述、地理要素一目了然。
五、GPX
是一種為應用軟件設計的通用的GPS格式,它可以同來描述點、軌跡、路程。這個格式是免費的,它保存的位置、海拔和時間在不同的GPS設備和軟件之間進行交換。數據格式如下:
<wpt lat="42.454873" lon="-71.125094"><ele>96.926400</ele><time>2001-06-02T03:26:59Z</time><name>5224</name><desc><![CDATA[5224]]></desc><sym>Dot</sym><type><![CDATA[Intersection]]></type> </wpt>ol3使用示例:
//實例化矢量數據源,用GPX格式的類解析var vectorSource = new ol.source.Vector({url: dataUrl,format: new ol.format.GPX()});?
六、GeoJSON
是基于JSON對象表示法的地理空間信息數據交換格式。GeoJSON對象可以表示幾何、特征、特征集合。GeoJSON支持的集合類型有:點、線、面、多點、多線、多面和幾何集合。GeoJSON里的特征包含一個幾何對象和屬性,特征集合表示一系列特特征。對于同樣的要素,相對于KML這種基于XML結構的格式,GeoJSON要小很多。但是GeoJSON并不像KML那樣包含樣式信息。需要在客戶端定義樣式,GeoJSON簡單加載速度快。數據格式如下:
{"type": "FeatureCollection","crs": {"type": "name","properties": {"name": "EPSG:3857"}},"features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [0, 0]}},{"type": "Feature","geometry": {"type": "LineString","coordinates": [[4e6, -2e6], [8e6, 2e6]]}},{"type": "Feature","geometry": {"type": "LineString","coordinates": [[4e6, 2e6], [8e6, -2e6]]}},{"type": "Feature","geometry": {"type": "Polygon","coordinates": [[[-5e6, -1e6], [-4e6, 1e6], [-3e6, -1e6]]]}}] }ol3使用示例:
var vectorSource = new ol.source.Vector({url: dataUrl,format: new ol.format.GeoJSON()})七、總結
KML和GeoJSON比較常用,關于GML加載的示例沒有找到較好的,等后期找到了增加上,通過一上午的研究對開放性數據也算有一個小的了解,現在感覺理論很重要,如果我們只會一些操作,我們始終迷惑的,關于OL3源代碼我覺得還是有必要研究一下,了解其構造無論使用還是自定義寫一些組件都會有很大的幫助。
?
轉載于:https://www.cnblogs.com/tuboshu/p/10752342.html
總結
以上是生活随笔為你收集整理的浅谈WebGIS开放数据(矢量数据)的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Spring系列之AOP实现的两种方式
 - 下一篇: Hibernate学习(二)