产品名称:iObject java 9D
操作系统:Win10 64
数据类型:shp
问题详细描述:
编辑记录集报错:记录集是只读的,不可修改
相关代码:
public static void main(String[] args) {
// 打开工作空间,得到数据源
Workspace workspace = new Workspace();
Datasources datasources = workspace.getDatasources();
DatasourceConnectionInfo info = new DatasourceConnectionInfo();
info.setEngineType(EngineType.VECTORFILE);
info.setServer("D:\\data\\成都建筑轮廓数据\\成都.shp");
info.setReadOnly(false);//!!!!!!!!--------这里设置了可编辑
Datasource datasource = datasources.open(info);
System.out.println(datasource.isReadOnly()+"---");//!!!!!!!!--------这里打印出来结果还是为:true
//创建临时数据集
Datasets datasets = datasource.getDatasets();
DatasetVector datasetVector = (DatasetVector) datasets.get("成都");
queryParameterTest(datasetVector, datasets);//快速拆分数据集
//批量生成shp文件
toShp(datasource,datasets);
// 释放相关资源
datasources.closeAll();
info.dispose();
workspace.close();
workspace.dispose();
printWithStar("程序退出");
}
public static void queryParameterTest(DatasetVector dataset_world,Datasets datasets){
System.out.println(datasets.getCount());
// 进行查询
Recordset recordset = dataset_world.getRecordset(false, CursorType.DYNAMIC);//这里设置了动态
for (recordset.moveFirst(); !recordset.isEOF() ; recordset.moveNext()) {
GeoRegion geometry = (GeoRegion) recordset.getGeometry();
int floor = recordset.getInt32("FLOOR");
recordset.setString("name","建筑名称");//!!!!!!!!--------这里报错:记录集是只读的,不可修改
System.out.println(recordset.getString("name"));
}
// 以 dataset_world 为模板创建数据集
DatasetVector dataset_result = (DatasetVector) datasets.
createFromTemplate(datasets.getAvailableDatasetName("文件名称"), dataset_world);//!!!!!!!!!----这里报错数据源是只读,不可修改
// 将空间查询结果追加到新建的数据集中
dataset_result.append(recordset);
// 依次关闭所有对象
dataset_result.close();
recordset.dispose();
dataset_world.close();
}