数据源创建成功,断点datsourceYoungerClassRegion数据源时还是有值的。然后画面,然后从中取出名为“小班面数据”(面数据集)的矢量数据集 dataset,报错java.lang.IllegalStateException: 数据源所属的工作空间为空或者已经释放,创建数据源后面的释放是必须写的吗?是不是这段代码“//释放资源 workspace.dispose();”造成的?
workspace换成全局的了,workspace变成全局的后,创建数据源就直接崩溃了,也不报错误。数据源也是全局的。在新建数据源之前的操作就是打开工作空间,初始化地图。
刚把释放资源这句话注掉了,然后创建数据源就不崩溃了,这句话是必须的吗?
//释放资源 //workspace.dispose();
我这样取出“小班面数据”对吗?已经添加到跟踪图层上了,为什么会为null呢?
Recordset没有create方法,还需要创建吗?方法类是哪个啊?
找到了。我写了创建数据集。最后一句是创建数据集的,那我的数据集名称和数据源别名是一样的,还是要怎么起? //踏查线号文件夹路径 String fileName = FileUtils.getLineNoPath(getLineNo()); //设置 UDB 数据源连接信息 DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.setAlias("YoungerClassRegion"); info.setEngineType(EngineType.UDB); info.setServer(fileName + "/YoungerClassRegion.udb"); //创建数据源 Datasources datasources = workspace.getDatasources(); datsourceYoungerClassRegion = datasources.create(info);
这个是创建数据集吧?datasets.create(dvInfo);报错:数据集名称已被占用,我换了好几个名字了还不行
//创建数据集 Datasets datasets = workspace.getDatasources().get(0).getDatasets(); String dtName = datasets.getAvailableDatasetName("DatasetsRegion"); DatasetVectorInfo dvInfo = new DatasetVectorInfo(dtName, DatasetType.REGION); DatasetVector dv = datasets.create(dvInfo); Recordset rr = dv.getRecordset(false, CursorType.DYNAMIC);
再请教个问题,导出文件前先给他设置坐标系,prjCoordSys是在打开工作空间后获取的地图坐标系,显示为Longitude / Latitude Coordinate System---GCS_China_2000坐标系,我需要的不是投影坐标,怎么把它转成Longitude / Latitude Coordinate System---China Geodetic Coordinate System 2000 坐标系呢?或者这两个坐标系是一种,那是否存在误差?
Dataset dataset = datsourceYoungerClassRegion.getDatasets().get("YoungerClassRegion"); dataset.setPrjCoordSys(prjCoordSys); //导出.shp文件 DataConversion.exportSHP(fileName, dataset);