JTS拓扑操作-geometry合并
LINK之间合并
link的合并会把端点相同的线连接起来,输出一个LINESTRING的集合
WKTReader reader = new WKTReader();
Geometry line = reader.read("LINESTRING (0 0,0 0.5, 0 1)");
Geometry line1 = reader.read("LINESTRING (1 1,0 0.5, 0 0.6, 0 0.5,0 1)");
Geometry line2 = reader.read("LINESTRING (1 1,0 0.5, 2 2)");
Geometry geometry = null;
LineMerger lineMerger = new LineMerger();
//添加几何对象不需要按照顺序,只要道路首尾坐标点重合即可
lineMerger.add(line);
lineMerger.add(line1);
lineMerger.add(line2);
Collection mergedLineStrings = lineMerger.getMergedLineStrings();
System.out.println(mergedLineStrings.toString());
MULTILINESTRING合并
MULTILINESTRING的合并会把多线拆分为单线后,按多个LINK之间的合并规则进行
Geometry multiLine = reader.read("MULTILINESTRING ((1 1, 0 1), (1 0.5, 1 1))");
LineMerger lineMerger1 = new LineMerger();
lineMerger1.add(multiLine);
Collection mergedLineStrings1 = lineMerger1.getMergedLineStrings();
System.out.println(mergedLineStrings1.toString());
POLYGON合并
POLYGON会把POLYGON和外环和内环提取为线后按多个LINK之间的合并规则进行
// polygon - 会提取边界
// polygon的外环为逆时针
Geometry polygon = reader.read("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))");
LineMerger lineMerger2 = new LineMerger();
lineMerger2.add(polygon);
Collection mergedLineStrings2 = lineMerger2.getMergedLineStrings();
System.out.println(mergedLineStrings2.toString());
// 有环的polygon,pulygon的外环为逆时针,内环为顺时针
Geometry polygon1 = reader.read("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0), (0.1 0.1, 0.1 0.2, 0.2 0.2, 0.2 0.1, 0.1 0.1))");
LineMerger lineMerger3 = new LineMerger();
lineMerger3.add(polygon1);
Collection mergedLineStrings3 = lineMerger3.getMergedLineStrings();
System.out.println(mergedLineStrings3.toString());