GDAL Driver.Open()报错只读文件-JAVA

本文介绍了一种使用Java GDAL库时遇到的常见错误:尝试修改只读数据源的字段时出现的错误。通过调整DataSource的打开模式,从只读改为读写,解决了在操作SHAP文件时的权限限制问题。
  • 在尝试添加、修改和删除某shp问价字段时,报错数据为只读
ERROR 6: DeleteField : unsupported operation on a read-only datasource.
Exception in thread "main" java.lang.RuntimeException: OGR Error: General Error
	at org.gdal.ogr.ogrJNI.Layer_DeleteField(Native Method)
	at org.gdal.ogr.Layer.DeleteField(Layer.java:203)
  • 这是JAVA GDAL在打开shp文件的时候的一个坑,需要给Drive.Open()添加第二个参数
public static void main(String[] args) throws IOException {
        ogr.RegisterAll();
//		为了支持中文路径,请添加下面这句代码
		gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
//		为了是属性表字段支持中文,请添加下面这句代码
		gdal.SetConfigOption("SHAPE_ENCODING", "CP936");
		Driver driver = ogr.GetDriverByName("ESRI shapefile");
		if(driver==null) {
			System.out.println("fail");
		}
		
		//Open()的第二个参数默认为0,是以只读方式打开文件;1是读写方式打开
		DataSource dSource = driver.Open("..\\Building.shp", 1);
		
		Layer layer = dSource.GetLayerByIndex(0);
		FieldDefn fieldDefn = new FieldDefn("name", ogr.OFTString);
		fieldDefn.SetWidth(50);
		layer.CreateField(fieldDefn, 1);
		layer.DeleteField(layer.FindFieldIndex("name", 1));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值