REST SOE是什么?

关于REST SOE

一种扩展ArcGIS for Server并能够很好的让Web API方便使用的方式就是以Web服务的形式编写SOE。

基于REST的服务通过简单的数据类型接收请求参数并返回响应结果,一般是JSON类型。如果你以前没开发过REST,不要被它吓倒。JSON仅仅是一种以标准方式被程序阅读的格式化的文本信息。

为了能够使用REST SOE Web服务,需要获取SOE的URL并且需要向URL后面添加一些其他的参数信息,比如x、y坐标或者是图层名称。然后服务器会完成相应的工作并返回响应信息,这些响应信息有可能是属性数据、矢量点或者是图片。


REST服务示例

下面的代码是一个使用ArcGIS Server REST 服务的示例。第一个示例没有使用SOE,但是它有助于理解如何请求一个REST Web服务。在这个例子中,你要请求震级大于6.0的近期的地震。这是发送到服务器的URL。注意参数是以问好(?)开始。

http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Earthquakes/EarthquakesFromLastSevenDays/MapServer/0/query?where=magnitude>6&f=pjson

以下是被服务器以JSON格式返回的结果,你可以看到它是一种结构化的键值对集合。它们被大括号{}包裹在一起封装成对象。看如下的代码示例:

{
  "displayFieldName" : "eqid",
  "fieldAliases" : {
    "eqid" : "Earthquake ID"
  },
  "geometryType" : "esriGeometryPoint",
  "spatialReference" : {
    "wkid" : 4326
  },
  "fields" : [
    {
      "name" : "eqid",
      "type" : "esriFieldTypeString",
      "alias" : "Earthquake ID",
      "length" : 50
    }
  ],
  "features" : [
    {
      "attributes" : {
        "eqid" : "c0000f0y"
      },
      "geometry" : {
        "x" : 148.95690000000002,
        "y" : -6.0207999999999515
      }
    }
  ]
}

客户端应用程序可以阅读和解析JSON格式的响应,并在程序中对它进行处理。比如一个Web浏览器可以通过上面代码中的geometry中的x、y坐标绘制一个点,从而能够显示出地震的位置。


REST SOE 示例

上面的示例仅仅使用了一个固定的ArcGIS Server地图服务,没有使用SOE。现在来看一下REST SOE的调用。下面的URL会根据经纬度去请求高程信息(这个SOE被叫做ElevationsSOE):

http://sampleserver4.arcgisonline.com/ArcGIS/rest/services/Elevation/ESRI_Elevation_World/MapServer/exts/ElevationsSOE/ElevationLayers/1/GetElevationAtLonLat?lon=-123&lat=47&f=pjson

下面是该URL各部分的详细解析。注意REST SOE是如何暴露资源和操作的。资源就是服务器上你可以获取信息的东西。操作是服务器去获取信息的方法。在这个例子中,GetElevationAtLogLat就是一种操作。看下面的插图:


通过使用这个操作,服务器以简单JSON对象的形式返回结果。这个值可以被用于表格、标注或者应用程序的其他地方。示例如下:

{
  "elevation" : 83.003478588350134
}

当这些REST服务被调用的时候会发生什么呢?最可能的是,服务器会运行一些ArcObjects代码去得到结果。但是客户端程序不需要了解ArcObjects。客户端只需要知道如何发送RUL请求以及获取JSON格式的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值