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

上一篇 / 下一篇  2008-10-17 10:11:28 / 个人分类:mushup

arcgis api for flex 开发入门(七)Geometry service 的使用
;W|*zj%b@0Geometry service 顾名思义,就是提供针对几何层级的服务,比如说Project, 

 Simplify , Buffer,Areas And Lengths , Lengths 等
w7f1L9hx-~Vh0详细信息可以到下面的地址去看一下3sNews.Net——3S社区&资讯平台 ^'Yr0v0h8[%\
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/Geo

metryServer3sNews.Net——3S社区&资讯平台4jvWm g!O)QRv
这个网址发布了上面5个Geometry service。3sNews.Net——3S社区&资讯平台3rh9u d?p\
下面我们就来讲解如何在你的flex 地图中使用Geometry service,我们拿最常用

buffer来做例子。
3WZ`.gF0首先 定义一个GeometryService
^y:Mh|*q3M6R2u0<esri:GeometryService id="myGeometryService"       

url="http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/Geometr

y/GeometryServer"/>3sNews.Net——3S社区&资讯平台n:E?:Th
id 唯一标识了这个GeometryService,url指定了GeometryService的地址
"Jg(aSa0和identify工具类似,要进行buffer操作我们先创建一个需要做buffer的几何,

然后定义一个BufferParameters ,然后执行buffer操作,最后将buffer的结果绘

制到GraphicsLayer上。
z(Y V6@+D0下面我们介绍一下BufferParameters参数的意义distances为buffer半径,

features 为需要做buffer的要素集合,unit为单位bufferSpatialReference为

buffer操作时的空间参照系。3sNews.Net——3S社区&资讯平台~G/fq/N7K7GKP Y
设置完参数后,要添加buffer完成时间的EventListener,当buffer完成后我们就可以处理这个buffer的结果了,如下面AS3脚本
(m+\r-I/S~Lr0               
k4A7y-O2[^ d%z C1k!QI0var 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 );
pTN.wL Um2\ w*U0关键的一点,bufferParameters.features参数设置的features 一定要有空间参考系,不然buffer不成功。3sNews.Net——3S社区&资讯平台a],Z4g8o5jn
其余的绘制操作,将结果绘制到GraphicsLayer上的操作和上一讲基本相同,就不再讲了。
7` vj])R$w5M8U-K(z0下面看一下最后的效果
m:YdU2J d6yO"M0e0
)w#|g!G1hj_ | G:X1}0Flash:demo3sNews.Net——3S社区&资讯平台.Y3l:i6T$K k
3sNews.Net——3S社区&资讯平台,NRz0s8S{J8S
代码:

<?xml version="1.0" encoding="utf-8"?>
;x6e)IvoG g Y0<mx:Application
L6L3h/Go"O@8@0    xmlns:mx="http://www.adobe.com/2006/mxml"
o9J7Mv |o J/Sq8o/sm|3{0    xmlns:esri="http://www.esri.com/2008/ags"
f+]8[-sz)J]0    layout="absolute"3sNews.Net——3S社区&资讯平台Z"h-U;Q*l~ s}
    >3sNews.Net——3S社区&资讯平台,}D8m+C'?Z-[,np
     <mx:Script>3sNews.Net——3S社区&资讯平台 jm_ki B
        <![CDATA[3sNews.Net——3S社区&资讯平台8a&fPZ7y i*}
            import com.esri.ags.Graphic;
|,vP[P8}#zC0            import com.esri.ags.events.DrawEvent;3sNews.Net——3S社区&资讯平台y)WV3r[X1O
            import com.esri.ags.events.IdentifyEvent;3sNews.Net——3S社区&资讯平台![\\iX/};T
            import com.esri.ags.geometry.Geometry;3sNews.Net——3S社区&资讯平台W;j UT[
            import com.esri.ags.symbol.Symbol;3sNews.Net——3S社区&资讯平台F4u Ba6pw"M|
            import com.esri.ags.toolbars.Draw;3sNews.Net——3S社区&资讯平台Ny"{"X3f(x1F
              import com.esri.ags.SpatialReference;3sNews.Net——3S社区&资讯平台BOF7?%lU*uHJ
            import com.esri.ags.events.GeometryServiceEvent;3sNews.Net——3S社区&资讯平台{3\LT/^+v
            import com.esri.ags.tasks.BufferParameters;

            private function drawEndHandler(event:DrawEvent):void3sNews.Net——3S社区&资讯平台$g:L RM!H/u/X%p
            {
d7hX p!Ae#H0                var geometry : Geometry = event.geometry;3sNews.Net——3S社区&资讯平台bts4L]F1E
                var myMapPoint:Graphic = new Graphic();3sNews.Net——3S社区&资讯平台z1K9Q3W/O*^o9mZ H!e
                myMapPoint.geometry = geometry;3sNews.Net——3S社区&资讯平台.vw`)h Q*J
    geometry.spatialReference = new SpatialReference(4016);3sNews.Net——3S社区&资讯平台Zt0C~ | X
                var bufferParameters : BufferParameters = new BufferParameters();3sNews.Net——3S社区&资讯平台LM6hl%Sp+@.u
                bufferParameters.features = [myMapPoint];3sNews.Net——3S社区&资讯平台B{?9WL qq,O
                bufferParameters.distances = [300000];3sNews.Net——3S社区&资讯平台4v$S6PpZiZR
                bufferParameters.unit = BufferParameters.UNIT_METER;
7S*b;~ aa;So0                bufferParameters.bufferSpatialReference = new SpatialReference(102113);
lL(? M*i$s3]0               3sNews.Net——3S社区&资讯平台qaUwT r$O
                myGeometryService.addEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
/x1fLG S'v.Hj&L,Y5M0                myGeometryService.buffer( bufferParameters );

           }

                function bufferCompleteHandler( event : GeometryServiceEvent ) : void3sNews.Net——3S社区&资讯平台wJ ]BF t
                {3sNews.Net——3S社区&资讯平台o@0P4y:h!c
                    myGeometryService.removeEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
5rE`M7}3J0                    for each ( var graphic : Graphic in event.graphics )
N.j.Ne~GVH'Y2HZ q*?0                    {
toGg$Q[z0                        graphic.symbol = sfs;3sNews.Net——3S社区&资讯平台3W]:dI `R`HK
                        myGraphicsLayer.add( graphic );3sNews.Net——3S社区&资讯平台#Y}Ks6I5k5` K-TF
                    }
+svK2zz:i-IIN0                }
W{3x#z XC Y%I0          
1i Xu-Jp5O0        ]]>
(KI ExE/?E m0    </mx:Script>  3sNews.Net——3S社区&资讯平台}U*U c6q F
     <esri:SimpleFillSymbol id="sfs" color="0xFF0000">
IiRt| C S@1\ P0        <esri:SimpleLineSymbol color="0x000000"/>
^dX6DA,P0C i0    </esri:SimpleFillSymbol>
sm M o3z#~;c{7@O0    <!-- Draw ToolBar --> 
AP4S$?T~0    <esri:Draw id="drawToolbar" map="{map}" graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">3sNews.Net——3S社区&资讯平台6X.]$y+QHq9zMI
    </esri:Draw>   
%vL`YdN0       <esri:GeometryService id="myGeometryService"
0PtV_Z$K;VJ q0        url="http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/>    <mx:Panel  width="100%" height="100%">
z IG7EaDt;n7{(Hs0       <mx:Button label="buffer" click="drawToolbar.activate(Draw.MAPPOINT)"/>   
&X-HKWn9rR0        <esri:Map id="map" width="100%" height="100%">3sNews.Net——3S社区&资讯平台T C+|7Y3I(o
            <esri:ArcGISDynamicMapServiceLayer
-i^,|,A7V#o&F'| P0                url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer" />
/a0Yk;Yo q0            <esri:GraphicsLayer id="myGraphicsLayer"/>3sNews.Net——3S社区&资讯平台k(rA3v[
        </esri:Map>
7{*R&q)s*A0 </mx:Panel>
&l1_h-irNB0</mx:Application>


TAG:

引用 删除 lcprincess   /   2008-12-19 13:29:45
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar