概述
目的:将tif格式的遥感图片转换为jpg,匹配下级的I/O操作 why:其实基于linux的convert命令集合bash可以做到普通的tif转jpg,但是对于遥感的图片,也就是栅格数据是不支持这样的转换的,好像是因为tif的格式是32位的,但是普通的图片只有8位数。
思路:通过arcgis将栅格数据导入到arcmap中,再通过界面的导出图片导出,对于少量的图片,完全可以是用手动的方式实现,但是如果量大的数据就不太容易实现了
代码也可以用用gis的批量出图。
# coding: utf-8
import arcpy
from arcpy import env
from arcpy import mapping
import os
path="D:/test"#读取tif目标路径
blank_mxd_path = "D:/test/blank.mxd"# 一个空的mxd文件
target_path="D:/test/out" #转换后的jpg路径
for file in os.listdir(path):
if file[-3:]=="tif":#选择tif格式的图片
print (file)
# 导入mxd文件,也就是arcmap的保存文件
mxd = arcpy.mapping.MapDocument(blank_mxd_path)
df = arcpy.mapping.ListDataFrames(mxd)[0]#dataframe没具体意义
tif_path = os.path.join(path,file)
# 创建raster对象
raster = arcpy.Raster(tif_path)
arcpy.MakeRasterLayer_management(raster,'rasterLayer')
layer = arcpy.mapping.Layer("rasterLayer")# make layer
arcpy.mapping.AddLayer(df, layer, "AUTO_ARRANGE")# add layer
# mxd.saveACopy("D:/test/test.mxd")
# mxd=arcpy.mapping.MapDocument("D:/test/test.mxd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
new_name=file[:-4]+"jpg"
file_target=os.path.join(target_path, new_name)
# 导出图片命令
arcpy.mapping.ExportToJPEG(mxd, file_target, df, df_export_width=1024, df_export_height=1024, resolution=300)
del mxd, df
有人说模型构造器也可以实现这个功能,但是不知道具体怎么操作 关于gis和python的结合,我后续抽空将我整理好的代码上传,有需要的可以改改自己用。
今天诸事不顺,不说啦,love & peace。