• 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);
    }

     

  • 相关阅读:
    linux学习之线程篇(二)
    linux学习之线程篇(一)
    linux学习之进程篇(四)
    linux学习之信号篇(二)
    linux学习之信号篇(一)
    myshell案例
    linux学习之gdb调试工具篇
    linux学习之Makefile篇
    linux学习之进程篇(三)
    Linux常用命令-1
  • 原文地址:https://www.cnblogs.com/yinchuanqi/p/5607690.html
Copyright © 2020-2023  润新知