街机输出字段名别名

1479
5
跳到解决方案
06-03-2021 11:59 am
AngeliaH
通过
新贡献者II

你好!我试图返回别名字段名,而不是在街机托管功能层弹出的实际字段名。基本上,我正在搜索我的特征层的任何字段的值“Yes”,并希望返回一个字段列表。我试图使用模式函数,但不断得到一个语法错误。有人知道我哪里做错了吗?

//创建一个特征集,我的层叫做ParkRecreationFacilities
var features = FeatureSetByName($map,"Park_and_Recreation_Facilities_public - Park and Recreation Facilities", ['*'], false);

//创建一个包含模式的字典
var aDict =模式(特征);

//创建一个包含字典字段信息的数组
var aArray = aDict["fields"];

//直接访问字段位置1的字典
var adit2 = aArray;

//创建输出变量,该变量将提取别名字段名
var output = aDict2["alias"];

var returnstring = "Yes"
For (var I in $feature) {
If ($feature[i] == returnstring) {
output += i + TextFormatting.NewLine;


返回输出

标签(2)
0荣誉
1解决方案

接受的解决方案
KenBuja
通过 尊敬的贡献者
尊敬的贡献者

发生的事情是你的var输出行失败,因为它不是一个字典,而是一个字典数组。你必须遍历每一个才能得到正确的别名。

下面是显示别名的一种方法

var features = FeatureSetByName($map, 'your layer', ['*'], false);var aDict =模式(特征);var aArray = aDict["fields"];var输出;{if ($feature[i] == 0) {for(var j in aArray) {var dict = aArray[j];如果(dict['名称')= =我){/ /控制台(dict(“别名”));output += dict['alias'] + TextFormatting.NewLine;}}}}返回输出;

注意:忽略“return output:”后面的代码。解析器发生了一些奇怪的事情。

在原帖子中查看解决方案

0荣誉
5回复
AngeliaH
通过
新贡献者II

我还尝试了这种语法:

Var输出= "
var returnstring = "Yes"
For (var I in $feature) {
If ($feature[i] == returnstring) {
output += Schema(i)["alias"] + TextFormatting.NewLine;


返回输出

我觉得我就快找到答案了…

0荣誉
KenBuja
通过 尊敬的贡献者
尊敬的贡献者

发生的事情是你的var输出行失败,因为它不是一个字典,而是一个字典数组。你必须遍历每一个才能得到正确的别名。

下面是显示别名的一种方法

var features = FeatureSetByName($map, 'your layer', ['*'], false);var aDict =模式(特征);var aArray = aDict["fields"];var输出;{if ($feature[i] == 0) {for(var j in aArray) {var dict = aArray[j];如果(dict['名称')= =我){/ /控制台(dict(“别名”));output += dict['alias'] + TextFormatting.NewLine;}}}}返回输出;

注意:忽略“return output:”后面的代码。解析器发生了一些奇怪的事情。

0荣誉
AngeliaH
通过
新贡献者II

是的!谢谢你!我不得不调整一个小东西,它工作!万岁!这是最终的语法:

var features = FeatureSetByName($map, 'Park_and_Recreation_Facilities_public - Park and Recreation Facilities', ['*'], false);
var aDict =模式(特征);
var aArray = aDict["fields"];
var输出;
For (var I in $feature){
if ($feature[i] == "是"){
for(var j in aArray) {
var dict = aArray[j];
If (dict['name'] == i){
output += dict['alias'] + TextFormatting.NewLine;




返回输出;

0荣誉
KenBuja
通过 尊敬的贡献者
尊敬的贡献者

太棒了!这一调整是在测试我的数据时遗留下来的。

0荣誉
BrunoRochaPA
通过
新的因素

大家好!

我不是一个专家与街机我正在寻求帮助,以解决一个问题

所以我用这段代码在弹出窗口中隐藏空字段它有用吗但是我想把“字段名”改为“字段别名”
这是一张相关的桌子,但我想这没有问题。

谢谢大家!: grinning_face_with_smiling_eyes:

var skipFields = ['Creator', 'CreationDate', 'Editor', 'EditDate', 'OBJECTID', 'GlobalID'];var allFields = ";for(var i in $feature){var skip = False;for(var j in skipFields){if(Text(i) == Text(skipFields[j])){skip = True;}} if(isEmpty($feature[i])){控制台(连接('Null Field: ', i));} else if(跳过){控制台(连接('跳过字段:',i));} else {Console(Concatenate('包括字段:',i));allFields = Concatenate([allFields, Upper(i), TextFormatting.]换行,文本($feature[i]),文本格式。换行符,TextFormatting.NewLine]);}}控制台(allFields);返回allFields;

0荣誉