搜索此博客

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:

2017年11月14日星期二

2017年11月12日星期日

Arcmap 打开HDF文件不弹出波段选择对话框解决办法

在ArcGIS软件中添加HDF文件时,正常情况下会弹出如Fig.1所示的Subdataset Selection对话框,但是偶然间勾选了下面的“Do not ask again”选项,则当再次打开HDF文件时,则软件自动默认打开前面的波段,重新调出该弹出框的操作办法是:Arcmap Option->ArcMap Options(Raster->Prompt for subdataset selection),如Fig.2 所示。
Fig.1
Fig.2

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

2017年11月5日星期日

利用GDALWarp基于Shapefile批量掩模栅格影像

QGIS中影像裁剪利用Raster->Extraction->Clipper工具,在Clipper窗口中,提供了利用GDALwarp对影像进行裁剪的语句,如Fig.1所示。

该工具的缺点:
利用该工具裁剪后的影像与原始影像的大小保持一致,因而,存在多余的影像部分,数据量并没有因此减小,为后面的处理带来不便。
文件命名中某些字母为非法字符,如:&


2017年11月1日星期三

BIP BSQ 影像裁剪出错


上图显示的是一幅相同位置、相同大小的BIP与BSQ影像进行波段运算后得出的真彩色合成图,影像位置位于加拿大群岛附近的西北航道处且已经对于陆地区域进行了掩模,因而图中的区域为海洋,因而出现绿色是不正常的。

出现这种现象的原因就是BIP与BSQ影像中像元数据的排列方式不同导致Band Math后得出错误的结果,因而出现海冰在真彩色呈现绿色的情况。因而,在进行波段运算时,必须注意影像数据Interleave的格式。

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)