利用GeometryService中的buffer功能做polyline的缓冲区
来源:互联网 发布:深圳乐易网络笔试题 编辑:程序博客网 时间:2024/06/10 10:07
最近由于工作中需要对查询出来的polyline做缓冲区,以增加line对象对鼠标点击事件的敏感度。按照网上和esri官方给出的例子,代码如下
private var bufferParameters:BufferParameters=new BufferParameters;
<esri:GeometryService id="geometryService" url="http://10.1.30.161:8399/arcgis/rest/services/Geometry/GeometryServer" />
<esri:SpatialReference wkid="4326" id="sp" />
bufferParameters.geometries=myLastFeatureArr;
bufferParameters.unit = GeometryService.UNIT_METER;
bufferParameters.distances =[200]; // [ 2000, 4000 ];50.0 / 6378137.0 * 180.0 / Math.PI
bufferParameters.bufferSpatialReference =sp;
bufferParameters.outSpatialReference =sp;
geometryService.addEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
geometryService.buffer(bufferParameters);
private function bufferCompleteHandler(event:GeometryServiceEvent):void
{
geometryService.removeEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
for each (var geometry:Polygon in event.result)
{
var graphic:Graphic = new Graphic();
graphic.geometry = geometry; }
}
其中myLastFeatureArr是一个array,里面存放着要做缓冲区的polyline对象。对于GeometryService的url我是自己发布的一个服务,当然你也可以用esri在线的服务。sp 是我声明的一个参考坐标系,我们常用的wgs_84的wkid就是4326,。 这样做完event.result 的结果总是null。纠结了很长时间,我跟官网是的例子基本一样啊。后来同事说好像要先对polyline做一次simplify(简单化)。我照做了还是不行。我从网上又找了些资料,有人说要先对每一个polyline设定参考坐标系,gra.geometry.spatialReference = sp;
myLastFeatureArr.push(gra.geometry); 果真有效果,这次event.result 的结果不是null。可是一看结果的坐标就傻了,根本不对,polyline的坐标范围经度是123.左右,可是返回结果里面有300多也有-80多,绘出来的缓冲区当然也不对了。继续查资料,后来在网上查找到这句话,
点(Points)和多点(Multipoints):若单位(unit)是长度的,如:米、英尺等,测地线缓冲(geodesic buffering)分析将执行 is performed.
线(Polylines)和多边形(Polygons):单位(unit)必须是角度的,如:十进制度数,缓冲区分析才能执行。
好了这次找到原因了。对200做了一次角度转换bufferParameters.distances=[200/6378137.0 * 180.0/Math.PI];这次总算得到了正确的结果。
- 利用GeometryService中的buffer功能做polyline的缓冲区
- Vim的Buffer/缓冲区,文件
- ArcGIS.Server.9.3和ArcGIS API for Flex的GeometryService和buffer分析(十)
- 利用Arcengine的GP工具实现缓冲区分析功能
- Java NIO中的缓冲区Buffer(二)创建-复制缓冲区
- Java NIO中的缓冲区Buffer(二)创建-复制缓冲区
- Java NIO中的缓冲区Buffer(二)创建-复制缓冲区
- Java NIO中的缓冲区Buffer(二)创建-复制缓冲区
- 缓冲区 buffer
- 缓冲区(Buffer)
- 缓冲区溢出的利用
- Java读取读取的缓冲区Buffer
- 阻塞I/O的缓冲区(Buffer)
- Java NIO缓冲区(Buffer)的数据存取
- NIO缓冲区(Buffer)的数据存取
- node 缓冲区 buffer的基本操作
- polyline轉polygon不同情況buffer的實現方法
- 自定义View利用缓冲区实现绘画板功能
- 移植LB-LINK(rt5370),rt3070,rtl8192 三款USB无线网卡到arm-linux
- 研究:Twitter情感趋势反映Facebook IPO走势
- DOM模型与DOM API
- 引用js格式与引用css格式代码
- AndroidManifest.xml文件详解(uses-feature)
- 利用GeometryService中的buffer功能做polyline的缓冲区
- VS配置路径和宏
- 判断设备的摄像头是否准备好
- 次小生成树
- WIN7安装低版本ODTwithODAC
- C/C++ 64位整形
- MyEclipse 9.0 安装freemarker编辑器 (转)
- RADASM学习笔记【1】-- 乘法学习
- Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务