在ArcIMS的应用开发中实现圆形区域选择
2007-05-16 09:06
465 查看
怎样在ArcIMS的应用开发中实现圆形区域选择?
内容摘要 |
在基于ArcIMS的Web GIS的应用开发中,无论是通过HTML Viewer,还是ActiveX Connector 或者 Java Connector,我们经常需要提供圆形选择的工具,在地图上任意选择圆心和半径,进而查找位于该圆形区域内的某个图层内的要素。在这种情况下,由于这个圆的圆心并不是来自某个点状图层的要素,而这个圆也不是由图层中的点要素通过缓冲区生成,所以ArcIMS所提供的Buffer缓冲区功能无法直接调用,在这种情况下,我们可以采取其他的变通方式。 |
过程描述 |
在本文中,我们通过圆的内接多边形法来实现。原理就是根据提供的圆心位置和半径,生成一个接近圆形的内接48边形,然后利用这个多边形对象再结合Filter进行空间查询。当然,内接多边形的边数越多就越接近圆,查询结果就越精确。示例代码如下: //Java public Polygon createCirlePolygon(Point pnt,double dRadius){ double sineTheta, cosineTheta, twoPi; int numPoints = 48; //内接多边形的边数 Polygon poly=new Polygon(); Points pnts=new Points(); twoPi = 3.1415 * 2.0; //构造多边形 for(int i=0;i<numPoints;i++) { Point cpt = new Point(); sineTheta = Math.sin(twoPi * (i*1.0/ numPoints)); cosineTheta = Math.cos(twoPi * (i*1.0 / numPoints)); cpt.setX(pnt.getX() + dRadius * cosineTheta); cpt.setY(pnt.getY() + dRadius * sineTheta); pnts.addPointObject(cpt); } pnts.addPointObject(pnts.getPointObject(0)); Ring ring=new Ring(); ring.setPoints(pnts); poly.addRing(ring); return poly; } //ASP.NET public IMSPolygon createCirlePolygon(IMSPoint pnt,double dRadius) { IMSPolygon poly=new IMSPolygon(); double sineTheta, cosineTheta, twoPi; int numPoints = 48; //内接多边形的边数 IMSPoints pnts=new IMSPoints(); twoPi = 3.1415 * 2.0; //构造多边形 for(int i=0;i<numPoints;i++) { IMSPoint cpt = new IMSPoint(); sineTheta = Math.Sin(twoPi * (i*1.0/ numPoints)); cosineTheta = Math.Cos(twoPi * (i*1.0 / numPoints)); cpt.X=(pnt.X + dRadius * cosineTheta); cpt.Y=(pnt.Y + dRadius * sineTheta); pnts.Add(cpt); } pnts.Add(pnts[0]); IMSParts parts=new IMSParts(); parts.Add(pnts); poly.Parts=parts; return poly; } |
相关文章推荐
- 怎样在ArcIMS的应用开发中实现圆形区域选择?
- (转贴)怎样在ArcIMS的应用开发中实现圆形区域选择?
- 怎样在ArcIMS的应用开发中实现圆形区域选择?
- arcims开发经验总结(4) (arcIMS 客户端 连接器的选择)
- Android应用开发--MP3音乐播放器代码实现(二)
- android开发 recycleview的item中加入checkbox实现批量选择条目(复用时防止checkbox勾选状态错乱)
- php--------网页开发实现微信JS的(定位,地图显示,照片选择功能)
- iOS开发-- KVO的实现原理与具体应用
- iOS 9应用开发教程之ios9中实现button的响应
- 如何在ASP.NET大型应用系统的模块化开发实现多版本程序集并存支持[转载]
- OSGI企业应用开发(十五)基于Spring、Mybatis、Spring MVC实现一个登录应用
- 移动开发新选择 使用javascript开发iOS和Android原生应用
- 如何实现 Websphere Portal 6.0 与 Cognos 8 集成应用开发
- android应用开发-从设计到实现 4-4版本管理
- 【Unity开发】Unity实现英雄联盟选择皮肤效果
- C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 标准省市县数据的公司选择窗口实现
- iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
- arcims开发经验总结(2) (地图放大缩小、鹰眼实现逻辑)
- Android 开发 调用图库选择图片实现和参数详解