arcgis api for flex 开发入门(七)Geometry service 的使用

简介:

arcgis api for flex 开发入门(七)Geometry service 的使用
Geometry service 顾名思义,就是提供针对几何层级的服务,比如说Project,  
Simplify , Buffer,Areas And Lengths , Lengths 等
详细信息可以到下面的地址去看一下
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/Geo
metryServer
这个网址发布了上面5个Geometry service。
下面我们就来讲解如何在你的flex 地图中使用Geometry service,我们拿最常用
buffer来做例子。
首先 定义一个GeometryService
<esri:GeometryService id="myGeometryService"        
url="http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/Geometr
y/GeometryServer"/>
id 唯一标识了这个GeometryService,url指定了GeometryService的地址
和identify工具类似,要进行buffer操作我们先创建一个需要做buffer的几何,
然后定义一个BufferParameters ,然后执行buffer操作,最后将buffer的结果绘
制到GraphicsLayer上。
下面我们介绍一下BufferParameters参数的意义distances为buffer半径,
features 为需要做buffer的要素集合,unit为单位bufferSpatialReference为
buffer操作时的空间参照系。
设置完参数后,要添加buffer完成时间的EventListener,当buffer完成后我们就
可以处理这个buffer的结果了,如下面AS3脚本
               
var bufferParameters : BufferParameters = new BufferParameters();      
         bufferParameters.features = [point];               
bufferParameters.distances = [3000];               
bufferParameters.unit = BufferParameters.UNIT_METER;               
bufferParameters.bufferSpatialReference = new SpatialReference(         
                      02113);  myGeometryService.addEventListener
(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);         
      myGeometryService.buffer( bufferParameters );
关键的一点,bufferParameters.features参数设置的features 一定要有空间参
考系,不然buffer不成功。
其余的绘制操作,将结果绘制到GraphicsLayer上的操作和上一讲基本相同,就不
再讲了。
完整代码:

ContractedBlock.gif ExpandedBlockStart.gif Code
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    
xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:esri
="http://www.esri.com/2008/ags"
    layout
="absolute"
    
>
     
<mx:Script>
        
