搜索此博客

2017年10月31日星期二

Spyder以及IPython闪退问题解决办法

问题1:

——Spyder以及IPython闪退问题???

解决办法:
可能系统变量或者用户变量中的PYTHONHOME被设定为ArcGIS中的python.exe的所在路径;
删除PYTHONHOME可以解决这个问题,但是前提是用户未安装ArcGIS软件。
如果用户安装有ArcGIS软件,按照这种方式更改会导致出现问题2

↓↓↓↓↓
问题2:

——Spyder与ArcGIS的兼容性问题解决?

如果原有的PYTHONHOME值为ArcGIS中的python.exe所在路径,则将PYTHONHOME修改为Anaconda文件夹路径,
如此一来,ArcGIS在使用Toolbox时将会调用Anadonda中的python.exe文件。


2017.10.29


问题3:

——右键无IDLE?
解决办法:

参考链接:https://www.polarxiong.com/archives/windows-python-edit-with-idle.html
亲测可用~~~

2017年10月9日星期一

HDF文件、HDF5文件的读取(IDL)

HDF5数据的几个重要概念:
File文件)、Group组)Dataset数据集)三部分。常用的读取数据的过程是:文件读取、组的读取以及数据集的读取。
HDF文件常用的打开软件为HDF Explorer,如图1所示。
Fig.1
打开文件、组、数据集的函数分别是H5F、H5G、H5D这三种。
H5_list可以列出一个文件中的所有数据集,然后可以通过这些数据集的名称获取数据。


IDL读取HDF文件参考链接:
http://www.cnblogs.com/myyouthlife/archive/2012/03/10/2388885.html
http://www.cnblogs.com/alex-bn-lee/p/5812231.html
http://www.cnblogs.com/myyouthlife/archive/2012/03/10/2388885.html

IDL读取HDF5文件参考链接:
http://www.cnblogs.com/ahnucao/p/4938770.html



『转载』IDL二进制与十进制互相转化代码

;-----------------------二进制到十进制-----------------
;主程序
FUNCTION f_b2d,n
  ;By friendchj
  ;Base on GORDON NANA KWESI AMOAKO's MATLAB Program
  ;function f_b2d converts numbers with binary fractions
  ;or binary fractions only to decimalnumbers
  ;------------------------------------------------------
  ;INPUT: n, n is a String of Binary numbers e.g. f_b2d('11001.101') gives us
  ;OUTPUT: A Decimal Number
  ;SAMPLE input and output
  ;f_b2d('11001.101')=25.6250
  ;f_b2d('110000111.111111101')=391.9941
  ;f_b2d('0.11001111101')= 0.8110
  ;Converting the Number to String
  n=strtrim(n,2)
  numadd=0
  p=strlen(n)
  ;-------------------------------------------------------
  if strpos(n,'.') EQ -1 then begin
    y=bin2dec(n)
  endif else begin
    ;----------------------------------------------------------------------
    j=strpos(n,'.')
    i_part=strmid(n,0,j)
    f_part=strmid(n,j,p-j)
    for i=0,strlen(f_part)-1 do begin
      if strmid(f_part,i,1) EQ '1' then numadd=numadd+(0.5^i)
    endfor
    y=f_b2d(i_part)+numadd
    ;----------------------------------------------------------------------
  endelse
  return,y
end
;------------------------------------------------------------------------
;子程序
FUNCTION bin2dec,n
  ; By friendchj
  p=strlen(n)
  y=0L
  for i=0,p-1 do begin
    y=y+strmid(n,i,1)*2^(p-i-1)
  endfor
  return,y
  ;-------------------十进制到二进制的装换-----------------------------------------
  ;主程序
FUNCTION f_d2b,n
  ;-----------------------------------------------
  ;By friendchj
  ;Based on GORDON NANA KWESI AMOAKO's MATLAB Program
  ;function f_d2b converts numbers with fractions or
  ;fractions only to BINARY
  ;-----------------------------------------------
  ;INPUT: n e.g. 25.625
  ;OUTPUT: Binary number e.g. 11001.101
  ;Converting the Number to String

  ;将数字转化为字符串
  strn=num2str(n)
  p=strlen(strn)
  ;------------------------------------------------
  if strpos(strn,'.') EQ -1 then begin
    ;将整数数值转化为二进制
    y=d2b(n)
    return,y
  endif else begin
    ;------------------------------------------------
    k=strpos(strn,'.')

    ;Retrieving INTEGER and FRACTIONAL PARTS as strings
    i_part=strmid(strn,0,k)
    f_part=strmid(strn,k,p-k)

    ;Converting the strings back to numbers
    ni_part=long(i_part)
    nf_part=float(f_part)
    ni_part=d2b(ni_part)
    strtemp=''
    temp=nf_part
    ;-------------------------------------------------
    t='1'
    s='0'
    while nf_part GE 0 do begin
      nf_part=nf_part*2
      if (nf_part EQ 1) or (nf_part EQ temp) then begin
        strtemp=string(strtemp,t)
        strtemp=STRCOMPRESS(strtemp, /REMOVE_ALL)
        break
      endif else begin
        if nf_part GT 1 then begin
          strtemp=string(strtemp,t)
          strtemp=STRCOMPRESS(strtemp, /REMOVE_ALL)
          nf_part=nf_part-1
        endif else begin
          strtemp=string(strtemp,s)
          strtemp=STRCOMPRESS(strtemp, /REMOVE_ALL)
        endelse
      endelse
    endwhile
    if ni_part EQ 0 then begin
      y=string('0.',strtemp)
      y=STRCOMPRESS(y, /REMOVE_ALL)
      return,y
    endif else begin
      y=string(ni_part,'.',strtemp)
      y=STRCOMPRESS(y, /REMOVE_ALL)
      return,y
    endelse
    ;------------------------------------------------
  endelse
