arcpy:TIF/IMG上色后转KMZ文件
目录
- 前言
- 方法一:手动转换
- 方法二:利用arcpy
- 完整代码
本机环境:arcgis10.2,arcgis自带的python2.7
参考:
https://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy-mapping/listlayers.htm
https://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy-mapping/addlayer.htm
https://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy-mapping/layer-class.htm
https://desktop.arcgis.com/zh-cn/arcmap/10.3/analyze/arcpy-mapping/updatelayer.htm
前言
最近有较多的tif文件需要上色后转换为kmz文件,前期手动上色,后期利用了arcpy,可以完成批量操作。
教程包含两种方法,第一种为手动上色转换,第二种利用arcpy完成操作。
方法一:手动转换
- 加载需要上色转换的文件,可以直接拖动文件到窗口中,如图1所示。
- 选中一个图层,鼠标右键选择属性,在打开的属性窗口中选择符号系统,并按照需要更改,完成上色。分别如图2,图3所示。
- 在搜索窗口中,搜索kml,选择图层转KML,在新打开的窗口中选择图层,设置保存路径,确定即可。如图4所示。
鼠标右键-字母I-勾选显示背景值-字母I-Enter。嗯,5s一张上色,多来几张就是上色机器了。
方法二:利用arcpy
利用arcgis自带的arcpy完成上述操作。原计划是直接将tif转为kml的,有方法可用。由itf转成的kmz是没有上色的,后采用先添加到地图文档中,然后利用更新的方法给目标图层上色,最后转换为kml文件。
完整代码见文末。
- 按照方法一,将上色后的一个图层另存为lyr文件,作为默认的颜色方案。如图5所示。
- 加载一个地图文档,可以将默认的地图文档另存为一个新的地图文档,文件后缀为xmd。同时获取地图文档的第一个图层,后面所有的文件都将添加到该图层下面,达到图1的效果。记载默认配色文件。代码如下:
# TIF_DIR:源文件路径# RESULT_DIR:处理后文件保存的路径# COLOR_PATH:默认的配色方案,必须为图层文件# MXD_PATH:地图文档路径TIF_DIR = r'F:\Ori'RESULT_DIR = r'F:\\kmltest'COLOR_PATH = r'E:\color.lyr'MXD_PATH = r'E:\test.mxd'# mxd:加载地图文档# df:获取地图文档中的第一个图层,中文版本的arcgis默认名字为'图层'# lyrFile:加载为上色方案的图层 mxd = arcpy.mapping.MapDocument(MXD_PATH)df = arcpy.mapping.ListDataFrames(mxd, "")[0]lyrFile = arcpy.mapping.Layer(COLOR_PATH)
- 获需要上色的文件,加载为layer,添加到地图文档中,并更新符号系统,完成上色:
# 利用Layer()方法将需要上色的文件转换为layer对象,其后利用AddLayer()方法添加到地图文档中,# 新添加的图层默认在最前面,获取图层利用UpdateLayer()更新符号系统,完成上色。layer = arcpy.mapping.Layer(tif_path)arcpy.mapping.AddLayer(df, layer)lyr = arcpy.mapping.ListLayers(mxd, "", df)[0]arcpy.mapping.UpdateLayer(df, lyr, lyrFile, True)return lyr
- 将layer转换为kmz文件即可。
# kmz_name:文件名,结合RESULT_DIR生成文件的绝对路径。kmz_name = layer.name.split('.')[0] + ".kmz"result_path = RESULT_DIR + '\\' + kmz_nameprint('Output file: ' + result_path)arcpy.LayerToKML_conversion(layer, result_path) # arcpy中图层转KML的方法
完整代码
# -*- coding: UTF-8 -*-import os
import sys
import arcpy# TIF_DIR:源文件路径
# RESULT_DIR:处理后文件保存的路径
# COLOR_PATH:默认的配色方案,必须为图层文件
# MXD_PATH:地图文档路径
TIF_DIR = r'F:\Ori'
RESULT_DIR = r'F:\\kmltest'
COLOR_PATH = r'E:\color.lyr'
MXD_PATH = r'E:\test.mxd'# mxd:加载地图文档
# df:获取地图文档中的第一个图层,中文版本的arcgis默认名字为'图层'
# lyrFile:加载为上色方案的图层
mxd = arcpy.mapping.MapDocument(MXD_PATH)
df = arcpy.mapping.ListDataFrames(mxd, "")[0]
lyrFile = arcpy.mapping.Layer(COLOR_PATH)def save_kml(layer):"""将layer转换为KML/KMZ文件.调用arcpy的LayerToKML_conversion()方法,生成KML文件,方便在Google Earth中查看。默认打印输出文件的绝对路径Args:layer: arcpy中的layer对象.Returns:None."""# kmz_name:文件名,结合RESULT_DIR生成文件的绝对路径。kmz_name = layer.name.split('.')[0] + ".kmz"result_path = RESULT_DIR + '\\' + kmz_nameprint('Output file: ' + result_path)arcpy.LayerToKML_conversion(layer, result_path) # arcpy中图层转KML的方法def update_color(tif_path):"""给layer上色.先新建图层,然后利用已有的COLOR_PATH文件配色方案,利用UpdateLayer()方法更新符号系统,达到上色的目的。Args:tif_path: 需要上色的文件的路径.Returns:lyr: 上色后的layer对象."""# 利用Layer()方法将需要上色的文件转换为layer对象,其后利用AddLayer()方法添加到地图文档中,# 新添加的图层默认在最前面,获取图层利用UpdateLayer()更新符号系统,完成上色。layer = arcpy.mapping.Layer(tif_path)arcpy.mapping.AddLayer(df, layer)lyr = arcpy.mapping.ListLayers(mxd, "", df)[0]arcpy.mapping.UpdateLayer(df, lyr, lyrFile, True)return lyrif __name__ == '__main__':# 获取文件夹下的所有文件tifs = os.listdir(TIF_DIR)for tif in tifs:# 只处理文件名后缀为tif或者img的文件if tif.endswith('.tif') or tif.endswith('.img'):tif_path = TIF_DIR + '\\' + tifprint('Input tif: ' + tif_path)layer = update_color(tif_path) # 给文件上色save_kml(layer) # 保存上色的文件为kmz格式
更多信息参考ARCGIS帮助。
arcpy:TIF/IMG上色后转KMZ文件相关推荐
- arcpy脚本工具开发:批量合并文件地理数据库(gdb)
文章目录 前言 一.ArcPy是什么? 二.GDB批量合并工具开发思路 三.GDB批量合并工具代码 四.GDB批量合并工具截图 总结 前言 有多个文件地理数据库(即.gdb格式的数据库),数据库内有多 ...
- leaflet 上传KMZ文件,并在map上显示(062)
第062个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中本地上传包kmz文件,解析并在地图上显示图形.在制作本示例的过程中,还有点缺憾,就是kmz中的图片文件没有在jszip ...
- Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战
Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战 目录 Pandas将dataframe保存为pickle文件并加载保存后的pickl ...
- flask 渲染 vue 打包后的dist文件(直接用后端渲染)
flask 渲染 vue 打包后的dist文件(直接用后端渲染) vue项目打包出dist文件 npm run build 代码 from flask import Flask from flask ...
- Vue项目build后静态资源文件路径或新建文件夹图片路径找不到的问题
问题描述:使用vue-cli脚手架工具生成的vue项目,使用npm run build后生成的文件直接双击打开白屏一片. 解决方案: 第一步:修改build文件夹下utils.js,在以下位置加入 i ...
- SVN使用_获取某版本后改动的文件列表
本章将讲解如何通过svn命令获取某版本后改动的所有文件 一键操作,告别svn log的繁杂对比工作. 1:安装SVN命令行工具Subversion(不是TortoiseSVN) 下载Subversio ...
- IDEA中创建maven项目后解决main文件夹下目录不全的问题
IDEA中创建maven项目后解决main文件夹下目录不全的问题 参考文章: (1)IDEA中创建maven项目后解决main文件夹下目录不全的问题 (2)https://www.cnblogs.co ...
- 【每日随笔】电子签名 ( 下载 “e 签保“ 应用 | 使用 手机号 + 短信验证码 登录 | 发起签署 | 签名 | 获取签名后的 PDF 文件及出证信息 )
文章目录 一.下载 "e 签保" 应用 二.使用 手机号 + 短信验证码 登录 三.发起签署 四.签名 五.获取签名后的 PDF 文件及出证信息 一.下载 "e 签保&q ...
- java 0000 0001 0002 000a 000b_Java代码编译后的class文件
还是熟悉的味道,还是最简单的代码. // Hello.java public class Hello { public static void main(String[] args) { System ...
- 解决Qt创建项目后只有.pro文件问题
关于Qt创建项目后只有.pro文件问题的解决
最新文章
- java连接mysql8
- 快速下载Centos7:Centos镜像地址(阿里云镜像)
- Appdelegate跳转到指定tabbaritem
- 有赞统一日志平台初探
- 关于用批处理写ftp上传文件
- 23.vs2015创建Qt界面动态库
- 分享我的Linux开发环境
- jmeter无法启动的解决办法
- 电力载波通信模块JST-HPLC-N-C在物联网通信领域的应用
- U盘等无法弹出的解决办法
- css+html投票系统,网上在线投票系统的设计与实现.doc
- 10.curry 方法
- cgcs2000大地坐标系地图_测绘人必备!从地方坐标系到2000国家大地坐标系的转换...
- 蜂鸣器干扰通讯_提高蜂鸣器响度和降低蜂鸣器及驱动电路干扰电源的电路的制作方法...
- UCI on PUSCH
- SDN学习继续(二)
- 视打击微软 力挺国产红旗Linux
- mysql提权方式linux_Linux提权的几种常用方式
- i7-10700K和i7-9700KF哪个好
- Codeforces Round #829E 1753E. N Machines
热门文章
- Revit (6) - Teigha - LayerTable
- 蓝桥杯题目练习 提升篇 [蓝桥杯2018初赛]三体攻击
- 重庆大学计算机学院期刊范围,重庆大学期刊目录.doc
- matlab光伏最大功率,光伏系统最大功率点跟踪技术的比较
- 2018八大流行网页设计趋势
- 食住玩|3dmax2009到3dmax2022下载安装软件渲染器VRAY与CORONA,提升3dmax疯狂模渲大师一点儿不难!
- ANSYS Workbench16教程学习01
- 识别视频文件夹,listview
- wpe代理管家_wpe不能抓取封包
- 自己做的小游戏希望大家能喜欢