cgcs2000 批量转换中央子午线 java代码
时间: 2023-07-02 08:23:53 浏览: 159
坐标转换wgs84转cgcs2000.zip
以下是Java代码示例,使用了GeoTools库:
```java
import org.geotools.referencing.CRS;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CoordinateTransform {
public static void main(String[] args) throws IOException {
// 定义WGS84和CGCS2000坐标系
CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326");
CoordinateReferenceSystem cgcs2000 = CRS.decode("EPSG:4490");
// 定义转换器
MathTransform transform = CRS.findMathTransform(wgs84, cgcs2000);
// 定义经纬度列表
List<Double> lons = new ArrayList<>();
lons.add(116.397458);
lons.add(120.153576);
lons.add(113.264434);
List<Double> lats = new ArrayList<>();
lats.add(39.909729);
lats.add(30.287459);
lats.add(23.129163);
// 转换经纬度
List<Double> x = new ArrayList<>();
List<Double> y = new ArrayList<>();
List<Double> z = new ArrayList<>();
for (int i = 0; i < lons.size(); i++) {
double[] result = new double[3];
try {
transform.transform(new double[]{lons.get(i), lats.get(i), 0.0}, 0, result, 0, 1);
} catch (Exception ex) {
ex.printStackTrace();
}
x.add(result[0]);
y.add(result[1]);
z.add(result[2]);
}
// 显示转换结果
System.out.println("CGCS2000坐标:");
for (int i = 0; i < x.size(); i++) {
System.out.printf("%.6f, %.6f%n", x.get(i), y.get(i));
}
}
}
```
在代码中,首先定义WGS84和CGCS2000的投影坐标系。然后,使用`CRS.findMathTransform`方法获取WGS84和CGCS2000之间的转换器。接着,定义经纬度列表,这里使用了三个示例经纬度。然后,使用转换器将经纬度转换为CGCS2000坐标。最后,将转换结果打印输出。
阅读全文