Jts个人学习笔记
Jts(Java Topology Suite)是关于GIS空间数据Java的API。
目录
三角网的创建 ............................................................................................................................................................... 2 1、创建Delaunay三角网: .................................................................................................................................................. 2 2、创建Conforming Delaunay三角网 .................................................................................................................................. 2 3、创建Voronoi图 ................................................................................................................................................................ 3 4、Quad-Edge,四方边缘结构 ............................................................................................................................................. 3 5、在Tin、DTin、Voronoi中插入一点(IncrementalDelaunayTriangulator)................................................................ 11 DistanceOp类的相关操作:com.vividsolutions.jts.operation.distance ........................................................................ 11 1、nearestPoints(Geometry g0, Geometry g1) .................................................................................................................... 11 2、distance(Geometry g0, Geometry g1) ............................................................................................................................. 12 3、nearestLocations() ........................................................................................................................................................... 12 LineSegment类的相关操作:com.vividsolutions.jts.geom .......................................................................................... 12 1、closestPoint(Coordinate p) .............................................................................................................................................. 12 2、closestPoints(LineSegment p) .......................................................................................................................................... 13 3、distance (Coordinate p)和distancePerpendicular(Coordinate p) ................................................................................... 13 4、intersection(LineSegment line)和lineIntersection(LineSegment line) ........................................................................... 13 5、pointAlong(double slf) ..................................................................................................................................................... 14 6、pointAlongOffset(double slf, double od) ......................................................................................................................... 14 7、project(Coordinate p)和project(LineSegment seg) ........................................................................................................ 15 8、projectionFactor(Coordinate p) ....................................................................................................................................... 15 9、segmentFraction(Coordinate inputPt) ............................................................................................................................. 16 CGAlgorithms类的相关操作:com.vividsolutions.jts.algorithm .................................................................................. 16 1、orientationIndex(Coordinate p1, Coordinate p2, Coordinate q) ..................................................................................... 16 Angle类的相关操作:com.vividsolutions.jts.algorithm ............................................................................................... 16 1、angleBetween(Coordinate tip1, Coordinate tail, Coordinate tip2) ................................................................................. 17 2、angleBetweenOriented(Coordinate tip1, Coordinate tail, Coordinate tip2) ................................................................... 17 AffineTransformationFactory类的操作:com.vividsolutions.jts.geom.util ................................................................... 17 1、createFromBaseLines(Coordinate src0, Coordinate src1, Coordinate dest0, Coordinate dest1) ................................... 18 AffineTransformation类的操作:com.vividsolutions.jts.geom.util .............................................................................. 18 1、构造函数:AffineTransformation(double[] matrix) ....................................................................................................... 18
三角网的创建
Jts中创建Tin时,会自己添加新的点,不是太好(ArcGIS在创建Tin时也是会自己新建点的)
1、创建Delaunay三角网:
DelaunayTriangulationBuilder delaunayBuilder = new DelaunayTriangulationBuilder(); delaunayBuilder.setSites(coorList);
Geometry geo = delaunayBuilder.getEdges(new GeometryFactory());
2、创建Conforming Delaunay三角网
ConformingDelaunayTriangulationBuilder conformTriBuilder = new ConformingDelaunayTriangulationBuilder();
conformTriBuilder.setSites(geoFactory.createMultiPoint(coorList.toArray(new Coordinate[0])));
conformTriBuilder.setConstraints(geoFactory.createMultiLineString(lineStrings)); Geometry geo = delaunayBuilder.getEdges(new GeometryFactory());
注:还有一个ConformingDelaunayTriangulator,这个类里面包含了更多的方法。但是我们在创建的时候不用管这个类,直接用ConformingDelaunayTriangulationBuilder就好,因为在
ConformingDelaunayTriangulationBuilder内部,它自己调用了ConformingDelaunayTriangulator。真正的Tin创建工作,都是交给ConformingDelaunayTriangulator的,
ConformingDelaunayTriangulationBuilder给我们提供了一个更方便的接口。
ConformingDelaunayTriangulationBuilder部分源码:
3、创建Voronoi图
VoronoiDiagramBuilder voronoiBuilder = new VoronoiDiagramBuilder(); voronoiBuilder.setSites(coorList);
Geometry geo = voronoiBuilder.getDiagram(new GeometryFactory());
4、Quad-Edge,四方边缘结构
在所有的类中(DelaunayTriangulationBuilder、ConformingDelaunayTriangulationBuilder、VoronoiDiagramBuilder),都有一个getSubdivision()方法, DTin CDTin Voronoi 它们都返回一个QuadEdgeSubdivision类的对象, 其结构如下: O:Orig D:Dest L:Left R:Right
Next:左边的面 Prev:右边的面
System.out.println(\ + q);
System.out.println(\ + q.dNext()); System.out.println(\ + q.dPrev()); System.out.println(\ + q.lNext()); System.out.println(\ + q.lPrev()); System.out.println(\ + q.rNext()); System.out.println(\ + q.rPrev()); System.out.println(\ + q.oNext()); System.out.println(\ + q.oPrev()); System.out.println(\ + q.dest()); System.out.println(\ + q.orig());
System.out.println(\ + q.rot());//有错,toString里面的错 System.out.println(\ + q.invRot());//有错,toString里面的错
System.out.println(\ + q.sym());
相关推荐: