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文件,如果对内容进行修改特定名称修改会报错。

你可能感兴趣的:(gdal)