免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

楼主: 大猪头89
收起左侧

[技术交流] 三调地类字段计算器一键转换三大类

  [复制链接]

0

主题

407

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
121
发表于 2022-5-25 16:38 | 显示全部楼层
谢谢分享
回复

使用道具 举报

3

主题

2万

铜板

30

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2658
QQ
发表于 2022-5-26 07:47 手机频道 | 显示全部楼层
谢谢分享
回复

使用道具 举报

20

主题

2万

铜板

23

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
490
 楼主| 发表于 2022-5-26 22:12 | 显示全部楼层
759944659 发表于 2022-5-24 11:36
代码有点问题应该要把  if 后面的判断改成 elif ,不然计算结果都是错误
def fillSDL(DLMCField):
    if  ...

啊这,我也没太注意啊,不过应该if和elif应该都没问题吧,多个if嵌套,在这里不存在一个地类满足两个列表的情况,不分优先级。不过你说的对elif确实会好一些,多个if都会同时执行判断真假,但elif到真了就会退出判断,效率会更高,感谢好建议。原来是一个啥DLMC,DLBM,互换的代码就改了一下分享出来挣铜板,脚本用的少,主要也是用的不太熟练,所以有时候简单的就用模型或者直接计算器解决了。
回复 支持 反对

使用道具 举报

20

主题

2万

铜板

23

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
490
 楼主| 发表于 2022-5-26 22:14 | 显示全部楼层
15904731212 发表于 2022-5-23 09:44
我试了下没成功,小白希望大佬给出个教程吧。

啊,这,截图这么清楚了还要教程吗,计算的时候注意注意勾选python
回复 支持 反对

使用道具 举报

20

主题

2万

铜板

23

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
490
 楼主| 发表于 2022-5-26 22:22 | 显示全部楼层
15904731212 发表于 2022-5-23 09:44
我试了下没成功,小白希望大佬给出个教程吧。

计算截图

截图

截图
回复 支持 反对

使用道具 举报

20

主题

2万

铜板

23

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
490
 楼主| 发表于 2022-5-26 22:23 | 显示全部楼层
2210074644 发表于 2022-5-23 17:33
小白希望大佬给出个教程吧。

计算截图
1653574873(1).png
回复 支持 反对

使用道具 举报

20

主题

2万

铜板

23

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
490
 楼主| 发表于 2022-5-26 22:30 | 显示全部楼层
计算截图,楼下有人分享了脚本,也可以直接用脚本,里面的第二个第三个if也可以改为elif,但是只对超大批量的计算数据可能会有一些小的效率提升。贴了一个截图,上面有关键的几个地方,其实就是自定义了一个函数,然后下面就是用函数计算你所需的字段,代码块填入的内容就是定义函数的部分,函数名称fillSDL()。然后下面就是需计算字段=fillSDL(地类编码所在字段),lst1、2、3是3个列表,用熟了以后你可以自己尝试修改一下用做别的地类变换也行。我还分享了一个关于代码计算名称和名称计算代码的

计算截图

计算截图
回复 支持 反对

使用道具 举报

11

主题

1万

铜板

35

好友

地信名人堂

Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19

积分
1687

精华勋章宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组VIP勋章贡献勋章名人堂勋章成就学员勋章

发表于 2022-5-26 22:51 | 显示全部楼层
大猪头89 发表于 2022-5-26 22:12
啊这,我也没太注意啊,不过应该if和elif应该都没问题吧,多个if嵌套,在这里不存在一个地类满足两个列表 ...

我开始也以为没影响试了几次计算结果全是最后一个“if“的结果,改成elif就没问题,我也是才学了一点Python基础不清楚什么原因。有可能与ARCGIS版本有关  我这10.8全用“if“”判断就全是最后一个结果



回复 支持 反对

使用道具 举报

20

主题

2万

铜板

23

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
490
 楼主| 发表于 2022-5-27 08:27 | 显示全部楼层
759944659 发表于 2022-5-26 22:51
我开始也以为没影响试了几次计算结果全是最后一个“if“的结果,改成elif就没问题,我也是才学了一点Pyth ...

这个不太清楚了啊,我一会儿再试试,10.2和10.6都正常啊,昨天说错了不是多个if嵌套,是多个if并列,if...if...if...else,有这样的用法,也有if...elif...elif....else用法,还是有点区别的,主要这个列表内容都比较少,所以看不出来效率,但是如果有要素同时满足多个条件的话结果就会不一样。if都会执行,elif就只执行第一个为真的选项。我也是初学者,欢迎交流啊
回复 支持 反对

使用道具 举报

3

主题

2万

铜板

38

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2289
发表于 2022-5-30 15:11 | 显示全部楼层
学习中,谢谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表