ArcGIS REST API 初认知

REST

REST,资源表现形式的转变。

REST是一种软件架构风格。REST模式相比复杂的SOAP和XML-RPC对比来看,前者更加简洁,越来越多的WEB服务开始采用REST架构风格。

REST架构风格把网络上分布的各种数据看做是资源,分布在各处的资源由URI来标识,而客户端应用通过URI来获取资源的表现形式。

REST是一种设计风格而不是一种标准。

REST架构的应用通常基于HTTP、URI、XML以及HTML这些现有的协议和标准搭建,资源由URI来指定。对资源的操作包括创建、获取、修改和删除,正好对应于HTTP协议的GET、POST、PUT和DELETE方法。

REST通过操作资源的表现形式来操作资源。

 

REST API

暂且就把REST API理解为访问资源的URI。

 

ArcGIS REST API

自9.3版本,ArcGIS Server开始提供REST API,客户端通过REST API访问服务器上发布的GIS服务。

比如:

查看服务器目录:http://192.168.71.182/ArcGIS/rest/services

        http://192.168.71.182/ArcGIS/rest/services?f=html

        http://192.168.71.182/ArcGIS/rest/services?f=pjson

这三个URI可以理解为获得GIS服务目录的API,第一和第二个返回Html页面,第三个则返回json信息:

这是通过HTTP的GET方法获得资源,资源分别以html和json格式返回。

生成管理员令牌API:http://<IP>/ArcGIS/rest/admin/generateToken?f=html

这个操作只支持POST方法,因为存在密码的操作。

POST方法,下面是返回结构(json)

{
  "token" : "VmPxYEpYzr47euTWGlRbgA2GiturXTUZo8PiQFD3w3RBNHMV_3vSz7QbrirEOX1b5RkHlANh7glFbbJfVeilCA..", 
  "expires" : 1427878211494
}

清楚缓存API(利用上面生成的Token):http://192.168.71.182/ArcGIS/rest/admin/cache/clear?token=VmPxYEpYzr47euTWGlRbgA2GiturXTUZo8PiQFD3w3RBNHMV_3vSz7QbrirEOX1b5RkHlANh7glFbbJfVeilCA..&f=json

返回结果:

{"success":"true"}

ArcGIS Server提供很多REST API,如下:

Map Service APIhttp://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer

瓦片地图的REST API:http://services.arcgisonline.com/arcgis/rest/services/ESRI_Imagery_World_2D/MapServer/tile/0/0/1

获得图层和表:http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/layers?f=pjson

查询API:http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/dynamicLayer/query?layer={"id":101,"definitionExpression":"\"sub_region\" like 'Pacific'","source":{"type":"mapLayer","mapLayerId":3}}&text=California&returnGeometry=true&f=html

查询所需的参数:http://resources.arcgis.com/en/help/arcgis-rest-api/index.html#/Query_Map_Service_Dynamic_Layer/02r3000000z6000000/

Geometry Services REST API:http://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer

其中的Buffer 的API:http://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer/buffer?geometries=-117%2C34&inSR=4326&outSR=4326&bufferSR=3857&distances=1000&unit=&unionResults=true&geodesic=false&f=pjson

Feature Service的REST API:http://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/0

可以看到,支持添加、修改、删除等操作。其实在客户端对图层进行增删改的操作同样是使用REST API。

 

ArcGIS 客户端 API(for Flex&JavaScript&SilverLight)

客户端API其实质是对ArcGIS Server REST API的再包装,其本质是通过HTTP Service访问REST API,然后处理返回结果,以地图和数据的形式显示处理。

比如:

浏览地图就是不停的根据范围去获取服务器上的切片REST API:http://services.arcgisonline.com/arcgis/rest/services/ESRI_Imagery_World_2D/MapServer/tile/0/0/1

然后将切片拼接在一块儿形成我们看到的地图,而使用客户端则简化为通过map控件或类,将map service的REST API设定为http://services.arcgisonline.com/arcgis/rest/services/ESRI_Imagery_World_2D/MapServer。

同样,地图的查询、GP服务、几何服务、网络服务都是对相应的REST API的封装。

如:添加要素

这是REST API的Post方式。

返回下面结果:

{
  "addResults" : [
    {
      "objectId" : 7, 
      "globalId" : null, 
      "success" : true
    }
  ]}

