Arcgis Runtime For Android(3)Feature操作

在线分析功能
在线分析矢量图层

利用 ServiceFeatureTableQueryParameters 对矢量图层进行分析查询

// 1. 创建ServiceFeatureTable对象加载在线图层数据
ServiceFeatureTable service_feature_table  
	= new ServiceFeatureTable("http://ip:port/0");
// 2. 开始异步加载
service_feature_table.loadAsync();
// 3. 监听数据加载完成
service_feature_table.addDoneLoadingListener(() -> {
	// 4. 创建 QueryParameters 查询对象
	QueryParameters query_parameters = new QueryParameters();
	// 5. 设置查询图形与图层中图形的空间关系
	query_parameters.setSpatialRelationship(
		QueryParameters.SpatialRelationship.INTERSECTS);
	// 6. 设置查询返回图形的坐标系
	query_parameters.setOutSpatialReference(SpatialReference.create(4490));
	// 7. 设置是否返回图形对象
	query_parameters.setReturnGeometry(true);
	// 8. 设置查询的图形
	query_parameters.setGeometry(geometry);
	// 9. 设置查询添加 为SQL语句 WHERE 后的语句
	query_parameters.setWhereClause("");
	// 10. 开启查询,设置返回字段为 LOAD_ALL
	ListenableFuture<FeatureQueryResult> query_results;
	query_results = service_feature_table.queryFeaturesAsync(
			QueryParameters, ServiceFeatureTable.QueryFeatureFields.LOAD_ALL);
	// 11. 监听查询完成
	query_results.addDoneListener(() -> {
		try {
			// 12. 获取查询返回值,如果报错说明查询失败
			FeatureQueryResult query_result = query_results.get();
			// 13. 遍历查询到的 Feature 集合
			for (Object result : query_result) {
		    	if (result instanceof Feature) {
		    		// 14. 获取 Feature 对象,必要时候可以在此将基础参数的图形
		    		//     与返回的 Feature 图形进行相交计算
		    		Feature feature = (Feature) result;
	    		}
			}
		} catch (ExecutionException | InterruptedException e) {
			e.printStackTrace();
		}
	});
})
编辑功能
在线编辑矢量图层

利用 ServiceFeatureTable 对可编辑的在线矢量图层进行编辑(新建、删除、更新)。需要在发布在线图层服务时打开相应的权限。
注意事项:

  1. 如果未向 操作图层 中添加该图层使用 FeatureLayer.getSelectedFeaturesAsync() 时会查询获取不到对象。(具体原因未测试)
  2. 如果修改的属性类型为 esriSmallInteger 的话 要使用 short 类型的数值类型,否则会报错要修改的类型不符合。
// ====== 不添加矢量图层对图层数据进行更新 ======
ServiceFeatureTable table = new ServiceFeatureTable("url");
table.loadAsync();
table.addDoneLoadingListener(() -> {
	// 使用 QueryParameters 对象查询数据并修改
	QueryParameters query = new QueryParameters();
	query.setWhereClause("设置查询条件");
	ListenableFuture<FeatureQueryResult> queryResults;
	queryResults = table.queryFeaturesAsync(
		query, ServiceFeatureTable.QueryFeatureFields.LOAD_ALL);
	try {
		// 如果报错可能说明查询失败
		FeatureQueryResult queryResult = queryResults.get();
		for (Feature feature: queryResult) {
			// 可以进行条件判断选择更新
			feature.getAttributes().put("key", "new value");
			ListenableFuture<Void> updateResult;
			updateResult = table.updateFeatureAsync(feature);
			updateResult.addDoneListener(() -> {
				try {
					// 报错的话可能是修改失败
					updateResult.get();
				} catch (ExecutionException | InterruptedException e) {
				    e.printStackTrace();
				}
			});
		}
		table.applyEditsAsync();
	} catch (ExecutionException | InterruptedException e) {
		e.printStackTrace();
	}
});
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值