基于K-means 切割多边形 JAVA实现
思路初稿详见多边形等分
依赖
geotools
ekmeans
org.locationtech.jts
jts-core
1.16.0
junit
junit
4.12
test
org.geotools
gt-shapefile
${geotools.version}
org.geotools
gt-main
${geotools.version}
org.geotools
gt-swing
${geotools.version}
org.geotools
gt-geojson
${geotools.version}
org.geotools
gt-geometry
${geotools.version}
com.vividsolutions
jts
1.13
org.geotools
gt-geojson
${geotools.version}
ca.pjer
ekmeans
2.0.0
compile
实现过程
结果类 KmeanPolygonResult
package com.huifer.planar.asEt.entity;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.geom.Polygon;
/**
*
Title : KmeanPolygonResult
*
Description : Kmean+泰森多边形平分多边形结果
*
* @author huifer
* @date 2019-01-16
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class KmeanPolygonResult {
/**
* 原始平面
*/
private Polygon polygon;
/**
* 随机点集合
*/
private ArrayList pointList;
/**
* 分组后组id
*/
private int[] assignments;
/**
* 中心集合
*/
private double[][] centroids;
/**
* xlist
*/
private ArrayList xlist;
/**
* ylist
*/
private ArrayList ylist;
/**
* 构造泰森多边形
*/
private List voronoi;
}
k-means 聚合类
package com.huifer.planar.asEt.utils;
import ca.pjer.ekmeans.EKmeans;
import lombok.Data;
/**
*