首页 / 浏览问题 / 组件GIS / 问题详情
iobjects java 缓冲区查询后 数据异常
77EXP 2020年12月23日

使用iobjectsjava :  objects-data-10.0.0.17726.jar

数据是点数据   经纬度坐标 大地2000的

缓冲区查询  

Recordset record = datasetVector.query(rect, buffer, null, CursorType.STATIC);
查询回的record.getRecordCount()的总数显示的是 所有的数据;

我根据查询的record数据中的一个类型字段cla   来分类别统计【宾馆】个数  发现统计的个数只有17个和实际数据107个对不上。

但是我又重新验证使用 

datasetVector.query(rect, buffer, “cla='宾馆'”, CursorType.STATIC);

来缓冲区加过滤条件查询 可以查询出宾馆的个数为107个。

求解 不加过滤条件时,缓冲区查询的数据是否正确问题解决

问题关闭原因: 找到解决办法  点缓冲区查询确实是有问题

1个回答

你好,确认一下,是同一个buffer ,不加sql过滤条件的情况返回只有17个(错误结果),加了sql过滤查询返回107条记录(正确结果)是吗。方便将您的数据和buffer设置的代码发我一下吗?我重现一下呢
2,842EXP 2020年12月24日

数据udb地址:https://share.weiyun.com/E9uGriel  经纬度

不带参数:缓冲区中心点  114.26672363308423,30.596496581685994    buffer :1

Point2D point2d = new Point2D(x,y);
Geometry rect =  new GeoPoint(point2d);
 datasetVector.query(rect, buffer, null, CursorType.STATIC);

带参数

datasetVector.query(rect, buffer, “cla='宾馆'”, CursorType.STATIC);

我这边用10.1.0的版本测试没有问题,你更换一下组件版本试下呢

对  我描述可能不清楚      不带过滤 查询的总个数  recordSet.getRecordCount()是8983。

这个时候 遍历recordSet。 

int a = 0; 

while(!set.isEOF()){
   
Object cla = set.getFieldValue("cla");
if (null != cla && "宾馆".equalsIgnoreCase(cla.toString())){
   a++;
}

   


set.moveNext();

}

最后统计的a的是17 

查询遍历统计个数还是对不上呀

遍历属性  结果有所有的记录信息为空的记录。  但是实际数据是没有这种的

...