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. (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.util (17)
1、createFromBaseLines(Coordinate src0, Coordinate src1, Coordinate dest0, Coordinate dest1) (18)
AffineTransformation类的操作:com.util (18)
1、构造函数:AffineTransformation(double[] matrix) (18)
三角网的创建
Jts中创建Tin时,会自己添加新的点,不是太好(ArcGIS在创建Tin时也是会自己新建点的)
1、创建Delaunay三角网:
DelaunayTriangulationBuilder delaunayBuilder = new DelaunayTriangulationBuilder();
delaunayBuilder.setSites(coorList);
java笔记总结
Geometry geo = Edges(new GeometryFactory());
2、创建Conforming Delaunay三角网
ConformingDelaunayTriangulationBuilder conformTriBuilder = new ConformingDelaunayTriangulationBuilder();
conformTriBuilder.Array(new
Coordinate[0])));
conformTriBuilder.ateMultiLineString(lineStrings)); Geometry geo = Edges(new GeometryFactory());
注:还有一个ConformingDelaunayTriangulator,这个类里面包含了更多的方法。但是我们在创建的时候不用管这个类,直接用ConformingDelaunayTriangulationBuilder就好,因为在ConformingDelaunayTriangulationBuilder内部,它自己调用了ConformingDelaunayTriangulator。真正的Tin创建工作,都是交给ConformingDelaunayTriangulator的,ConformingDelaunayTriangulationBuilder给我们提供了一个更方便的接口。ConformingDelaunayTriangulationBuilder部分源码:
3、创建Voronoi图
VoronoiDiagramBuilder voronoiBuilder = new VoronoiDiagramBuilder();
voronoiBuilder.setSites(coorList);
Geometry geo = Diagram(new GeometryFactory());
4、Quad-Edge,四方边缘结构
在所有的类中(DelaunayTriangulationBuilder、ConformingDelaunayTriangulationBuilder、V oronoiDiagramBuilder),都有一
其结构如下:
O:Orig
D:Dest
L:Left
R:Right
Next:左边的面
Prev:右边的面
System.out.println("q :" + q);
System.out.println("dNext :" + q.dNext());
System.out.println("dPrev :" + q.dPrev());
System.out.println("lNext :" + q.lNext());
System.out.println("lPrev :" + q.lPrev());
System.out.println("rNext :" + q.rNext());
System.out.println("rPrev :" + q.rPrev());
System.out.println("oNext :" + q.oNext());
System.out.println("oPrev :" + q.oPrev());
System.out.println("dest :" + q.dest());
System.out.println("orig :" + q.orig());
System.out.println("rot :" + q.rot());//有错,toString里面的错
System.out.println("invRot :" + q.invRot());//有错,toString里面的错
System.out.println("sym :" + q.sym());