搜索此博客

2017年9月30日星期六

遥感中MODIS常用产品介绍(内附MODIS不同级别产品数据介绍链接)

遥感中常用到的产品介绍,MODIS产品众多,其他产品此处不作介绍。

详情如图1所示。


Fig.1 
另:
关于MODIS不同产品的介绍可参考链接(以MOD09为例):
https://modis.gsfc.nasa.gov/data/dataprod/dataproducts.php?MOD_NUMBER=09

MOD09产品介绍:
MOD09表观反射率产品(MOD 09)是基于MODIS Level 1B产品中的Band1-Band7(中心波长分别为648nm、858nm、470nm、555nm、1240nm、1640nm以及2130nm)计算得到,真彩色组合为1(R)、4(G)、3(B),其他常用组合3-6-7、7-2-1。
该产品中每个波段的数值为不存在大气散射过程与吸收过程时地平面上的表观光谱反射率的估计值。

关于MODIS产品的更多介绍请参考:
http://blog.csdn.net/lucky51222/article/details/41468221



MODIS Sinusoidal Grid (即SIN Grid) 

陆表反射率产品主要被用来生产几种陆地产品:植被指数、BRDF、陆地覆盖(Land Cover)、积雪覆盖(Snow Cover)、热异常(Thermal Anomalies)以及LAI/FPAR。

注意:MOD09是陆地(Land)产品而非海洋(Ocean)产品。

MOD02 reflectance是一个无量纲的产品

闪迪U盘分区损坏修复工具

首先介绍适用说明:

1.必须是软件方面的数据错误才能用此种方法修复;

2.在进行修复之后将会丢失
盘内全部数据,操作需要谨慎!!!

3.亲测闪迪U盘恢复有效,其它U盘主控方案的情况未知。



情况说明:
详见优盘之家网站:
若网站无法访问,可以Google或者Baidu搜索DiskGenius软件下载。



2017年9月28日星期四

Mutual Transformation berween KML and SHP(相当快捷与方便)

在已经配置好GDAL环境下,KML与SHP格式的相互转化仅仅用命令行就可以实现。
工具: 利用GDAL针对矢量数据格式转换提供的实用工具ogr2ogr(支持大约60多种格式矢量数据的读写)

Shp —> KML:
ogr2ogr -f "KML" D:\FromShp.kml D:\Source.shp
KML —>Shp :
ogr2ogr -f "ESRI Shapefile" D:\FromShp.shp D:\Source.kml

格式说明:
ogr2ogr -f + format_name + targetData_name + sourceData_name


ogr2ogr的使用方法如图1所示。
Fig.1 ogr2ogr 的使用方法

常见问题与解决办法:
有些KML文件在利用上面的语句进行格式转换的时候可能转化失败,这是由于ogr2ogr将KML文件作为GML文件进行编译的原因,有两种方法可以对此进行修改:
方法1:
可以通过如下数据设置让其跳过GML drive。设置办法:

ogr2ogr -f "ESRI Shapefile" overlay.shp overlay.kml --config GDAL_SKIP GML --debug on
方法2:
step forum网站上的问题求助链接:
http://forum.step.esa.int/t/kml-to-shapefile-problems-ogr2ogr/7232/5

另关于转化失败我在Geographical Information Systems 论坛上的问题求助链接:https://gis.stackexchange.com/questions/256861/kml-to-shapefile-problems-ogr2ogr/256889?noredirect=1#comment405723_256889

附录:
将KML文件转化为Feature Class Python代码:

# 本程序目的在于基于将Sentinel-1影像自带的KML文件转化为ArcGIS可读的图层文件
# 将多幅影像的KML文件在ArcGIS中打开,便于快速分析影像的地理位置
# 输出文件命名与原始影像名保持一致,以便于保留影像的成像日期

import arcpy,fnmatch,os

rootPath = r'G:\test'
pattern = '*.kml'

