ArcGIS 2.9.2。-如何计算一个CRC校验和在地理数据库?

298
5
04-06-2022 05:18上午
VincentLaunstorfer
定期撰稿人

你好,

我想知道是否有地理处理工具来计算文件和/或企业GDB中给定属性集的CRC校验和?

理想情况下,应该生成带有字母数字属性和空间属性的CRC校验和,以输出一个健壮的校验和,以检测编辑后特征上的任何变化……如果稍后运行相同的CRC校验和,将很明显地检测到更新的功能…

感谢任何帮助

标签(3)
0荣誉
5回复
Robert_LeClair
Esri杰出贡献者

Vincent -我相信这可能对你有用-看看下面的技术文章在这里-它描述了如何在ArcGIS中对文件使用校验和。但不确定它是否适用于一组GDB属性。

0荣誉
VincentLaunstorfer
定期撰稿人

谢谢抢劫。我希望将类似的方法应用到GDB中。

计算每个特征的校验和(任何算法:MD5, SHA-256…)理想情况下,我将在属性规则中实现它。

是否有任何地理处理工具来计算校验和?或者在属性规则中计算校验和的任何街机代码?

0荣誉
Robert_LeClair
Esri杰出贡献者

明白了,谢谢你的解释,文森特。我知道ArcMap中的Python有GenerateCheckSum命令在航空制图组件中,但在ArcGIS Pro中没有看到它(可能在ArcGIS Pro中找错了地方!)没有GP工具或街机表达,我知道....

0荣誉
VincentLaunstorfer
定期撰稿人

正确,我已经看到了航空制图扩展的GenerateCheckSum…然而,这需要额外的许可,我不确定它是否存在于ArcGIS Pro。另外,属性规则不能使用Python脚本。

然而,如果我使用Python,我发现:

# Python程序查找文件的SHA256哈希字符串import hashlib filename = input("输入文件名:")sha256_hash = hashlib. SHA256 () with open(filename,"rb") as f: #读取并更新字节te_block的4K块哈希字符串值在iter(lambda: f.r eread (4096),b""): sha256_hash.update(byte_block) print(sha256_hash.hexdigest())

https://www.codegrepper.com/code-examples/python/frameworks/file-path-in-python/python + sha256 +检查……

我想知道它是否可行,通过循环选定的属性(包括几何),而不是byte_block,以计算一个SHA256校验和…虽然计算字母数字字符而不是字节会使算法不那么健壮!

VincentLaunstorfer
定期撰稿人

你好,

我设法用计算字段代码块计算属性的校验和,使用hashlib模块

导入hashlib def hash(attribute): hash = hashlib.md5(attribute.encode()).hexdigest()返回属性

这里我使用了MD5算法。但是SHA256也一样好(甚至更好)。

就这么简单!

理想情况下,我想计算这个MD5校验和在街机属性规则…

0荣誉