Arcgis开发踩坑:FeatureTable查询只返回部分属性?一招强制转换解决所有字段加载
在ArcGIS Runtime或GeoScene Runtime开发中,FeatureTable的queryFeaturesAsync方法默认只返回CODE等少数属性,因其只有一个参数。要获取所有属性,需将FeatureTable强制转换为ServiceFeatureTable,然后调用其重载的queryFeaturesAsync方法,并传入第二个参数ServiceFeatureTable.QueryFeatureFields.LOAD_ALL。文章通过代码示例展示了此解决方法,包括设置查询参数、转换表类型、异步获取完整属性结果及异常处理。
在使用ArcGIS Runtime或GeoScene Runtime进行开发时,FeatureTable 的 queryFeaturesAsync默认只会返回CODE等几个属性。只要把FeatureTable强制转换为ServiceFeatureTable,第二个参数传递ServiceFeatureTable.QueryFeatureFields.LOAD_ALL即可返回所有属性。
问题描述
FeatureTable 的 queryFeaturesAsync 方法只有一个参数,签名如下:
public ListenableFuture<FeatureQueryResult> queryFeaturesAsync(QueryParameters queryParameters);
默认只会返回CODE等少数属性。网上说第二个参数加上ServiceFeatureTable.QueryFeatureFields.LOAD_ALL 即可返回所有属性,但是FeatureTable的queryFeaturesAsync方法没有第二个参数。
解决方法
把 FeatureTable 强制转换为 ServiceFeatureTable 即可。ServiceFeatureTable 的 queryFeaturesAsync方法有第二个参数,示例代码如下。
/**
* 获取相交要素
*
* @param table 数据表
* @param geometry 几何
* @param timeout 超时时间
* @return 结果
*/
public static R<List<Feature>> getIntersectFeatures(FeatureTable table, Geometry geometry, long timeout) {
QueryParameters query = new QueryParameters();
query.setSpatialRelationship(QueryParameters.SpatialRelationship.INTERSECTS);
query.setGeometry(geometry);
query.setMaxFeatures(100000);
query.setOutSpatialReference(spatialReference);
query.setReturnGeometry(true);
R<List<Feature>> result = new R<>();
ListenableFuture<FeatureQueryResult> featuresAsync = ((ServiceFeatureTable) table).queryFeaturesAsync(query, ServiceFeatureTable.QueryFeatureFields.LOAD_ALL);
try {
List<Feature> features = new ArrayList<>();
featuresAsync.get(timeout, TimeUnit.SECONDS).forEach(features::add);
result.setOk(features);
} catch (Exception e) {
e.printStackTrace();
result.setFail(e.getMessage());
}
return result;
}
最后更新于24天前
本文由人工编写,AI优化,转载请注明原文地址: Arcgis开发踩坑:FeatureTable查询只返回部分属性?一招强制转换解决所有字段加载
推荐阅读
ArcGIS Server 10.x出现498 Invalid token错误解决方法
632026-06-10
超图iServer WMTS服务突破18级限制:自定义接口实现高精度瓦片加载
1282026-06-04
Claude Mythos Preview称霸AI编程榜:16项全冠,昂贵且危险的性能怪兽
3582026-04-21
VMware Workstation 16激活码及许可证密钥获取方法
32172024-09-29
XWiki只允许本机访问:Jetty绑定127.0.0.1配置方法
3312026-04-28
CodeBuddyIDE与Trae终极对决:谁是最强国产AI编程IDE?最新版本深度横评
31672025-09-25
评论 (3)
请 登录 后发表评论
感谢分享!之前也遇到了只返回部分字段的问题,原来需要强制转换到ServiceFeatureTable,这个解决方法很实用,帮大忙了!
感谢分享!强制转换这个思路很巧妙,解决了我的疑惑。之前一直以为FeatureTable不支持返回全部字段,这下终于明白了。
感谢分享!之前也遇到这个问题,强制转换的方法确实解决了只返回部分属性的困扰,代码示例很实用。