JAVA版GDAL学习之路——矢量数据的坐标系投影
整体思路
- 创建新的投影坐标系
- 创新新的矢量图层
- 遍历源图层的Geometry,进行坐标系转换
- 转换后的Geometry导出为json或者wkt的形式,赋给新的矢量图层
代码
String shpPath = "...\\4490.shp";
DataSource dataSource = ogr.Open(shpPath,0);
Layer layer = dataSource.GetLayer(0);
SpatialReference dstSR = new SpatialReference();
dstSR.ImportFromEPSG(4527);
String dstPath = "...\\4527.shp";
Layer dstLayer = ShpProcessing.createLayer("ESRI Shapefile",dstPath,"4527",dstSR);
FeatureDefn featureDefn = dstLayer.GetLayerDefn();
Feature feature = null;
while ((feature = layer.GetNextFeature())!=null){
Geometry geometry = feature.GetGeometryRef();
System.out.println("坐标系转换前:");
String json1 = geometry.ExportToJson();
System.out.println(json1);
int i = geometry.TransformTo(dstSR);
System.out.println("坐标系转换后:");
String json2 = geometry.ExportToJson();
System.out.println(json2);
Feature dstFeature = new Feature(featureDefn);
Geometry dstGeo = Geometry.CreateFromJson(json2);
dstFeature.SetGeometry(dstGeo);
dstLayer.CreateFeature(dstFeature);
}