首页 / 浏览问题 / 组件GIS / 问题详情
使用JAVA代码,在oracle数据源新建镶嵌数据集无法打开
wi
1EXP 2019年11月05日

使用产品:iobjectsJava 9.1.1.16828

打开Oracle工作空间后,新建一个镶嵌数据集,并添加影像tif文件,显示添加成功。

但是使用ToolKit.getAllError() 显示“不在编辑状态,或没有进行过编辑、R树指针为空”。

在调用DatasetMosaic.open()时,返回false。

添加的镶嵌数据集可以在IDesktop中打开,但是特别卡,偶尔会导致IDesktop崩溃

DatasetMosaic datasetMosaic = datasource.getDatasets().createDatasetMosaic("test_image", null);
boolean b = datasetMosaic.addFiles(array, null);
System.out.println("添加是否成功:" + b);
ErrorInfo[] allErrors = Toolkit.getAllErrors();
if (allErrors != null) {
    for (ErrorInfo errorInfo : allErrors){
       System.out.println(errorInfo.getMessage());
    }
}
boolean open = datasetMosaic.open();
System.out.println("数据集是否打开:" + open);

想实现把影像添加到镶嵌数据集然后发布成地图保存到工作空间,但是遇到了以上的问题

1个回答

您好,您在新建镶嵌数据集时,添加完影像有对镶嵌数据集创建影像金字塔吗?为了增加影像的显示效率,我们提供了创建影像金字塔或者影像分开存储来提升影像显示效率。您那边具体的需求是想将镶嵌数据集发布成地图服务吗?
9,232EXP 2019年11月06日
试过创建影像金字塔,返回是false。需求是的,想把镶嵌数据集发布成地图服务
1.先试试在桌面软件中对镶嵌数据集创建影像金字塔,看是否成功 2.发布成地图服务建议对地图生成地图缓存再进行发布
可以在桌面中创建金字塔。用代码生成地图也失败了
您那边是有界面的程序还是无界面的程序,代码是怎么写的呢

无界面程序,在main方法里面跑的

List<String> tifPathList = findTifPath(new File(tifPath));
String[] array = tifPathList.toArray(new String[0]);
DatasetMosaic datasetMosaic = datasource.getDatasets().createDatasetMosaic("Q" + 
  System.currentTimeMillis(), null);
boolean b = datasetMosaic.addFiles(array, null);
System.out.println("添加影像文件是否成功:" + b);
boolean buildPyramid = datasetMosaic.buildPyramid(PyramidResampleType.NEAREST, true);
System.out.println("创建影像金字塔:" + (buildPyramid ? "成功" : "失败"));

datasetMosaic.open();
System.out.println("数据集是否打开:" + datasetMosaic.isOpen());

Map map = new Map(workspace);
map.setName("A" + System.currentTimeMillis());
Layers layers = map.getLayers();
// 添加图层
layers.add(datasetMosaic, true);
int count = layers.getCount();
System.out.println("添加的图层之后图层总数是:" + count);

map.viewEntire();
Maps maps = workspace.getMaps();
int mapIndex = maps.add(map.getName(), map.toXML());
System.out.println("添加地图后返回的索引是:" + mapIndex);
boolean isSave = workspace.save();
if (!isSave) {
  System.out.println("保存工作空间失败");
}

System.out.println("============打印错误信息============");
ErrorInfo[] allErrors = Toolkit.getAllErrors();
if (allErrors != null) {
for (ErrorInfo errorInfo : allErrors) {
     System.out.println(errorInfo.getMessage());
  }
}

您好,使用代码将镶嵌数据添加到地图中,保存地图图层为空,这边也测试重现了,我先跟研发沟通一下,解决了及时回复您,您那边可以在桌面添加镶嵌数据集到地图中
...