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"
    });
  • 相关阅读:
    [转] EJB 3和Spring技术体系比较
    JBOSS只能本机localhost和127.0.0.1能访问的解决
    JBOSS EAP 6.0+ Standalone模式安装成Windows服务
    IBM WebSphere MQ 7.5基本用法
    maven学习(上)- 基本入门用法
    mac下环境变量、maven3.1.1 及 jdk1.7.0.45配置
    java:读/写配置文件
    java:使用匿名类直接new接口
    java与c#的反射性能比较
    XmlSpy / XSD 以及 验证
  • 原文地址:https://www.cnblogs.com/lihaijia/p/14555839.html
Copyright © 2011-2022 走看看