Chuck's Blog

技术、读书与思考

概述

;返回浮点型一维数组
function ConvertToOneF, data
; i为行数
; j为列数
columns=n_elements(data[0,*])
rows=n_elements(data[*,0])
result = fltarr(columns*rows)
for i=0L, rows-1 do begin
for j=0L, columns-1 do begin
result[columns*i + j] = float(data[i,j])
endfor
endfor
return, result
end

## 详细内容

;返回整型一维数组
function ConvertToOneD, data
; i为行数
; j为列数
columns=n_elements(data[0,*])
rows=n_elements(data[*,0])
result = intarr(columns*rows)
for i=0L, rows-1 do begin
for j=0L, columns-1 do begin
result[columns*i + j] = long(data[i,j])
endfor
endfor
return, result
end

;读取影像,二维浮点型数组
function Get_IMGArrayF2, filepath, map_info
ENVI_OPEN_FILE,filepath,r_fid = fid
IF fid EQ -1 THEN RETURN,-1
ENVI_FILE_QUERY,fid,ns = ns,nl = nl, nb=nb, $
interleave=interleave, dims=dims, xstart=xstart, ystart=ystart
arr = float(envi_get_data(fid=fid,dims=dims,pos=0))
map_info=envi_get_map_info(fid=fid)
ENVI_FILE_MNG, id=fid, /remove 
return, arr
end

;读取影像,二维整型数组
function Get_IMGArrayL2, filepath, map_info
ENVI_OPEN_FILE,filepath,r_fid = fid
IF fid EQ -1 THEN RETURN,-1
ENVI_FILE_QUERY,fid,ns = ns,nl = nl, nb=nb, $
interleave=interleave, dims=dims, xstart=xstart, ystart=ystart
arr = long(envi_get_data(fid=fid,dims=dims,pos=0))
map_info=envi_get_map_info(fid=fid)
ENVI_FILE_MNG, id=fid, /remove 
return, arr
end

;读取影像,一维浮点型数组
function Get_IMGArrayF1, filepath, map_info
ENVI_OPEN_FILE,filepath,r_fid = fid
IF fid EQ -1 THEN RETURN,-1
ENVI_FILE_QUERY,fid,ns = ns,nl = nl, nb=nb, $
interleave=interleave, dims=dims, xstart=xstart, ystart=ystart
arr = float(envi_get_data(fid=fid,dims=dims,pos=0))
map_info=envi_get_map_info(fid=fid)
ENVI_FILE_MNG, id=fid, /remove 
return, ConvertToOneF(arr)
end

;读取影像,一维整型数组
function Get_IMGArrayL1, filepath, map_info
ENVI_OPEN_FILE,filepath,r_fid = fid
IF fid EQ -1 THEN RETURN,-1
ENVI_FILE_QUERY,fid,ns = ns,nl = nl, nb=nb, $
interleave=interleave, dims=dims, xstart=xstart, ystart=ystart
arr = long(envi_get_data(fid=fid,dims=dims,pos=0))
map_info=envi_get_map_info(fid=fid)
ENVI_FILE_MNG, id=fid, /remove 
return, ConvertToOneD(arr)
end

 

阅读全文 »

概述

pro raster_to_shp, filepath, outpath
;COMPILE_OPT idl2
;ENVI调用初始化
; ENVI,/restore_base_save_files
; ENVI_BATCH_INIT
;打开图像文件 
ENVI_OPEN_FILE, filepath, r_fid=fid
IF (fid EQ -1) THEN BEGIN
ENVI_BATCH_EXIT
RETURN
ENDIF
;
ENVI_FILE_QUERY, fid, dims=dims,nb = nb

## 详细内容

pos = 0
img = envi_get_data(fid=fid,dims=dims,pos=pos)
min_value = min(temporary(img))
;将灰度值为value的转换为vector
values = [min_value]
;
l_name = 'ShapeBorder'
evffile = FILE_DIRNAME(filepath)+'\img2vec.evf'
;
; 栅格转换为矢量
;
ENVI_DOIT, 'rtv_doit', $
fid=fid, pos=pos, dims=dims, $
IN_MEMORY = LINDGEN(N_ELEMENTS(values)), $
values=values, l_name=l_name, $
out_names=evffile
;evf转换为shp文件
shapefile = outpath;FILE_DIRNAME(file)+'\img2vec.shp'
EVF_ID = ENVI_EVF_OPEN(evffile)
envi_file_mng, id=fid, /remove 
ENVI_EVF_TO_SHAPEFILE, EVF_ID, shapefile
ENVI_EVF_CLOSE, EVF_ID
file_delete,evffile

; 退出ENVI
;envi_batch_exit
end