<![CDATA[
            import com.esri.ags.Graphic;
            import com.esri.ags.events.DrawEvent;
            import com.esri.ags.events.IdentifyEvent;
            import com.esri.ags.geometry.Geometry;
            import com.esri.ags.symbol.Symbol;
            import com.esri.ags.toolbars.Draw;
              import com.esri.ags.SpatialReference;
            import com.esri.ags.events.GeometryServiceEvent;
            import com.esri.ags.tasks.BufferParameters;
            private function drawEndHandler(eventrawEvent):void
            {
                var geometry : Geometry = event.geometry;
                var myMapPoint:Graphic = new Graphic();
                myMapPoint.geometry = geometry;
    geometry.spatialReference = new 
SpatialReference(4016);
                var bufferParameters : BufferParameters = new 
BufferParameters();
                bufferParameters.features = [myMapPoint];
                bufferParameters.distances = [300000];
                bufferParameters.unit = BufferParameters.UNIT_METER;
                bufferParameters.bufferSpatialReference = new 
SpatialReference(102113);
                
                myGeometryService.addEventListener
(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
                myGeometryService.buffer( bufferParameters );
           }
                function bufferCompleteHandler( event : 
GeometryServiceEvent ) : void
                {
                    myGeometryService.removeEventListener
(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
                    for each ( var graphic : Graphic in event.graphics 
)
                    {
                        graphic.symbol = sfs;
                        myGraphicsLayer.add( graphic );
                    }
                }
           
        
]]>
    
</mx:Script>   
     
<esri:SimpleFillSymbol id="sfs" color="0xFF0000">
        
<esri:SimpleLineSymbol color="0x000000"/>
    
</esri:SimpleFillSymbol> 
    
<!-- Draw ToolBar -->  
    
<esriraw id="drawToolbar" map="{map}" 
graphicsLayer
="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">
    
</esriraw>    
       
<esri:GeometryService id="myGeometryService"
        
url
="http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/Geometr
y/GeometryServer"
/>    <mxanel  width="100%" height="100%">
       
<mx:Button label="buffer" click="drawToolbar.activate
(Draw.MAPPOINT)"
/>    
        
<esri:Map id="map" width="100%" height="100%">
            
<esri:ArcGISDynamicMapServiceLayer
                
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Special
ty/ESRI_StatesCitiesRivers_USA/MapServer"
 />
            
<esri:GraphicsLayer id="myGraphicsLayer"/>
        
</esri:Map>
</mxanel>
</mx:Application>

原文地址:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=35667&extra=page%3D4%26amp%3Borderby%3Ddateline

 

 

本文转自温景良(Jason)博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/06/02/1494573.html,如需转载请自行联系原作者

相关文章
|
2天前
|
缓存 安全 API
后端开发中的API设计原则与实践
在数字化时代的浪潮中,后端开发作为技术架构的核心,承载着数据交互与业务逻辑的重要职责。本文深入探讨了API设计的艺术与科学,从RESTful原则到安全性考量,再到性能优化的实践策略,旨在为后端开发者提供一套全面的API设计指南。通过具体案例分析,文章揭示了良好API设计对于提升系统可维护性、扩展性和用户体验的重要性,同时指出了常见设计陷阱与应对策略,为后端开发领域的专业人士提供了宝贵的参考和启示。
16 0
|
7天前
|
JSON API 网络架构
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?
gRPC, 由 Google 推出的开源远程过程调用(RPC)框架, 使两个应用程序间的方法调用变得简单,支持结构化数据的交换。通过采用 Protocol Buffers (Protobuf) ——一种与语言无关的接口定义语言,gRPC 体现了许多现代网络通信技术的优势
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?
|
2天前
|
JSON API 开发者
惊!Python Web开发新纪元,RESTful API设计竟能如此性感撩人?
【7月更文挑战第24天】在 Python Web 开发领域, RESTful API 设计成为一种艺术, 关注用户体验与开发者友好性。
19 7
|
3天前
|
JSON API 数据格式
深度剖析!Python Web 开发中 RESTful API 的每一个细节,你不可不知的秘密!
【7月更文挑战第23天】在Python Web开发中,RESTful API利用HTTP协议构建强大、灵活的应用。GET获取资源,如`/products/:id`;POST创建新资源;PUT更新;DELETE删除。正确使用状态码,如200、201、404、500,至关重要。JSON化数据与版本控制(如`/v1/products`)增强API实用性。认证(OAuth, JWT)保障安全性,而清晰的错误消息提升用户体验。掌握这些细节,方能设计出高性能、易用的RESTful API。
20 7
|
2天前
|
JSON API 数据库
从零到英雄?一篇文章带你搞定Python Web开发中的RESTful API实现!
【7月更文挑战第24天】在Python的Web开发领域,掌握RESTful API至关重要。利用Flask框架,可迅速搭建API,进行用户管理的CRUD操作。需先安装Flask (`pip install Flask`),然后定义路由处理GET、POST、PUT、DELETE请求,实现用户数据的检索、创建、更新和删除。
18 5
|
3天前
|
API 数据安全/隐私保护 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
【7月更文挑战第23天】Python的RESTful API设计在Web开发中流行,提升效率与体验。REST强调HTTP方法(GET, POST, PUT, DELETE)操作资源。使用Flask框架可快速实现API,如管理用户信息。示例代码展示如何创建、读取、更新和删除用户,通过不同HTTP方法和URL路径。实际应用中,增加验证、错误处理和权限控制可增强API的安全性和稳定性。安装Flask后,可运行代码测试API功能。
24 6
|
9天前
|
JSON API 数据格式
App Inventor 2 天气预报App开发 - 第三方API接入的通用方法
通过调用第三方天气api,填入必要的参数,通过Web客户端请求url。返回json格式的数据结果,使用AppInventor2解析json结果,显示到App上即可。
53 5
|
1天前
|
缓存 监控 测试技术
API设计与开发的最佳实践:打造高效、易用的接口服务
【7月更文挑战第26天】API的设计与开发是一个复杂而重要的过程,它直接影响到系统的可用性和用户体验。通过遵循上述最佳实践,开发者可以构建出高效、易用、可扩展的接口服务,为不同软件和服务之间的集成提供有力支持。在未来的软件开发中,API将扮演越来越重要的角色,因此不断学习和实践API设计与开发的最佳实践,对于开发者来说至关重要。
|
1天前
|
API 开发者 Python
淘宝商品详情API接口开发实战
在电商领域,获取淘宝商品详情是关键需求。需先注册淘宝开放平台账号并创建应用,获取AppKey与AppSecret;随后申请商品服务API权限。利用Python,通过AppKey和AppSecret获取Access Token,进而调用商品详情API,需替换示例代码中的`your_app_key`, `your_app_secret`, `your_access_token`, 和`item_id`。注意遵守平台限制,处理可能的错误及合理规划调用策略以避免违规。[示例代码](https://)展示了从获取Access Token到调用商品详情API的全过程。
|
4天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
【7月更文挑战第22天】构建RESTful API实战:**使用Python Flask设计图书管理API,遵循REST原则,通过GET/POST/PUT/DELETE操作处理/books及/books/&lt;id&gt;。示例代码展示资源定义、请求响应交互。关键点包括HTTP状态码的使用、版本控制、错误处理和文档化。本文深入探讨设计哲学与实现技巧,助力理解RESTful API开发。
15 0