zoukankan      html  css  js  c++  java
  • 使用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"
    });
  • 相关阅读:
    java数据类型转换
    复习Java基础
    最完整的台达PLC培训教程(沈阳工大)学习笔记1
    6.3.4 方法引用
    6.3.3函数式接口
    6.3 lambda 表达式
    java 核心技术卷一笔记 6 .2.3 接口 lambda 表达式 内部类
    java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类
    java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类
    软件开发需求风险分析
  • 原文地址:https://www.cnblogs.com/lihaijia/p/14555839.html
Copyright © 2011-2022 走看看