end
;----------------------------------------------------
;子程序
;+-------------------------------------------------------------------------------
;| converting float/double type numer into its original inputform
;| double type has appoximately 16 digits of significance. float has 7
;|
;| in : a : the data to convert
;|    : Keyword : tip: [1,0] : [output tps(E:D) or not]
;| out: Return, String of the data
;| Example:
;|        a = 4356245.1245D ; 注意要确定数据类型为Double! 如果是浮点型只能达到7位精度
;|    print, dbl2str(a) ;
;+-------------------------------------------------------------------------------
Function dbl2str, a
  Compile_Opt Strictarr
  tp=size(a,/type)
  if tp ne 4 and tp ne 5 then begin
    a=double(a)
    tp=5
  endif
  tps=tp eq 4?'E':'D'
  rawstr=strtrim(string(a,format='(g)'),2);full width G format
  pos = Strpos(rawstr, 'e', /REVERSE_SEARCH) ; 有e,不砍0
  if pos ne -1 then Return, rawstr
  ;
  ; 砍0
  no0 = 1
  while no0 do begin
    len = Strlen(rawstr)
    endstr = Strmid(rawstr, len-1, 1)
    if endstr ne '0' then no0 = 0 $
    else begin
      rawstr = Strmid(rawstr, 0, len-1)
    endelse
  endwhile
  ;
  ;
  Return, rawstr
End
;+-------------------------------------------------------------------------------
;| 将数值型转成字符串
;| 注意,不能处理数值数组、复数
;| 输入: 数值型变量
;| 输出: 对应的字符串
;| 示例:
;|      a = 4356245.1245D
;|      stra = NumToStr(a)
;| 作者: Huxz 2007-10
;+-------------------------------------------------------------------------------
Function Num2Str, num
  Compile_Opt Strictarr
  num = num[0]
  data_type = Size(num, /type)
  case data_type of
    1: Return, Strtrim(Fix(num), 2) ; Byte
    2: Return, Strtrim(num, 2); Int
    3: Return, Strtrim(num, 2); Long
    4: Return, Dbl2str(num); Float
    5: Return, Dbl2str(num); Double
    12: Return, Strtrim(num, 2); Unsigned Int
    13: Return, Strtrim(num, 2); Unsigned Long
    14: Return, Strtrim(num, 2); Long64
    15: Return, Strtrim(num, 2); Unsigned Long64
    else: Return, num
  endcase
End
;-----------------------------------------------------
;子程序
FUNCTION d2b,n
  strtemp=''
  if n lt 0 then begin
    print,' %f is not a valid number\n'
  endif else begin
    while n NE 0 do begin
      strtemp=string(string((n mod 2)),strtemp)
      strtemp=STRCOMPRESS(strtemp, /REMOVE_ALL)
      n=floor(n/2.0)
    endwhile
  endelse
  y=strtemp
  return,y
end

MOD35云掩模数据


 

Fig.1为MOD35 用户手册中所提供的关于MOD35 6个波段48比特的数值含义。

Fig.1 MOD35 48bit 云掩模科学数据集(SDS)产品

利用HDF Explorer 查看Cloud Mask 数据集,可以看到6个不同波段下每个数据集每个bit field数值的意义,比图1用起来更加容易。

Fig.2 MOD35每个波段每个bit field数值含义


Fig.3对于Band1每个bit field 的说明更加清楚。
Fig.3  Band1不同bit field含义说明

Reference:
丁玉叶. 面向MODIS数据的云检测方法研究[D].哈尔滨工业大学,2013. 

ENVI中修改DN值为某一特定值(波段运算方法)



NaN为Not a Number的缩写,在遥感图像中属于异常值。很多用户有修改NaN的需求,比如把0值修改为NaN,或把NaN修改为0值等。



  • 修改特定值(如250)为NaN

-----   b1*float(b1 NE 250)/(b1 NE 250)
  
          特例(修改0值为NaN)
-----   b1*float(b1)/b1


  • 修改NaN为特定值(-999):
