使用产品:jObject java 9D
操作系统:win10 X64
数据类型:shp
问题详细描述:
首先设置DatasourceConnectionInfo.setReadOnly(false)但并不生效;在创建数据集报错只可读;
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()+"---");
//创建临时数据集
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);//这里报错,Exception in thread "main" java.lang.UnsupportedOperationException:createFromTemplate(String name, Dataset templateDataset)数据集的数据源是只读的
// 将空间查询结果追加到新建的数据集中
dataset_result.append(recordset);
// 依次关闭所有对象
dataset_result.close();
recordset.dispose();
dataset_world.close();
}