pro raster_to_evf, filepath, outpath
;COMPILE_OPT idl2
;ENVI调用初始化
; ENVI,/restore_base_save_files
; ENVI_BATCH_INIT
;打开图像文件 
ENVI_OPEN_FILE, filepath, r_fid=fid
IF (fid EQ -1) THEN BEGIN
ENVI_BATCH_EXIT
RETURN
ENDIF
;
ENVI_FILE_QUERY, fid, dims=dims,nb = nb
pos = 0
img = envi_get_data(fid=fid,dims=dims,pos=pos)
min_value = min(temporary(img))
;将灰度值为value的转换为vector
values = [min_value]
;
l_name = 'ShapeBorder'
evffile = outpath
;
; 栅格转换为矢量
;
ENVI_DOIT, 'rtv_doit', $
fid=fid, pos=pos, dims=dims, $
IN_MEMORY = LINDGEN(N_ELEMENTS(values)), $
values=values, l_name=l_name, $
out_names=evffile

envi_file_mng, id=fid, /remove

; 退出ENVI
; envi_batch_exit
end
阅读全文 »

概述

在日常的软件中,很多软件做成了Windows服务的方式,在卸载软件以后,发现还残留着一些服务没有删掉,这样就导致有些垃圾目录无法删除。不过不用急,我们可以用命令行手动删除指定的Windows服务(Service) 的。

详细内容

阅读全文 »

概述

WordPress提供评论回复时邮件通知管理员的功能,任何人只要写了评论,都会给博客管理员发一封通知邮件,内容如下图。但是当用户的评论被回复之后,wordpress并不能通知到这个用户,告知他的评论被人回复了。有什么办法可以实现这个功能呢?

操作步骤

阅读全文 »

概述

如果你在人家博客留言时使用邮箱,而没有显示一个比较个性的头像的话,那么我们完全可以说,你已经OUT了。

操作步骤

阅读全文 »

简介

本站现在用的wordpress插件有24个,感觉稍多,不过速度还行,推荐下:

  • Akismet(垃圾评论清理)
阅读全文 »

问题描述

## 解决方案 最近为了打包程序被Installshield折腾死了,记个备忘。 AE打包:
function OnMoved()
string szCommand,szCmdLine,szPath,svResult,LicPath,tempdir;
STRING svLine,svReturnLine,InsertTxt; //////操作文件的变量
NUMBER nvFileHandle; //////////文件句柄
NUMBER nvLineNumber ,nvResult; //////////操作文件的变量
begin
szPath=SUPPORTDIR^"arcengine";
szCommand = WINSYSDIR^"msiexec.exe";
LongPathToShortPath(szCommand);
//安装dotnetfx2.exe
//GetEnvVar("TEMP", tempdir);//得到临时目录
//FindAllFiles(SUPPORTDIR^"dotnetfx", "install.exe" , tempdir, CONTINUE );//在临时目录下搜索dotnetfx.exe文件
SdShowMsg("正在安装.NET 2.0,请稍后...", TRUE);
if(LaunchAppAndWait(SUPPORTDIR^"dotnetfx"^"install.exe", "/q /norestart",WAIT)<0) then   
SdShowMsg("安装.NET 2.0失败", TRUE);
abort;                       
SdShowMsg("安装.NET 2.0失败", FALSE);
endif;                                               
SdShowMsg("正在安装.NET 2.0,请稍后...", FALSE);

////////////////////////安装AE 运行时
if (FindFile (szPath, "setup.msi", svResult) = 0) then
szCmdLine = SUPPORTDIR^"arcengine"^"setup.msi\"/qn";
LongPathToShortPath(szCmdLine);            
SdShowMsg("正在安装ArcGIS Engine Runtime,依据机器性能需要几分钟到十几分钟,请稍后...", TRUE);
Delay(1);
if (LaunchAppAndWait(szCommand ,"/i \""+szCmdLine,WAIT) < 0) then   
MessageBox("安装ArcGIS Engine Runtime失败!", WARNING);
abort; 
SdShowMsg("正在安装ArcGIS Engine Runtime,依据机器性能需要几分钟到十几分钟,请稍后...", FALSE);
endif;
endif;

/////////////////////////AE 授权
LicPath=" -Lif \"" +SUPPORTDIR^"arcengine\\ecp\\license9-30.ecp\" -s";   
SdShowMsg("正在对ArcGIS Engine Runtime授权,请稍后...", TRUE);
if (FindFile (SUPPORTDIR^"arcengine"^"ecp", "license9-30.ecp", svResult) = 0) then

if(SYSINFO.bIsWow64) then
szCmdLine="C:\\Program Files(x86)\\ArcGIS\\Bin\\SoftwareAuthorization.exe";
else
szCmdLine="C:\\Program Files\\ArcGIS\\Bin\\SoftwareAuthorization.exe ";
endif;
if (LaunchAppAndWait(szCmdLine ,LicPath,WAIT) < 0) then  
	MessageBox("授权错误!",WARNING);
	//abort;
endif;

endif;

if (ExistsDir(TARGETDIR^"temp")=0 ) then
if (DeleteProgramFolder (TARGETDIR^"temp") < 0) then
endif ;
endif ;         
SdShowMsg("正在对ArcGIS Engine Runtime授权,请稍后...", FALSE);
end;
SQL SERVER打包:
阅读全文 »