我们完全可以使用任何一种能够进行HTTP 访问的语言来访问ArcGIS REST API实现相应功能。

以下转载至:http://www.cnblogs.com/esrichina/archive/2012/11/05/2754580.html

在Flex中需要三步来完成上述操作,首先构造一个JSON格式字符串;其次调用对应的Rest接口;最后对返回结果进行处理。

 

var  feature: Object  = new  Object ();
//设置几何信息
feature.geometry = new  Object ();
feature.geometry.x = x;
feature.geometry.y = y;
//设置属性信息
feature.attributes = new  Object (); 
feature.attributes[ "description" ] = "addPoint" ;
feature.attributes[ "type" ] = type;
                 
//把对象转成JSON,备注:此处使用的是Flash Builder的JSON类,需要SDK4.5及其以上版本的支持。
//当然也可以使用ArcGIS Flex API带的JSON类,在3.0版本中JSON类该层了JSONUtil。               
var  arr: Array  = new  Array ();
arr.push(feature);
var  features: String  = JSON.stringify(arr);

在Flex中调用ArcGIS Server REST API,通过URLRequest调用一个URL地址就可以了,同时需要将JSON赋值给URLRequest的data属性,设置format为json。至于是选择POST还是GET,这个取决于REST接口支持哪种方式。

//调用FeatureServer支持的addFeature操作,添加元素;
var  loader:URLLoader = new  URLLoader();
request.method = URLRequestMethod.POST;
var  data:URLVariables = new  URLVariables();
data.f = "json" ;
data.features = features;
request.data = data;

最后需要对返回的结果进行处理,这里尤其要强调的是,执行后有正确和错误两种返回结果。需要对返回的内容进行判断,才能最终确定是否能正确执行。

loader.addEventListener(Event.COMPLETE, function (event:Event): void {
//对结果进行处理,分成功和失败两种
});            
loader.addEventListener(IOErrorEvent.IO_ERROR, function (event:Event): void {
//执行失败
});            
loader.load(request);

更新和删除点:

和新增点相差无几,就是调用的REST接口和返回结果有所不同而已,当然需要构造对应的JSON字符串。

 

感想

我们完全可以为其他语言制作一套客户端API。比如使用C#调用ArcGIS REST API,并将其按照一定的设计模式封装,完成ArcGIS功能的开发,不过这就搞不清楚这是桌面GIS还是WEBGIS了。

 

转载于:https://www.cnblogs.com/The-SEA/p/4384415.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcGIS REST API是Esri公司提供的一种基于HTTP/HTTPS协议的Web API,用于访问和管理ArcGIS Server和ArcGIS Online等GIS服务和资源。ArcGIS REST API支持多种编程语言和平台,例如Java、Python、JavaScript、.NET、iOS和Android等。以下是ArcGIS REST API的一些主要特点和功能: 1. 支持多种HTTP操作:ArcGIS REST API支持多种HTTP操作,例如GET、POST、PUT和DELETE等,可以用于从GIS服务中获取或修改数据。 2. 支持多种数据格式:ArcGIS REST API支持多种数据格式,包括JSON、XML、HTML和二进制等,可以根据需要选择合适的数据格式。 3. 支持多种GIS服务和资源:ArcGIS REST API支持多种GIS服务和资源,例如地图服务、要素服务、空间分析服务、地理编码服务、地理处理服务、Web地图和Web应用程序等。 4. 支持数据查询和过滤:ArcGIS REST API支持对GIS服务中的数据进行查询和过滤,可以根据要求返回符合条件的数据。 5. 支持安全认证和授权:ArcGIS REST API支持多种安全认证和授权方式,例如基本认证、令牌认证和OAuth2.0认证等,可以保证GIS服务和资源的安全性和可靠性。 6. 支持跨域访问:ArcGIS REST API支持跨域访问,可以在不同的域名和网站之间进行数据交互和共享。 7. 支持自定义扩展:ArcGIS REST API支持自定义扩展,可以根据需要扩展和定制GIS服务和资源的功能和特性。 总之,ArcGIS REST API是Esri公司提供的一种基于HTTP/HTTPS协议的Web API,用于访问和管理ArcGIS Server和ArcGIS Online等GIS服务和资源,具有多种特点和功能,可以满足不同用户的需求和要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值