• 使用FeatureLayer加载WFS服务


     

    ArcGIS JS API 在当前(4.15版本)提供有WebTileLayer、WMSLayer、WMTSLayer等图层类,但并没有提供加载WFS服务的图层类。所以使用FeatureLayer来实现加载。

    WFS,Web Feature Service,网络要素服务

    思路

    手动构造FeatureLayer的source 属性。

    1
    2
    3
    4
    5
    6
    st=>start: Start
    req=>operation: WFS请求
    xml=>operation: 解析XML
    feature=>operation: 实例化FeatureLayer
    e=>end
    st->req->xml->feature->e

    WFS请求

    GetCapabilities

    参数说明:

    参数是否必须默认值
    SERVICE Y WFS
    REQUEST=GetCapabilities Y  

    请求示例:

    1
    2
    3
    4
    5
    http://www.someserver.com/wfs?

    SERVICE=WFS&

    REQUEST=GetCapabilities

    GetFeature

    参数说明:

    参数是否必须默认值
    VERSION Y 1.1.0
    SERVICE Y WFS
    REQUEST=GetFeature Y  
    TYPENAME Y  
    OUTPUTFORMAT   text/xml; subtype=gml/3.1.1
    BBOX    
    FILTER    
    SORTBY    
    MAXFEATURES    
    PROPERTYNAME    
    SRSNAME    
    FEATUREID    
    EXPIRY    
    RESULTTYPE   results
    FEATUREVERSION    

    请求示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    http://www.someserver.com/wfs?

    SERVICE=WFS&

    VERSION=1.1.0&

    REQUEST=GetFeature&

    PROPERTYNAME=InWaterA_1M/wkbGeom,InWaterA_1M/tileId&

    TYPENAME=InWaterA_1M&

    FILTER=InWaterA_1M/wkbGeom

    解析XML

    从返回的XML中解析数据,构造Features数组。

    解析过程示例代码:

    1
    2
    3
    4
    5
    6
    const parser = new DOMParser();
    const xml = parser.parseFromString(response, 'text/xml');
    const htmlCollection = xml.getElementsByTagName('wfs:FeatureCollection');
    for (let i = 0, len = htmlCollection.length; i < len; i++) {
    console.log(htmlCollection[i].innerHTML);
    }

    Features数组:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    const features = [
    {
    geometry: {
    type: "point",
    x: -100,
    y: 38
    },
    attributes: {
    ObjectID: 1,
    DepArpt: "KATL",
    MsgTime: Date.now(),
    FltId: "UAL1"
    }
    },
    ...
    ];

    实例化FeatureLayer

    1
    2
    3
    4
    const layer = new FeatureLayer({
    source: features, // autocast as a Collection of new Graphic()
    objectIdField: "ObjectID"
    });
  • 相关阅读:
    潜移默化学会WPF绘图 学习(一)
    MovablePlane issue
    ogre Fix bug in HLSL with 3×4 matrix arrays
    如何加强角色渲染的真实感(self shadow + subsurface scattering + rim lighting)
    The DirectX SDK (February 2010) release is now live on Microsoft downloads.
    Color Spaces
    游戏主循环
    实时动态云 perlin noise + 光照 + 太阳光遮挡
    这几个礼拜做的事情
    ogre无法读取中文路径的解决办法
  • 原文地址:https://www.cnblogs.com/lihaijia/p/14555839.html
Copyright © 2020-2023  润新知