out_dir = os.path.join(rootPath,'KML文件转换为要素类')
os.makedirs(out_dir)
# 遍历根目录(root)、根目录下文件夹(dirs)以及根目录下的文件(files)
for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        # 寻找文件下所有的kml文件
        kml_file = os.path.join(root, filename)
        # 裁剪出文件名用于命名输出的Feature Class,便于分析影像的成像时间
        name = root[-80:-13]
        arcpy.KMLToLayer_conversion(kml_file,out_dir,name,include_groundoverlay = 'GROUNDOVERLAY')
print 'KML文件转化完毕'

2017年9月27日星期三

基于Python将KML转化为SHP文件 Error 000401(解决办法)

首先,介绍ArcGIS软件中将KML文件转SHP文件的操作工具所在位置,如图1所示:

Fig .1
报错(Error 000401):
❶Arcmap软件处理报错如图2所示:
Fig.2
❷Python程序处理报错如图3所示:

Fig.3
解决办法:
Arcmap软件中操作:
zai Toolbox 中选择勾选Include Ground Overlay前面的选框,如图4所示:

Fig.4
❷Python程序修改:
如图5所示,添加红框内的内容,与软件中操作相对应:
Fig.5

附录:
Python程序代码:

# 本程序目的在于基于将Sentinel-1影像自带的KML文件转化为ArcGIS可读的图层文件
# 将多幅影像的KML文件在ArcGIS中打开,便于快速分析影像的地理位置
# 输出文件命名与原始影像名保持一致,以便于保留影像的成像日期
import arcpy,fnmatch,os

rootPath = r'G:\2016.06.Sen\Processed'
pattern = '*.kml'

out_dir = os.path.join(rootPath,'KML文件转要素类')
os.makedirs(out_dir)
num = 0
# 遍历根目录(root)、根目录下文件夹(dirs)以及根目录下的文件(files)
for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        kml_file = os.path.join(root, filename)
        # 裁剪出文件名用于命名输出的Feature Class,便于分析影像的成像时间
        name = root[-80:-13]
        arcpy.KMLToLayer_conversion(kml_file,out_dir,name,include_groundoverlay = 'GROUNDOVERLAY')
        num = num+1
        print '已处理完第',num,'幅影像'
print '全部KML文件完毕'










利用shp矢量文件裁剪栅格Python代码(界面版)

代码如下:
#coding=UTF-8
from Tkinter import *
from tkFileDialog import *
import Tkinter,tkMessageBox,arcpy

arcpy.CheckOutExtension("spatial")
arcpy.gp.overwriteOutput=1
OutPath=""
MaskFile=""

root=Tk()
#root.geometry("600x400")
root.title("Extrack By Mask")

def OpenData():
    filefolder1=askdirectory()
    text1.delete(0,END)
    text1.insert(0,filefolder1)
def OpenMask():
    MaskFile=askopenfilename()
    text2.delete(0,END)
    text2.insert(0,MaskFile)
def SavePath():
    OutPath=askdirectory()
    text3.delete(0,END)
    text3.insert(0,OutPath)
def Run():
    if len(str(text1.get()))==0|len(str(text2.get()))==0|len(str(text3.get()))==0:
        tkMessageBox.showinfo("Warning","Please choose the data source!")
        return

    arcpy.env.workspace=text1.get()
    Rasters=arcpy.ListRasters()
    s=0
    for Raster in Rasters:
        s=s+1
    if s==0:
        tkMessageBox.showinfo("Error","No data!")
        return
    i=1
    RunButton.config(text="Running,please wait!")
    for Raster in Rasters:
        root.title("Processing "+Raster+" ("+str(i)+"/"+str(s)+")")
        arcpy.gp.ExtractByMask_sa(Raster, text2.get(), text3.get()+"/"+Raster)
        i=i+1
    tkMessageBox.showinfo("Congratulations","All done")
    exit()

