如何通过R-ArcGIS桥接(arcgisbinding包)显示编码域名
解决arcgisbinding导入数据时显示编码域名的方法
要在R中显示ArcGIS编码域对应的实际名称,需要先提取域的映射关系,再替换导入数据中的编码值,具体步骤如下:
获取要素类的域元数据
使用arc.describe()读取要素类的完整描述信息,其中包含所有字段的域定义:# 先通过arc.open连接到ArcGIS Online中的目标要素类/文件地理数据库 fc <- arc.open("你的要素类访问路径或AGOL URL") # 获取要素类的描述对象 fc_desc <- arc.describe(fc)提取目标字段的编码-名称映射
从描述对象的domains列表中,定位到目标字段对应的域,生成编码与名称的映射向量:# 假设目标字段名为"status",先获取该字段关联的域名称 target_field <- fc_desc$fields[[which(sapply(fc_desc$fields, function(x) x$name == "status"))]] domain_name <- target_field$domain # 根据域名称找到对应的域定义,提取code和name的映射 target_domain <- fc_desc$domains[[which(sapply(fc_desc$domains, function(x) x$name == domain_name))]] code_name_map <- setNames(target_domain$values$name, target_domain$values$code)替换数据中的编码值为实际域名
用arc.select()导入数据后,利用映射向量替换目标字段的值:# 导入原始数据 df <- arc.select(fc) # 将编码值替换为对应的实际名称 df$status <- code_name_map[df$status] # 可选:用factor类型保留编码的分类属性,同时显示名称 df$status <- factor(df$status, levels = names(code_name_map), labels = code_name_map)
如果有多个带编码域的字段,可以通过循环遍历所有带域的字段,批量完成替换操作。
内容的提问来源于stack exchange,提问作者EDG
相关产品推荐
相关产品推荐

