首页 / 浏览问题 / 组件GIS / 问题详情
iobjects java 切缓存如何增量更新
twt
22EXP 2024年01月04日

版本1-数据集A:有smid1~3, 共3条记录。

版本2-数据集A:有smid2~5, 共4条记录,该版本删除了smid1的数据和新增了smid4,smid5的数据。

这种情况下如何在不重新生成整个数据集的情况下,如何做到增量更新,新增的记录集和删除对应记录集的缓存数据。

1个回答

您好,iObjects Java 11.1.1 组件提供了 OSGBCacheBuilder.append 接口用于局部更新已生成的三维切片缓存,使用 append 接口也可实现增量更新效果,接口详细说明和使用方式可参考 iObjects Java 组件帮助文档,如下图所示:

三维切片缓存更新提供了 2 种方式:

  1. 按数据范围 Bounds 更新;
  2. 根据模型 ID 更新。

对于已删除的数据,可通过按数据范围更新的方式更新三维切片缓存,即可实现删除效果;对于新增的数据,可任选以上 2 种更新方式之一,皆可达到新增三维切片缓存的效果。OSGBCacheBuilder.append 接口的详细使用方式,可参考以下代码示例:

注意:OSGBCacheBuilder 对象参数需与待更新的三维切片缓存生成参数保持一致!若不清楚具体参数值,可打开待更新的三维切片缓存配置文件 *.scp 从中获取。

// 按数据范围更新三维切片缓存
builder.setBounds(bounds);
boolean append = builder.append(UpdateType.ALL, true);

// 按模型 ID 更新三维切片缓存
UpdateObjectsInfo updateObjectsInfo = new UpdateObjectsInfo();
updateObjectsInfo.setDataset((DatasetVector) building);
updateObjectsInfo.setObjectIDs(objectIDs);
ArrayList<UpdateObjectsInfo> updateObjectsInfos = new ArrayList<>();
updateObjectsInfos.add(updateObjectsInfo);
builder.setUpdateObjectsInfoArray(updateObjectsInfos);
boolean append = builder.append(UpdateType.ALL, true);

希望可以帮到您。

2,258EXP 2024年01月04日
JVM 崩溃可能有多种原因,需要根据 hs_ 开头的崩溃日志中更多的内容才能分析定位崩溃原因,建议确认下您使用的 iObjects Java 组件版本,推荐使用 iObjects Java 11.1.1 版本,看您输出的日志信息是 iServer 10.1.1 版本,若是使用 iObjects Java 10.1.1 版本的组件,建议升级到 11.1.1

控制台log是工程中用到了iServer下面的其他jar,才显示的是 iServer 10.1.1的jar;

环境变量和方法中的jar用的是11.1.1版本;

您那边能帮忙测试下吗,环境变量和jar都为11.1.1版本;我单独弄个个工程只引用了11.1.1的java组件同样的问题。
建议私信我您的联系方式,并把您的测试数据和运行崩溃项目一起发给我,我本地测试分析原因
解决方案:客户编写的代码逻辑不正确,已提供客户逻辑正确且使用客户提供的测试数据可正常运行出结果的示例代码供参考。
...