frame1=Frame(root)
frame1.pack()
label1= Label(frame1,text="Input Raster:",width=10)
label1.pack(side=LEFT)
text1 = Entry(frame1,borderwidth=1,bg='green',width=70)
text1.pack(side=LEFT)
OpenDataButton = Tkinter.Button(frame1, text ="Choose", command=OpenData,width=29)
OpenDataButton.pack(side=LEFT)

frame2=Frame(root)
frame2.pack()
label2= Label(frame2,text="Mask File:",width=10)
label2.pack(side=LEFT)
name = StringVar()
text2 = Entry(frame2,bd=1,bg='white',width=70,relief='raised',textvariable=name)
# 设置掩模矢量文件均为ArcGIS自带的shp文件
name.set("D:\Program Files (x86)\ArcGIS\Global Coastline shp\ArcGlobeData\continent.shp")
text2.pack(side=LEFT)
OpenDataButton = Tkinter.Button(frame2, text ="Choose(默认ArcGIS自带矢量文件)",relief='raised',width=29,command=OpenMask)
OpenDataButton.pack(side=LEFT)

frame3=Frame(root)
frame3.pack()
label3= Label(frame3,text="OutPath:",width=10)
label3.pack(side=LEFT)
text3 = Entry(frame3,bd=1,bg='green',width=70)
text3.pack(side=LEFT)
OpenPathButton = Tkinter.Button(frame3, text ="Choose",command=SavePath,width=29)
OpenPathButton.pack(side=LEFT)

frame4=Frame(root,bd=3)
frame4.pack()

RunButton=Tkinter.Button(frame4,text="Run",command=Run,width=20,bd=2)
RunButton.pack(side=RIGHT)

root.mainloop()

界面如图所示。


2017年9月26日星期二

pip 无法安装python扩展包(已解决),内附安装python扩展包步骤

问题:
pip可以正常安装,但是无法利用pip安装python的其他扩展包。报错如Fig.1 。
Fig.1



产生错误原因:
未知

解决办法:
重启cmd;
注意:将利用pip安装其他python库时,首先应将python路径下的/Scripts/文件夹加入环境变量。


安装python扩展包步骤:
如Fig2所示。
 Fig.2

Arcmap Error999999(ArcGIS输出文件命名规范问题)解决办法

问题:
利用Arcmap转投影的过程中,遇到如下图所示问题☞☞☞

出错原因:
出现如图所示的问题是由于输出文件名中存在".'",其为非法字符。

2017年9月23日星期六

SNAP‘s java heap space question(解决办法)

问题:
利用gpt.exe对Sentinel-1卫星影像(EW-GRDH模式影像,分辨率为25m)进行批处理时,出现Java Heap Error以及Cannot Construct DataBuffer问题。

关于这个问题我在Step Forum网站的发帖:
http://forum.step.esa.int/t/problem-java-heap-error/7177

该问题的解决我所参考的链接:
http://forum.step.esa.int/t/gpt-performance/460/2




Fig1-2 关于这个问题marpet专家给出原因解释


所以,由这个人的回答断定问题出现的原因是内存不足导致的堆(heap)溢出。

如何修改预设内存大小???
↓↓↓↓↓↓↓↓↓解决办法:
1.Java VM heap Size最佳参数的获取;




Fig.3
2.修改gpt.vmoptions 文件中的参数。







Fig.4
这样再次利用程序对GRDH影像进行批处理,不再报错。

该问题的解决又耗费了两天的时间。(233,该开心还是伤心。)

2017年9月20日星期三

ArcGIS中的ArcToolbox无法使用(解决办法)

问题描述:

由于利用Python程序编写过程中需要搭建相应的环境,可能错误移动了ArcGIS中使用的Python文件,导致在ArcGIS软件中点击Arctoolbox按钮后软件异常关闭,无法正常使用工具箱中的功能。报错如图1所示。


                                                                     Fig.1 报错

解决办法:

