JAVA版GDAL学习之路——矢量数据的坐标系投影

JAVA版GDAL学习之路——矢量数据的坐标系投影

整体思路

  1. 创建新的投影坐标系
  2. 创新新的矢量图层
  3. 遍历源图层的Geometry,进行坐标系转换
  4. 转换后的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 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);
        }
Java GDAL是一个用于处理地理数据的开源库,可以用于读取、写入和转换各种地理数据格式,包括矢量图层。 矢量图层合成是将多个矢量图层合并为一个图层的过程。在Java GDAL中,可以使用矢量图层的数据源进行合成。 首先,我们需要使用GDAL数据源管理器打开原始的多个矢量图层文件。可以通过指定文件路径或URL来打开这些图层。接下来,我们可以通过GDAL矢量数据集类获取每个图层的要素。 在获取到要素后,可以对这些要素进行操作,如合并到一个新的矢量图层中。可以使用矢量数据集类提供的方法来创建一个新的矢量图层,并逐个将原始图层的要素添加到新图层中。 在将要素添加到新图层之前,可以根据需要对要素进行一些处理,例如去除重复的要素,合并重叠的要素,或者根据某些属性值进行筛选。 完成要素合并后,可以使用GDAL数据驱动管理器将新的矢量图层保存为新的文件。可以选择不同的矢量数据格式,如Shapefile、GeoJSON等。 需要注意的是,在进行矢量图层合成时,可能需要考虑图层之间的地理坐标系和属性字段的匹配问题。在合并过程中,可以使用GDAL提供的投影转换和属性字段重命名等功能来处理这些问题。 综上所述,Java GDAL提供了一种方便的方式来合成矢量图层。通过使用GDAL数据源管理器、矢量数据集类和数据驱动管理器,可以读取、处理和保存矢量图层数据,实现矢量图层的合成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值