需要先将坐标系转换为墨卡托坐标系
/**
* 根据wkt计算多边形面积
* @param wkt 待计算wkt
* @return 面积数据
*/
public static double getAreaByWkt(String wkt){
Geometry geometry ;
WKTReader reader = new WKTReader();
try {
geometry = reader.read(wkt);
} catch (ParseException e) {
geometry = null;
e.printStackTrace();
}
return getArea(geometry);
}
/**
* 根据多边形类型计算出多边形面积,单位(平方米)
* @param geometry 多边形对象
* @return 面积
*/
public static double getArea(Geometry geometry){
CoordinateReferenceSystem source = null;
try {
source = CRS.decode("CRS:84");
} catch (FactoryException e) {
e.printStackTrace();
}
CoordinateReferenceSystem target = null;
try {
target = CRS.decode("EPSG:3857");
} catch (FactoryException e) {
e.printStackTrace();
}
MathTransform transform = null;
try {
transform = CRS.findMathTransform(source, target, true);
} catch (FactoryException e) {
e.printStackTrace();
}
Geometry transform1 = null;
try {
transform1 = JTS.transform(geometry, transform);
} catch (TransformException e) {
e.printStackTrace();
}
double area = transform1.getArea();
return area;
}
依赖:大概是这些吧
<!-- geo tools -->
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.16.1</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-geojson</artifactId>
<version>21.2</version>
</dependency>
<!-- epsg 查询 -->
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>23.0</version>
</dependency>
参考:参考内容