搜索此博客
2018年1月1日星期一
2017年12月29日星期五
img format file to tif format file using gdal(批量栅格格式转换:基于GDAL)
Source Code:
import os.path
#定义一个函数,path为你的路径
def traversalDir_FirstDir(path):
#定义一个列表,用来存储结果
list = []
#判断路径是否存在
if (os.path.exists(path)):
#获取该目录下的所有文件或文件夹目录
files = os.listdir(path)
for file in files:
#得到该文件下所有目录的路径
m = os.path.join(path,file)
#判断该路径下是否是文件夹
if (os.path.isdir(m)):
h = os.path.split(m)
list.append(h[1])
#print list
for file_name in list:
source_file_HH = path + file_name + '\\' + file_name +'_TNR_OB_CAL_TC.data\\' + 'Aim_Beta0_HH.img '
output_file_HH = path + file_name + '\\' + file_name +'_TNR_OB_CAL_TC.data\\' + 'Aim_Beta0_HH.tif' + '\r\n'
source_file_HV = path + file_name + '\\' + file_name +'_TNR_OB_CAL_TC.data\\' + 'Aim_Beta0_HV.img '
output_file_HV = path + file_name + '\\' + file_name +'_TNR_OB_CAL_TC.data\\' + 'Aim_Beta0_HV.tif' + '\r\n'
source_file_HH_HV = path + file_name + '\\' + file_name +'_TNR_OB_CAL_TC.data\\' + 'Aim_Beta0_HH_HV.img '
output_file_HH_HV = path + file_name + '\\' + file_name +'_TNR_OB_CAL_TC.data\\' + 'Aim_Beta0_HH_HV.tif' + '\r\n'
batch_com_HH = 'gdal_translate -of GTiff ' + source_file_HH + output_file_HH
batch_com_HV = 'gdal_translate -of GTiff ' + source_file_HV + output_file_HV
batch_com_HH_HV = 'gdal_translate -of GTiff ' + source_file_HH_HV + output_file_HH_HV
f1 = open('C:/Users/Baikal/Desktop/delete/batch_2_Tiff.txt','a+')
f1.write(batch_com_HH)
f1.write(batch_com_HV)
f1.write(batch_com_HH_HV)
traversalDir_FirstDir("G:\\2016.06.Sen\\Processed\\")
该Python程序运行结果会生成一个batch_2_Tiff.txt的文本文件,将该文件的格式修改为.
bat,然后在OSGeo4W Shell中运行这个.bat批处理文件,即可批量将文件夹下的img格式文件转化为tif文件~~~
2017年12月28日星期四
常用快捷键(Matlab、Python 以及 IDL)
Matlab:
对齐:选中需要对齐的多行,然后Ctrl+I组合键进行多行对齐;
缩进:CTRL + [ 或者 CTRL + ] 向左缩进 或 向右缩进
注释/反注释:CTRL + R / CTRL + T
自动调整:
Ctrl+i 自动调整缩进格式,比如有if……end,for……end语句但是没有缩进的话程序不太好看,可以使用此键,对多行有效的
切换窗口:
Ctrl+Tab 可以在Command Window,Current Directory和Command history之间切换当前空间。
命令有关:
上下箭头寻找此前和后输入的命令,每次一条;或者是输入少量字母,那么显示出来最后一条以该字母为开头的命令
Esc:删除当前行的全部内容
程序运行:
F12 设置取消断点
F5 运行
1. Ctrl+C 中断正在执行的操作;
2. figure命令新建一个绘图窗口;
3. 注释掉一段程序:%{、%};
4. doc 命令名,打开命令的帮助文档;
5. clc清屏;
6. clear 和clear all
clear 变量名:可以清除workspace中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。
clear all 清除所有的变量,使workspace一无所有,当重新开始一次算法验证时,最好执行一次,让workspace中的变量一目了然。
7.close all
8.上下光标键↑↓
在命令窗口中,上下光标键可以将历史记录中的命令复制到输入位置,便于快速重新执行。如果输入命令的前几个字母如 [row, col] =,再使用光标键,则只会选择以这些字母开始的命令。
Python:
对齐:
注释/反注释:ALT + 3 / ALT + 4
Spyder:
Ctrl + 1: 注释/反注释
Ctrl + 4/5: 块注释/块反注释
Ctrl + L: 跳转到行号
Tab / Shift + Tab: 代码缩进/反缩进
Ctrl +I:显示帮助
IDL:
对齐:CTRL + SHIFT + F
注释:Ctrl+;
Reference:
Matlab 快捷键参考:http://hyz301.iteye.com/blog/2089436 ;
Python 快捷键参考:http://blog.csdn.net/z1988316/article/details/7109047 ;
Spyder 快捷键参考:https://www.cnblogs.com/DaleSong/p/5289393.html
对齐:选中需要对齐的多行,然后Ctrl+I组合键进行多行对齐;
缩进:CTRL + [ 或者 CTRL + ] 向左缩进 或 向右缩进
注释/反注释:CTRL + R / CTRL + T
自动调整:
Ctrl+i 自动调整缩进格式,比如有if……end,for……end语句但是没有缩进的话程序不太好看,可以使用此键,对多行有效的
切换窗口:
Ctrl+Tab 可以在Command Window,Current Directory和Command history之间切换当前空间。
命令有关:
上下箭头寻找此前和后输入的命令,每次一条;或者是输入少量字母,那么显示出来最后一条以该字母为开头的命令
Esc:删除当前行的全部内容
程序运行:
F12 设置取消断点
F5 运行
1. Ctrl+C 中断正在执行的操作;
2. figure命令新建一个绘图窗口;
3. 注释掉一段程序:%{、%};
4. doc 命令名,打开命令的帮助文档;
5. clc清屏;
6. clear 和clear all
clear 变量名:可以清除workspace中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。
clear all 清除所有的变量,使workspace一无所有,当重新开始一次算法验证时,最好执行一次,让workspace中的变量一目了然。
7.close all
8.上下光标键↑↓
在命令窗口中,上下光标键可以将历史记录中的命令复制到输入位置,便于快速重新执行。如果输入命令的前几个字母如 [row, col] =,再使用光标键,则只会选择以这些字母开始的命令。
9.Tab补全
对名称记得不太清楚的命令,可以输入开头的几个字母,然后按Tab键,当只有一个以这些字母开头的命令时,将自动补全命令名,否则显示一个命令名列表,方便从中选择。当然,只在命令窗口中有效。
对名称记得不太清楚的命令,可以输入开头的几个字母,然后按Tab键,当只有一个以这些字母开头的命令时,将自动补全命令名,否则显示一个命令名列表,方便从中选择。当然,只在命令窗口中有效。
10.cell模式
在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。
执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。
cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。
在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。
执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。
cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。
11.cell模式
在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。
执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。
cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。
在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。
执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。
cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。
Python:
对齐:
注释/反注释:ALT + 3 / ALT + 4
Spyder:
Ctrl + 1: 注释/反注释
Ctrl + 4/5: 块注释/块反注释
Ctrl + L: 跳转到行号
Tab / Shift + Tab: 代码缩进/反缩进
Ctrl +I:显示帮助
IDL:
对齐:CTRL + SHIFT + F
注释:Ctrl+;
Reference:
Matlab 快捷键参考:http://hyz301.iteye.com/blog/2089436 ;
Python 快捷键参考:http://blog.csdn.net/z1988316/article/details/7109047 ;
Spyder 快捷键参考:https://www.cnblogs.com/DaleSong/p/5289393.html
2017年12月16日星期六
2017年12月13日星期三
IDL调用插件中的函数(以IDL调用MCTK为例)
方法1:将扩展工具放在ENVI Classic安装路径(save_add)中,保证ENVI Classic能够正常使用此扩展工具。然后在IDL中启动ENVI Classic之后,便可以调用,如Fig. 1要求。
方法2:在IDL代码中 restore, xxxxx.sav ,然后就可以调用这个sav文件中的接口了。
IDL调用MCTK实例:
;+
; Author: Baikal
;-
; Time: Nov 29,2017
;
Pro test_batch_modis_conversion_MOD02
compile_opt idl2
;restore,'D:\Program Files\Exelis\ENVI53\classic\save_add\mctk.sav'
ENVI,/restore_base_save_files
ENVI_Batch_Init
mod02_file = 'G:\2016.06.MOD\MOD02\1Source Data\201606\MYD02HKM.A2016153.1920.006.2016154155642.hdf'
output_location = 'G:\2016.06.MOD\MOD02\2Layer Stacking\'
output_rootname = '2016154155642'
;Output method schema is:
;0 = Standard, 1 = Projected, 2 = Standard and Projected
out_method = 1
;Calibration method schema is:
;0 = Radiance / Emissivity, 1 = Reflectance / Emissivity, 2 = Radiance / Brightness Temp
;Set Projection
output_projection = ENVI_proj_create(/geographic)
;Calibration method schema is:
;0 = Radiance/Emissivity,1 = Reflectance/Emissivity,2 = Radiance/Brightness Temperature
Calib_Method = 1
;Choosing linear interpolation
interpolation_method = 0
;Note:Do not put the bridge creation/destruction code inside a loop
bridges = mctk_create_bridges()
convert_modis_data, in_file = mod02_file, $
out_path = output_location, out_root = output_rootname, $
out_method = out_method, $
out_proj = output_projection, $
Calib_Method = Calib_Method, $
SD_POS = [0,1], $
interp_method = interpolation_method, $
bridges = bridges, $
/progress
mctk_destroy_bridges, bridges
end
参考链接:
我在ArcGIS知乎上的提问:http://zhihu.esrichina.com.cn/question/19143
![]() |
| Fig. 1 |
方法2:在IDL代码中 restore, xxxxx.sav ,然后就可以调用这个sav文件中的接口了。
IDL调用MCTK实例:
;+
; Author: Baikal
;-
; Time: Nov 29,2017
;
Pro test_batch_modis_conversion_MOD02
compile_opt idl2
;restore,'D:\Program Files\Exelis\ENVI53\classic\save_add\mctk.sav'
ENVI,/restore_base_save_files
ENVI_Batch_Init
mod02_file = 'G:\2016.06.MOD\MOD02\1Source Data\201606\MYD02HKM.A2016153.1920.006.2016154155642.hdf'
output_location = 'G:\2016.06.MOD\MOD02\2Layer Stacking\'
output_rootname = '2016154155642'
;Output method schema is:
;0 = Standard, 1 = Projected, 2 = Standard and Projected
out_method = 1
;Calibration method schema is:
;0 = Radiance / Emissivity, 1 = Reflectance / Emissivity, 2 = Radiance / Brightness Temp
;Set Projection
output_projection = ENVI_proj_create(/geographic)
;Calibration method schema is:
;0 = Radiance/Emissivity,1 = Reflectance/Emissivity,2 = Radiance/Brightness Temperature
Calib_Method = 1
;Choosing linear interpolation
interpolation_method = 0
;Note:Do not put the bridge creation/destruction code inside a loop
bridges = mctk_create_bridges()
convert_modis_data, in_file = mod02_file, $
out_path = output_location, out_root = output_rootname, $
out_method = out_method, $
out_proj = output_projection, $
Calib_Method = Calib_Method, $
SD_POS = [0,1], $
interp_method = interpolation_method, $
bridges = bridges, $
/progress
mctk_destroy_bridges, bridges
end
参考链接:
我在ArcGIS知乎上的提问:http://zhihu.esrichina.com.cn/question/19143
2017年12月11日星期一
Spyder 中使用GDAL(配置办法)
Spyder导入ArcPy/GDAL
直接用Anaconda自带的GDAL而不是利用外源的安装包,
操作:
在Anaconda Prompt中输入Conda install gdal,如Fig. 1所示。
Fig. 1 在Anaconda Prompt中配置Spyder中的GDAL命令
这样的话,导入两个GIS库都没有问题啦,如Fig. 2所示。~
Fig. 2 在Spyder中应用GDAL与Arcpy
Reference:
2017年11月14日星期二
遥感中常用的存储数据的三种格式BSQ、BIP以及BIL
BSQ [samples, lines, bands],
BIL [samples, bands, lines],
BIP [bands, samples, lines].
BIL [samples, bands, lines],
BIP [bands, samples, lines].
2017年11月12日星期日
2017年11月8日星期三
MODIS 影像投影缺失问题
问题:
MODIS影像多以HDF格式进行存储,但是好多文件在ArcGIS软件中打开时,却无法关联其地理坐标,这给数据的使用者带来极大的不方便。
解决办法:
Devin A. White,PhD(devin.white@gmail.com)基于IDL语言开发的HDF文件转换以及重投影插件,该插件可以对所有已知的MODIS数据产品均适用。2013年11月30日,该插件首次在Github发布v1.9.0版本,此后开发者对其进行不间断更新,最新的版本为2017年9月4日发布的v2.1.6版本(截至2017年11月8日)。
该软件在Github 上的链接地址:https://github.com/dawhite/MCTK/releases
MODIS影像多以HDF格式进行存储,但是好多文件在ArcGIS软件中打开时,却无法关联其地理坐标,这给数据的使用者带来极大的不方便。
解决办法:
Devin A. White,PhD(devin.white@gmail.com)基于IDL语言开发的HDF文件转换以及重投影插件,该插件可以对所有已知的MODIS数据产品均适用。2013年11月30日,该插件首次在Github发布v1.9.0版本,此后开发者对其进行不间断更新,最新的版本为2017年9月4日发布的v2.1.6版本(截至2017年11月8日)。
该软件在Github 上的链接地址:https://github.com/dawhite/MCTK/releases
2017年11月5日星期日
利用GDALWarp基于Shapefile批量掩模栅格影像
QGIS中影像裁剪利用Raster->Extraction->Clipper工具,在Clipper窗口中,提供了利用GDALwarp对影像进行裁剪的语句,如Fig.1所示。
该工具的缺点:
①利用该工具裁剪后的影像与原始影像的大小保持一致,因而,存在多余的影像部分,数据量并没有因此减小,为后面的处理带来不便。
②文件命名中某些字母为非法字符,如:&
该工具的缺点:
①利用该工具裁剪后的影像与原始影像的大小保持一致,因而,存在多余的影像部分,数据量并没有因此减小,为后面的处理带来不便。
②文件命名中某些字母为非法字符,如:&
2017年11月1日星期三
订阅:
博文 (Atom)
LibSVM Chinese Brief Infroduction
Reference: [1] https://blog.csdn.net/v_july_v/article/details/7624837 [2] https://wenku.baidu.com/view/c402e983336c1eb91b375d37.html?fr...
-
目标: 如图1散点图中如果点数太多,簇与簇之间的混淆则难以辨识。因而,希望通过更改某一类簇的透明度来清晰表现不同类簇之间的混淆性与可分性。 图1 散点图 IDL中PLOT函数的关键字: Syntax graphic = PLOT( Y , ...
-
Question: Environment: 64-bit andconda(Spyder) and IPython console Information is: Two modules cannot are imported to Spyder under thi...



