首页 / 浏览问题 / 云GIS / 问题详情
iServer11.1.0基于森林的分类预测结果和预想的不同
260EXP 2023年08月17日
目前正在编写一个功能,往一个通过iDesktopX创建的postgreSQL的数据集中插入6条数据后,

使用iServer上的基于森林的分类预测功能,通过2种不同的模型获得2种预测结果数据集,然后将这两种结果数据集中的数据显示到页面上

在页面上的顺序是

1.往postgreSQL的表中插入6条数据(使用的是发布到iServer上的拓展服务,通过输入参数组成sql语句INSERT INTO往表内插入数据,插入后会显示插入的条数,这里可以确认插入了6条数据)

2.开始进行使用第一个模型的预测,预测时设置过滤条件

//过滤条件
    data_obj["readasfeaturerdd-filter"] = "groupid = '" + tempDataID + "'";

groupid是插入数据时用于辨别需要进行预测的数据而设置的项目

3.在2完成后,开始进行使用第二个模型的预测,预测时同2一样设置过滤条件

4.在3完成后,获取2和3的结果数据集,最后将处理过的显示在页面上

现在遇到的问题是:

在1插入完数据,开始进行2的预测后,预测结果只有5条,而不是预想中的6条

3的过滤条件和2一样,但3就可以预测出6条结果

通过iDesktopX打开对应的数据集确认过了,2的预测结果数据集里面确实只有5条数据

请问这是什么情况?

1个回答

问题理解:预测数据集是6条数据,用模型1预测得到结果数据只有5条(错误),用模型2预测得到结果数据有6条(正确)。

两个模型的预测过滤条件均一致。

对问题的理解对吗?另外有报错提示信息吗?基于spark开发还是python开发的?
1,560EXP 2023年08月17日
您好

插入数据的部分是使用iServer的拓展服务(用iObjects.java做的jar包)

然后使用ajax调用这个拓展服务插入数据,插入完后立刻开始其中一个预测,预测结束后开始下一个预测。

两个模型的预测过滤条件均一致,就结果数据集的名称和使用的模型不同

预测也是使用的是ajax

在iServer控制台没有看到报错信息

另外,

1.刚刚我怀疑是我设置了过滤条件,导致的问题

所以我隐藏掉设置过滤条件的代码,直接让其预测数据集内的所有内容(本来12条,增加6条后理论上应该得到18条预测数据)

但结果2次预测的结果条数分别为18和14,似乎和过滤条件没有关系

2.使用相同的条件(不同的结果数据集名)在iServer上手动输入参数分析(和上述的3参数相同),结果数量正常(也就是6种)
补充一点,插入上述6条数据的拓展服务内部使用的是sql语句(insert into)
由于你扩展的环境和业务比较复杂,咱们也没法重现模拟。从你反馈的逻辑判断可能是insert 之后未提交事务,建议将数据集拷贝出来在桌面用不同模型做两次预测,如果结果数量一致,说明问题出在数据插入后立马做预测的环节,很可能是insert 之后未提交事务未更新数据表。同时建议在你扩展代码里多埋日志打印预测分析前后的数据集记录 数。
感谢解答。

使用sql语句的insert 之后我这边回返回一个更新个数的显示,这个显示是没有问题的,是6个。

使用sql语句插入数据后还有“未提交事务未更新数据表”的问题吗,如果有,请问应该如何解决?

如果在iObjects.Java中打开工作空间,然后通过往工作空间的数据集中添加数据的形式的话,请问是否能避开这个问题?
可以通过我们的iobjects java组件的datasetVector、recordset接口来对数据集的记录进行添加操作,添加更新后前后获取下数据集记录数对比下是否添加成功了。
我这边使用的是不含geometry的普通表。

请问使用这种表的场合应该如何通过我们的产品去往里面添加数据?
没有geometry,就是纯属性表数据集,可以在add接口是geometry参数传入为null即可
感谢解答,我去试试
您好,我这边使用recordset去添加数据,添加完,update之后进行分类预测

但还是会发生结果数据缺失的问题

看起来和上面说的使用sql语句添加数据无关

请问这个现象能否报个缺陷?
把你的单位、部门、项目名称、姓名、联系电话私信发我,我联系你处理
...