zoukankan      html  css  js  c++  java
  • JTS的泰森多边形

    使用jts实现泰森多边形,不用懂算法,只需要理解算法的基本原理,学习怎么使用就可以了。

    /**
     * 泰森多边形
     */
    public static void voronoiTest(){
        VoronoiDiagramBuilder voronoiDiagramBuilder = new VoronoiDiagramBuilder();
        List<Coordinate> coords = new ArrayList<Coordinate>();
        Envelope clipEnvelpoe = new Envelope();
        Random random = new Random(100);
        for(int i=0;i<100;i++){
            //使用过程中一把每个坐标需要配置一个属性数据,但是这个coord没法附带一个属性,
            //否则剖分之后不知道多边形对应的点位
            //可以使用coordinate的z值,作为一个唯一标志位
            //剖分后的结果中,每个多边形会有一个getUserData方法,这个方法返回的对象就是
            //对应的coordinate点位,x,y,z相同,但是地址不一样,根据z就能找到多边形对应的属性
            //另一种方法是使用coordinate的hashCode也可以
            Coordinate coord = new Coordinate(random.nextDouble(),random.nextDouble(),i);
            //coord.setUserData(i);
            coords.add(coord);
            clipEnvelpoe.expandToInclude(coord);
            if(i==80){
                System.out.println(coord.hashCode());
            }
        }

       /* coords.add(new Coordinate(2,0));
        coords.add(new Coordinate(2,2));
        coords.add(new Coordinate(0,2));
        coords.add(new Coordinate(1,1));*/
        voronoiDiagramBuilder.setSites(coords);
        voronoiDiagramBuilder.setClipEnvelope(clipEnvelpoe);
       Geometry geom = voronoiDiagramBuilder.getDiagram(JTSFactoryFinder.getGeometryFactory());
        //System.out.println(geom.getGeometryN(0).getClass());
        List<Geometry> geoms = new ArrayList<Geometry>();
        for(int i=0;i<geom.getNumGeometries();i++){
           //下面这个输出语句很重要,用来找到这个多边形对应的原始点位坐标
            System.out.println(geom.getGeometryN(i).getUserData().hashCode());
            geoms.add(geom.getGeometryN(i));
        }
        ShortestPath.showGeometry(geom);
    }

     

  • 相关阅读:
    NSURLConnection和Runloop(面试)
    文件的上传
    CentOS 7防火墙快速开放端口配置方法
    国内常用源镜像地址:
    yum安装zabbix-web-mysql出现[Errno 256] No more mirrors to try.
    1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client。
    http代理和SOCKS代理的区别
    windows下redis安装
    centeros7安装mysql
    nginx配置负载均衡分发服务器笔记
  • 原文地址:https://www.cnblogs.com/yinchuanqi/p/5607690.html
Copyright © 2011-2022 走看看