-----   finite(b1, /nan)*(-999) or (~finite(b1, /nan))*b1
 注:上面一行为一个公式,请输入完整。
  • 修改NaN为0值(先按上面方法修改为-999或其他图像中不存在的值)
-----  (b1 ne -999)*b1


参考链接:

2017年10月2日星期一

AMSR & AMSR-E & AMSR-2 数据下载

AMSR卫星系列:

  • AMSR搭载于JAXA ADEOS-II卫星上于2002年12月14日发射。该卫星太阳能电池板在2003年10月25日失效;
  • AMSR-E搭载于NASA EOS Aqua卫星上于2002年5月4日发射升空,该传感器已于2011年10月4日停止工作;
  • AMSR-2搭载于JAXA GCOM-W1卫星上于2012年5月18日升空,该传感器目前仍在运行中。


  • Level1 and Higher Level Products  
AMSR2 is a multi-frequency microwave radiometer. It measures weak microwave emission (6.9 -89.0GHz) from the surface and the atmosphere of the Earth. AMSR2 products are categorized according to the processing levels. Level 1A (L1A) products consist of raw observation counts,antenna temperature conversion coefficients, etc... Level 1B (L1B) products contain brightness temperatures which is converted from L1A count values using the conversion coefficients. Level 2(L2) products contain geophysical parameters which primarily related to water and derived from the L1B products. AMSR2 derived geophysical parameters are shown in Table 2. L1 and L2 is swath data with geolocation information.  

  • Level1 Resampling Products (L1R)(Only in AMSR-2)
AMSR2 geophysical parameters are calculated by combining multiple AMSR2 frequencies and polarizations. In that case, there is no consistency with latitude and longitude of same observation point because of different footprint size. AMSR2 provides product call L1R that resamples the L1B product using pre-calculated resampling coefficients to adjust data for lower frequency resolutions. The center latitude and longitude of data is adjusted to the 89 GHz A channel receiver data.Resampling converts the brightness temperature at a higher resolution frequency to a brightness temperature at a lower resolution frequency. Resampling data based on 6.9, 10.7, 23.8, 36.5GHz footprint size is created. 6 GHz and 7 GHz data sets have the same spatial resolution; therefore, a shared set of resampling data is created. 18 GHz and 23 GHz data sets have almost the same resolution, but 23 GHz resolution is slightly lower; therefore, one set of resampling data is created matching the 23 GHz resolution. Table 6 shows L1R data and frequencies selected for resampling.  

  • Level 3 Products

Level 3 (L3) products are global gridded products at two different resolutions (0.1 and 0.25
degrees). Products make ground projections on the globe and in the North Pole and South Pole
regions by taking the time and spatial averages of the L1B and L2 standard products. L3 products of
brightness temperatures are called L3TB and those of geophysical parameters are called L3GEO.
Daily and monthly statistical products are created for both ascending and descending data sets. L2
and L3GEO products are also called as higher level products.
  [1]



 Fig.1 Relationship between swath and global data



AMSR数据下载链接(JAXA网站):
https://gcom-w1.jaxa.jp/auth.html

AMSR数据下载方法(此方法仅支持.h5格式下载):
启动FileZilla软件(FileZilla软件可以自己在Google中搜索下载),输入Host Name、User Name、Password以及Port Number,如图2所示。
Fig.2

成功连接后,下载界面如图3所示。
Fig.3 FileZilla下载页面
网站中数据的存储结构如图4所示。[2]
Fig.4 数据存储结构


注意:
FileZilla软件不要从参考网页所给的下载链接下载,建议使用Google搜索下载最新版本。
FileZilla软件仅支持下载.h5格式的数据,GeoTIFF与NetCDF格式不支持下载。

参考:
[1]AMSR-2 User Guide Book.PDF,2nd Edition,March 2013.


数据下载页面提供了3种方式供大家下载,如Fig.5所示:

①Categories or Physical Parameters(目录或物理参数法):
该方法将数据以Fig.6中Atmosphere、Ocean、Cryosphere、Land以及Brightness temperature 五种类型进行划分,每种类型数据下再按照Pyhsical Parameters进行区分查询下载;
②Explanations(解释):
数据显示方式同目录或物理参数法;
③Satellites or Sensors(卫星或传感器):
该种方法以Fig.7的形式进行发布。
关于卫星的介绍如Fig.8所示,更多信息可以查看http://gcom-w1.jaxa.jp/contents/AMSR_series_en.pdf


三颗卫星数据的特点:
  1. GCON-W1/AMSR2、Aqua/AMSR-E、ADEOS-II/AMSR三种卫星均包含Level 1-Level3三个级别的产品;
  2. Aqua/AMSR-E、ADEOS-II/AMSR产品的构成完全相同;
  3. Level 1以及Level 3中均包含亮温(Brightness Temperature)数据,不同之处在于GCOM-W1卫星Level 1 除了提供L1B亮温数据,还将数据分辨率进行重采样形成L1R数据。

Fig.5
Fig.6
Fig.7
Fig.8

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)