在用户变量增加PATH变量,环境变量中增加PYTHONHOME变量,变量值均设置成python的文件夹路径,以10.2版的ArcGIS为例,路径为C:\Python27\ArcGIS10.2。如果是win10的系统,具体设置的方法是依次点击此电脑——属性——高级系统设置——高级——环境变量。

有效,ArcToolbox以及Python可以正常使用。
Fig.2  修改后可以正常打开Toolbox

2017年9月18日星期一

SNAP+Python 二次开发(利用gpt)

利用SNAP提供的接口(gpt.exe)可以很方便地利用Python调用SNAP软件中的功能进行二次开发。
GPT的用法如图1所示:
Fig.1
三个参数
Fig.2




Fig,3
①<op>:算符(Operators的名称)                              
算符就是SNAP软件中的各种功能,其实还有很多,截图没有截完整,可以在DOS系统下输入gpt进行查看;
②<graph-file>:算符的相关参数(XML格式)
③<source-file-i>:<op>算符所用到的第i个原文件
Fig.4
[options](共13种):
当应用新的operator而不知道其参数时,可以在DOS系统下输入gpt -h <operator>,获得该算符需要设置的参数,例如需要对影像进行热噪音移除,可以输入gpt -h ThermalNoiseRemoval,查看其参数,如图6所示。
Fig.5
程序实例:

Fig.6

2017年9月15日星期五

GDAL环境配置与安装

GDAL 是一个处理空间数据的非常好用的命令行工具,它可以完成以下任务:


  • 基于DEM数据生成等高线
  • 创建TMS瓦片结构
  • 将矢量文件栅格化为一个栅格文件
  • 大量影像快速镶嵌(Mosaic)
如果电脑上安装有GDAL,则上面这些功能可以在命令行下运行python脚本程序实现。

该网址(https://sandbox.idre.ucla.edu/sandbox/tutorials/installing-gdal-for-windows)提供了在Windows PC上安装GDAL的详细步骤,如果你的系统为Mac,请打开该网址(http://sandbox.idre.ucla.edu/?p=779)。


我的第一个Python 程序




下面为源码:
#  针对于利用Python爬虫程序从网站https://scihub.copernicus.eu/dhus/#/home 上下载的Sentinel-1 多景影像批量解压缩问题而写。

import os
import zipfile
import time


time_start = time.time()
# 下面文本文件为DOS模式下获取的所有影像$value文件所在路径

# 读取影像总数   
f = open("G:\datadir.txt")
# 统计$value影像的总个数
lines = len(f.readlines())
print lines
f.close

# 进行解压缩
f = open("G:\datadir.txt")
line = f.readline()

# 统计解压的文件个数
num = 0.0
# 一行一行读取文件内容
while line:
    dir = line
    dir = dir[0:-7]
    os.chdir(dir)
    dirc = os.getcwd()
    file = os.listdir(dirc)
    newname = file[0]+".zip"
    # 文件重命名
    os.rename(file[0],newname)
    dirch = dir + newname
    zfile = zipfile.ZipFile(dirch,'r')
    for sourceFile in zfile.namelist():
        # 为方便后续使用,将解压后的文件存储到同一个文件夹
        # 路径应修改(注意:文件名避免以n、t或阿拉伯数字等开头,避免与文件路径中的反斜杠\形成\n、\t等转义字符,如果出现,应多添加一个反斜杠)
        datadir = 'G:\\SNAP_processing_directory\\2016.03'
        zfile.extract(sourceFile,datadir)
    num = num + 1
    print "已解压",num,"景","剩余",lines-num,"景,已处理",num/lines*100,"%"
    line = f.readline()
f.close()
if (num < lines):
    print "\n影像未全部解压,解压过程提前结束\n"
time_end =  time.time()
total_time = time_end-time_start
minutes = (time_end-time_start)/60.0
seconds = (time_end-time_start)%60.0
print "总耗时:",minute,'分',seconds,'秒'

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)