OpenLayers之多源数据加载八:加载开放数据

    地图聚合为最终用户提供了一系列更广泛的工具和应用程序,它在完善程度和功能性两方面逐渐成熟。因此我们需要一些预定义好的方法在传统的地理空间数据和新一代的地图聚合之间进行交换和发布。为了满足这种需求,出现了一些新的地理空间数据格式,能够让更多的用户和开发者来聚合地理信息,进而达到共享GIS数据和融合地图的最终目的。这些新的数据格式包括KMLGMLGeoJSONGPX等,这些都是开放的数据格式,可以在任何软件、平台、工具或程序中使用,能够很好地满足Web端使用GIS数据的要求,让GIS数据的使用更灵活、应用范围更广泛。

一、KML

    KML是一种文件格式,用于在地图浏览器(如Google地球、Google地图和谷歌手机地图)中显示地理数据。在地理空间相关的网站上,KML无处不在,它支持类似Google地图、微软虚拟地球这样商业化的地图API和OpenLayers这样开源的地图API,并支持导入、导出KML数据。Google把KML作为一种开发标准进行了发布,被开放地理空间联盟(Open Geospatial Consortium,Inc.,OGC)采用,目前是由OGC维护的国际标准

    一个加载KML文件的简单示例:

代码:

    <div id="map"></div>

    <script>
        var map = new ol.Map({
            target: 'map',
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.OSM()
                })
            ],
            view: new ol.View({
                center: [0, 0],
                zoom: 2
            })
        });

        var vectorLayer = new ol.layer.Vector({
            source: new ol.source.Vector({
                url: "http://localhost:8080/openLayers/data/KML/2012-02-10.kml",
                format: new ol.format.KML()
            })
        });

        map.addLayer(vectorLayer);
    </script>

二、GPX

    GPX(GPS eXchange Format,GPS交换格式)是一种XML格式,也是一种为应用软件设计的通用的GPS数据格式,它可以用来描述路点、轨迹、路程。这个格式是免费的,它保存的位置、海拔和时间可以在不同的GPS设备和软件之间进行交换。

    一个加载GPX文件的简单示例:

    代码:

    <div id="map"></div>

    <script>
        var map = new ol.Map({
            target: 'map',
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.OSM()
                })
            ],
            view: new ol.View({
                center: [-7916041.528716288, 5228379.045749711],
                zoom: 12
            })
        });

        var vectorLayer = new ol.layer.Vector({
            source: new ol.source.Vector({
                url: "http://localhost:8080/openLayers/data/gpx/fells_loop.gpx",
                format: new ol.format.GPX()
            })
        });

        map.addLayer(vectorLayer);
    </script>

三、GeoJSON

    GeoJSON是一种对各种地理数据结构进行编码的格式,是基于JSON对象表示法的地理空间信息数据交换格式。

   GeoJSON对象可以表示几何、特征或者特征集合。GeoJSON支持的几何类型有:点、线、面、多点、多线、多面和几何集合。GeoJSON里的特征包含一个几何对象和其属性,特征集合表示一系列特征。

    例如,下面为一个GeoJSON格式的点对象:

    {"type": "Point", "coordinates": [43.542, -118.454] }

    GeoJSON可以被JavaScript简单、快速地解析,它提供了一个可以很容易进行交换的轻量级数据格式。自从GeoJSON正式发布1.0版后,GeoJSON逐渐得到了包括FireEagle和OpenLayers在内的一些流行API的支持。

    一个简单的加载GeoJSON文件的示例:

    代码:

    <div id="map"></div>

    <script>
        var map = new ol.Map({
            target: 'map',
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.OSM()
                })
            ],
            view: new ol.View({
                center: [0, 0],
                zoom: 2
            })
        });

        var vectorLayer = new ol.layer.Vector({
            source: new ol.source.Vector({
                url: "http://localhost:8080/openLayers/data/geojson/countries.geojson",
                format: new ol.format.GeoJSON()
            })
        });

        map.addLayer(vectorLayer);
    </script>

四、总结    

    数据源使用url + format方式加载矢量数据,不同的数据类型使用不同的数据解析类,如下所述:

        GeoJSON格式数据:使用ol.format.GeoJSON类进行解析。

        KML格式数据:使用ol.format.KML类进行解析。

        GPX格式数据:使用ol.format.GPX类进行解析。

    除了使用示例中的url+format设置矢量数据源的方式,还可以调用数据解析类(format)的readFeatures方法读取矢量要素集,通过features参数设置数据源。同时,也可以调用数据源对象的addFeature方法来加载单个矢量要素。

猜你喜欢

转载自blog.csdn.net/qq_35732147/article/details/81539437
今日推荐