如何高效追踪Google Earth修改的.kml文件变更并过滤无关样式改动
解决方案
Google Earth本身没有内置的设置项可以禁止保存时自动生成冗余样式的行为,你可以通过以下三种方案搭配解决问题:
- 调整KML文件结构,禁用内联样式
将所有需要用到的公共样式统一定义在KML根节点<Document>下,为每个样式设置固定且唯一的id,所有点位、线条、面等几何元素仅通过styleUrl属性引用对应样式id,不要在单个<Placemark>节点内嵌套样式定义。该方式可以从根源避免Google Earth每次保存时随机生成新的内联样式id、随意修改样式参数。 - 配置Git自动过滤无效变更
利用Git的clean filter机制,在提交KML文件时自动删掉无关的样式改动:- 在项目根目录新建
.gitattributes文件,添加如下配置:
*.kml filter=kml-clean- 配置Git的kml-clean过滤规则,你可以根据自己团队的diff规则写简单的处理脚本,过滤掉自动生成的样式id变动、无意义的缩放比例修改、多余的ListStyle节点等内容,以下是示例配置(可根据实际需求调整过滤规则):
# 全局配置,所有项目生效 git config --global filter.kml-clean.clean '你的过滤脚本路径' # 单项目配置,仅当前项目生效 git config filter.kml-clean.clean 'sed -e "/<Style id=\"s_.*\">/,/<\/Style>/d"' - 在项目根目录新建
- 统一团队提交规范
要求所有成员提交KML变更前,先查看git diff输出,删除和点位位置、业务属性修改无关的样式改动后再提交。如果需要调整全局样式,统一手动修改根节点下的公共样式定义,不要通过Google Earth界面随意拖拽调整单个元素的样式参数。
内容的提问来源于stack exchange,提问作者Tobias Dewhurst
相关产品推荐
相关产品推荐

