搜索此博客

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……endfor……end语句但是没有缩进的话程序不太好看,可以使用此键,对多行有效的

切换窗口:
Ctrl+Tab 
可以在Command WindowCurrent DirectoryCommand 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键,当只有一个以这些字母开头的命令时,将自动补全命令名,否则显示一个命令名列表,方便从中选择。当然,只在命令窗口中有效。
10.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
模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。

Python:

对齐:
注释/反注释:ALT + 3ALT + 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月13日星期三

IDL调用插件中的函数(以IDL调用MCTK为例)

方法1:将扩展工具放在ENVI Classic安装路径(save_add)中,保证ENVI Classic能够正常使用此扩展工具。然后在IDL中启动ENVI Classic之后,便可以调用,如Fig. 1要求。
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所示。
Spyder导入ArcPy/GDAL
Fig. 1  在Anaconda Prompt中配置Spyder中的GDAL命令


这样的话,导入两个GIS库都没有问题啦,如Fig. 2所示。~

Fig. 2 在Spyder中应用GDAL与Arcpy

Reference:

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...

  • Word (2)