zoukankan      html  css  js  c++  java
  • (转贴)怎样在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;
    }
  • 相关阅读:
    分享50个漂亮的设计师个人作品集网站案例
    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
    ajax异步请求
    angularJS(6)
    angularJS(5)
    PHP实现RTX发送消息提醒
    ajax异步请求
    angularJS(4)
    angularJS(3)
    jsPanel插件Option总结
  • 原文地址:https://www.cnblogs.com/finesite/p/336043.html
Copyright © 2011-2022 走看看