java 操作gdal shp文件和geoJson文件互相转换

借鉴:https://www.jianshu.com/p/6d9a65839f7f

话不多说,自觉上代码。

 

package gdal;

import org.gdal.gdal.Dataset;  
import org.gdal.gdal.Driver;  
import org.gdal.gdal.gdal;  
import org.gdal.gdalconst.gdalconstConstants;  
import org.gdal.ogr.DataSource;
import org.gdal.ogr.ogr;
import org.junit.Test;
public class switchEachOtherGeosionAndShp02 {

/**
* geosion转shp
* 驱动转换, 面的不可以转换。
* 线的和点的可以转换。因为面的点不够全面,导出来的是错误的信息。
*/
@Test
public void test02(){
   // 注册所有的驱动  
       ogr.RegisterAll();
       // 为了支持中文路径,请添加下面这句代码  
       gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");  
       // 为了使属性表字段支持中文,请添加下面这句  
       gdal.SetConfigOption("SHAPE_ENCODING","");  
         
       String strVectorFile = "D:\\TJFXshp\\plant001.geojson";  
       //打开数据  
       DataSource ds = ogr.Open(strVectorFile,0); 
       if (ds == null)  
       {  
           System.out.println("打开文件失败!" );  
           return;  
       }  
       System.out.println("打开文件成功!" );  
       // GeoJSON shp转json的驱动
       // 面的记录  ESRI Shapefile
       // 线的记录  ESRI Shapefile
       // 点的记录  ESRI Shapefile
       String strDriverName = "ESRI Shapefile";
       org.gdal.ogr.Driver dv = ogr.GetDriverByName(strDriverName);  
       if (dv == null)  
       {  
           System.out.println("打开驱动失败!" );  
           return;  
       }  
       System.out.println("打开驱动成功!" );  
       dv.CopyDataSource(ds, "D:\\TJFXshp\\1111118.shp");  
       System.out.println("转换成功!" );  
}


/**
* shp转geosion
*/
@Test
public void test01(){
        // 注册所有的驱动  
       ogr.RegisterAll();
       // 为了支持中文路径,请添加下面这句代码  
       gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");  
       // 为了使属性表字段支持中文,请添加下面这句  
       gdal.SetConfigOption("SHAPE_ENCODING","");  
         
       String strVectorFile = "D:\\TJFXshp\\PlaneShap001.shp";  
       //打开数据  
       DataSource ds = ogr.Open(strVectorFile,0);  
       if (ds == null)  
       {  
           System.out.println("打开文件失败!" );  
           return;  
       }  
       System.out.println("打开文件成功!" ); 
       // GeoJSON shp转json的驱动
       org.gdal.ogr.Driver dv = ogr.GetDriverByName("GeoJSON");  
       if (dv == null)  
       {  
           System.out.println("打开驱动失败!" );  
           return;  
       }  
       System.out.println("打开驱动成功!" );  
       dv.CopyDataSource(ds, "D:\\TJFXshp\\11111.geojson");  
       System.out.println("转换成功!" );  
   }

 

}

 

注意:文件转换必须得是规范的geoJson文件,如果对内容进行修改特定名称修改会报错。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值