The-Interactive-Data-Language交互式数据语言课件_第1页
The-Interactive-Data-Language交互式数据语言课件_第2页
The-Interactive-Data-Language交互式数据语言课件_第3页
The-Interactive-Data-Language交互式数据语言课件_第4页
The-Interactive-Data-Language交互式数据语言课件_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TheInteractiveDataLanguage交互式数据语言1感谢你的观看2019年5月8日TheInteractiveDataLanguage1功能简介

IDL是进行数据分析、可视化及跨平台应用开发的最佳选择。IDL集可视、交互分析、大型商业开发为一体,为您提供了最完善、最灵活最有效的开发环境。(参考idl5.5.ppt)2感谢你的观看2019年5月8日功能简介 IDL是进行数据分析、可视化及跨平台应用开发的最佳IDL培训提纲IDL简介及应用IDL程序特点命令行操作数据输入输出图像与信号处理矩阵操作界面设计对象图形对象操作参数传递与外部语言接口数据库接口例程分析回答问题3感谢你的观看2019年5月8日IDL培训提纲IDL简介及应用对象图形3感谢你的观看2019IDL程序特点分隔符为“,”,而非空格不分大小写变量无需事先说明——宽松的语法检查机制4感谢你的观看2019年5月8日IDL程序特点分隔符为“,”,而非空格——宽松的语法检查机制IDL符号$作为一行的第一个字符时,返回到操作系统下,如:$dir作为一行的最后一个字符时,相当于一行未写完,换行。;后面是注释@批作业如:@test5感谢你的观看2019年5月8日IDL符号$5感谢你的观看2019年5月8日IDL命令行A=dist(100)Plot,aTv,aEraseTvscl,aSurface,aShade_surf,aShade_surf,a,az=60Zvalue=0.5Contour,aContour,a,nlevels=10Contour,a,nlevels=10,$,/fillContour,a,nlevels=10,$,/followContour,a,nlevels=10,$,/t3d6感谢你的观看2019年5月8日IDL命令行A=dist(100)Zvalue=0.56感谢变量命名规则正确:reade6_$fileonly_8_bitComputerTypevariables_day_of_year错误:name.lastthird%file4th_list$temp变量名称长度不超过255个字符,但变量大小取决于计算机配置和操作系统。7感谢你的观看2019年5月8日变量命名规则正确:错误:变量名称长度不超过255个字符,但变TypeLenCreationArrayConversionByte1A=5BBytarrByteInteger2B=0;b=0SIntarrFixUint2C=0UUintarrunitLong4D=0LLonarrLongUlong4E=0ULUlonarrUlongLong648F=0LLLong64arrLong64Ulong648G=0ULLUlon64arrUlong64Float4H=0.0FltarrFloatDouble8I=0.0DDblarrDoubleComplex8J=complex(1.0,0.0)ComplexarrComplexDcomplex16K=dcomplex(1.0,0.0)DcomplexarrDcomplexString?L=’hello’StrarrStringPointer4M=ptr_new()Ptrarr---Object4N=obj_new()Objarr---IDL变量类型8感谢你的观看2019年5月8日TypeLenCreationArrayConversionIDL变量ScalarArray(1—8维)Structure(结构)9感谢你的观看2019年5月8日IDL变量Scalar9感谢你的观看2019年5月8日系统Keyword系统Keyword!dpi(3.1415926)!p控制显示如:!p.font,!p.color!d(device,对设备进行控制)如:device,get_screen_size=view 24bit显卡下显示8位假彩色图像,用Device,decompose=0,(设置成8bit256色) 10感谢你的观看2019年5月8日系统Keyword系统Keyword10感谢你的观看20矩阵操作A=bytarr(512,512)列行b=tan(a)+10子区处理:A(*,1)表示第2行的所有列A(*,1:10)11感谢你的观看2019年5月8日矩阵操作A=bytarr(512,512)11感谢你的观看2矩阵操作若a为一二维数组,c=[10,15,20],则A(c)将是一稀疏矩阵,只提取a中第10,15,20个元素,如可用来提取河流。C=where(a,max=15,min=0)a(c)=255将a中很暗的值变为255。取字区还可实现非常多的局部操作。12感谢你的观看2019年5月8日矩阵操作若a为一二维数组,c=[10,15,20],12感谢WHERE函数Indices=where(datagt0.4anddatalt0.5)Data[indices]=1.013感谢你的观看2019年5月8日WHERE函数Indices=where(datagt矩阵操作search2D二维数组中在一定值域范围内以一初始点为准,搜索与它连通的范围,相当于a(c)search3D在三维体数据内搜索。应用:给定步长,可实现半自动矢量化,半自动跟踪一条线。14感谢你的观看2019年5月8日矩阵操作search2D二维数组中在一定值域范围内以一初始矩阵操作A#B表示A的列乘以B的行A##B表示A的行乘以B的列Transpose矩阵转置a[i,j]=a[j,i]……15感谢你的观看2019年5月8日矩阵操作A#B表示A的列乘以B的行15感谢你的观看201IDL数据I/OASCII_TEMPLATE和READ_ASCIIBINARY_TEMPLATE和READ_BINARYIDLLIVE_TOOLSDIALOG_READ_IMAGE和DIALOG_WRITE_IMAGE16感谢你的观看2019年5月8日IDL数据I/OASCII_TEMPLATE和READIDL程序结构主程序ProcedureFunctionmethod17感谢你的观看2019年5月8日IDL程序结构主程序17感谢你的观看2019年5月8日主程序(两种表现形式)1、程序体…

end文件名为,没有名称的主程序必须放在程序最后面。源代码编译后,直接执行没有名称的放在最后的主程序18感谢你的观看2019年5月8日主程序(两种表现形式)1、程序体18感谢你的观看2019年5主程序(两种表现形式)protest 程序体

end文件名为。源代码编译后,直接执行与文件名同名的主程序19感谢你的观看2019年5月8日主程序(两种表现形式)protest19感谢你的观看201主程序(两种表现形式)pro程序名程序体end20感谢你的观看2019年5月8日主程序(两种表现形式)pro程序名20感谢你的观看2019主程序例程Forexample,hereisamainprogramthatplotstenrandomnumbers.Itisplacedinafilenamed. numbers=randomu(seed,10)*20.0 plot,numbers endExecutethismainprogramusingthe.RUNexecutivecommand.IDL>.runpnums21感谢你的观看2019年5月8日主程序例程Forexample,hereisamaProcedure结构:pro子程序名称,变量V1,V2,…,k1=k1,k2=k2 程序体endkeyword起重要作用22感谢你的观看2019年5月8日Procedure结构:22感谢你的观看2019年5月8日ProcedureTheprocedureisplacedinthefile.protwoplot,one,twoloadct,5plot,one,COLOR=125oplot,two,COLOR=180End调用时:IDL>twoplot,var1,var223感谢你的观看2019年5月8日ProcedureTheprocedureisplacFunction(函数)Functiontest变量V1,V2,…,关键字k1=k1,k2=k2 程序体

return,Value end24感谢你的观看2019年5月8日Function(函数)Functiontest变Function(函数)afilenamed. functionmean,array average=total(array)/n_elements(array) return,average endCallMEANfromthecommandlineandreturnitsoutputtoanamedvariable:IDL>avgarray=mean(findgen(10))25感谢你的观看2019年5月8日Function(函数)afilenamedmean.定义对象的methodproclass_name::test,变量V1,V2,…,k1=k1,k2=k2 程序体

end26感谢你的观看2019年5月8日定义对象的methodproclass_name::te调用方法调用routines:test,v1,v2,…,k1=k1,k2=k2,…keyword可有可无,若没有,用缺省值。调用Function:result=test(v1,v2,…,k1=k1,k2=k2,…)27感谢你的观看2019年5月8日调用方法调用routines:27感谢你的观看2019年5月调用方法调用method:Object->test,v1,v2…28感谢你的观看2019年5月8日调用方法调用method:28感谢你的观看2019年5月8日IDL程序条件语句Begin–EndIf–Then–ElseFor–DoWhile–DoRepeat–UntilCaseXof–else–endcaseExpr?Expr1:expr2(条件判断语句)29感谢你的观看2019年5月8日IDL程序条件语句Begin–End29感谢你的观看2界面设计两种方式GUI方式程序方式30感谢你的观看2019年5月8日界面设计两种方式30感谢你的观看2019年5月8日程序方式创建界面protest;主程序

base=widget_base(/column)button1=widget_button(base,value='打开',uvalue='op')draw=widget_draw(base,uvalue='dra',xsize=800,ysize=600);,$;x_scroll_size=1000,y_scroll_size=1000)button2=widget_button(base,value='退出',uvalue='ex')widget_control,base,/realizexmanager,'test',base;,event='test_event'end31感谢你的观看2019年5月8日程序方式创建界面protest;主程序31感谢你的观看程序方式创建界面protest_event,ev;事件处理程序widget_control,ev.id,get_uvalue=uvcaseuvof'op':begin shade_surf,dist(100)end'ex':begin widget_control,ev.top,/destroy endendcaseend32感谢你的观看2019年5月8日程序方式创建界面protest_event,ev;事件IDL控件实例PROwidget2;主程序base=WIDGET_BASE(/COLUMN)button1=WIDGET_BUTTON(base,VALUE='One',UVALUE='ONE')button2=WIDGET_BUTTON(base,VALUE='Two',UVALUE='TWO')text=WIDGET_TEXT(base,XSIZE=20)button3=WIDGET_BUTTON(base,value='Done',UVALUE='DONE')WIDGET_CONTROL,base,SET_UVALUE=textWIDGET_CONTROL,base,/REALIZEXMANAGER,'Widget2',baseEND

33感谢你的观看2019年5月8日IDL控件实例PROwidget2;主程序33感谢你的观IDL控件实例PROwidget2_event,ev;事件处理程序

WIDGET_CONTROL,ev.top,GET_UVALUE=textwidWIDGET_CONTROL,ev.id,GET_UVALUE=uvalCASEuvalOF'ONE':WIDGET_CONTROL,textwid,SET_VALUE='ButtonOnePressed''TWO':WIDGET_CONTROL,textwid,SET_VALUE='ButtonTwoPressed''DONE':WIDGET_CONTROL,ev.top,/DESTROYENDCASEEND34感谢你的观看2019年5月8日IDL控件实例PROwidget2_event,ev;ColorinIDL8bitColor—ColorLookupTables(LUT)24bitColor—

指定RGB颜色在程序开始时将decomposed选相关掉Device,decomposed=0或:根据颜色深度指定颜色察看系统颜色信息:Device,get_visual_depth=vdSysdevinfoHelp,/device浏览彩色表:cindex,xloadct35感谢你的观看2019年5月8日ColorinIDL8bitColor—ColoIDLDirectandObjectGraphics直接图形法和对象图形法直接图形法:创建2D图形时常用,如:plot,mapping,contours.简单、快速,但需反复重画;对象图形法:加速3D系统显示,灵活,交互性强,充分控制对象,对象驻留内存,不需反复重画。36感谢你的观看2019年5月8日IDLDirectandObjectGraphicsLiveTools对象编程Live_contourLive_controlLive_destroyLive_exportLive_ImageLive_infoLive_loadLive_oplotLive_plotLive_printLive_rectLive_surfaceLive_textLive_style高效快捷的对象分析工具,提供如下函数:37感谢你的观看2019年5月8日LiveTools对象编程Live_contourLivIDL定义对象定义类的StructureStructure={IDLexModelManip,$INHERITS,IDLgrModel, 常量及新的对象}ThefollowingisanexampleofastructuredefinitionprocedurethatdefinesastructurethatwillbeusedfortheclassCNAME.PROCNAME__DEFINEstruct={CNAME,data1:0L,data2:FLTARR(10)}END38感谢你的观看2019年5月8日IDL定义对象定义类的Structure38感谢你的观看20IDL定义对象定义类的method:PROClassName::MethodIDLstatementsENDorFUNCTIONClassName::Method,Argument1IDLstatementsRETURN,valueEND39感谢你的观看2019年5月8日IDL定义对象定义类的method:39感谢你的观看2019创建对象Result=OBJ_NEW([ObjectClassName[,Arg1...Argn]])如:a=obj_new(‘idlgrmodel’)40感谢你的观看2019年5月8日创建对象Result=OBJ_NEW([ObjectCl删除对象OBJ_DESTROY,ObjRef[,Arg1,,Argn]41感谢你的观看2019年5月8日删除对象OBJ_DESTROY,ObjRef[,ArgIDL中对象种类四大类:容器:View,Window模型:idlgrmodel,是容器对象的子对象 起承上启下作用原子:image,surface,polyline,ploygon,光源(均可直接显示)属性:符号,IDLgrFont,(无法直接显示)42感谢你的观看2019年5月8日IDL中对象种类四大类:42感谢你的观看2019年5月8日IDL对象关系四类对象呈树状关系一个只能有一个父对象GraphicsAtomModelViewSceneGraphicsAtomGraphicsAtomGraphicsAtomModelModelView43感谢你的观看2019年5月8日IDL对象关系四类对象呈树状关系GraphicsModel调用时传递

Surface,a,color=[255,0,0] 限制性强公共区传递

Commonfd,a,b,c公共区占用PROMULT,MCOMMONSHARE2,E,F,GM=E*F*GPRINT,M,E,F,GRETURNENDPRODIV,DCOMMONSHARE2D=E/FPRINT,D,E,F,GRETURN固定内存用uservalue传递参数Keyword传递参数传递44感谢你的观看2019年5月8日调用时传递参数传递44感谢你的观看2019年5月8日IDLPointer指针与C、C++中指针不同,只是IDL堆变量的索引,不存在真正的内存地址。相关函数:PTR_NEW,PTR_VALID,PTR_FREE调用方法: a=findgen(10) aptr=ptr_new(a) Print,*aptr45感谢你的观看2019年5月8日IDLPointer指针与C、C++中指针不同,只是IDIDL坐标系统Data数据坐标缺省的坐标系统,plot,contour,surface常用Device设备坐标以像素为单位的物理坐标,tv,tvscl常用Normal归一化坐标,从0到1,对象图形法常用46感谢你的观看2019年5月8日IDL坐标系统Data数据坐标46感谢你的观看2019年外部语言接口Spawn子进程ActiveX控件RPC远程进程调用Call_externalLink_imageCallableIDL47感谢你的观看2019年5月8日外部语言接口Spawn子进程47感谢你的观看2019年5月Spawn子进程Windows下可执行操作,无法返回信息。Spawn,’cd/windows’单用spawn,可到dos操作系统下。Unix下,可以多进程使用,非常有用。48感谢你的观看2019年5月8日Spawn子进程Windows下可执行操作,无法返回信息。ActiveX控件Vb调用IDL界面由VB设计,触发事件可有VB或IDL控制。控件初始化IDL程序初始化49感谢你的观看2019年5月8日ActiveX控件Vb调用IDL49感谢你的观看2019RPC(RemoteProcedureCalls)只支持UNIX平台allowsIDLtoberunasanRPCserverandyourownprogramtoberunasaclient.IDLcommandscanbesentfromyourapplicationtotheIDLserver,wheretheyareexecuted.VariablestructurescanbedefinedintheclientprogramandthensenttotheIDLserverforcreationasIDLvariables.Similarly,thevaluesofvariablesintheIDLserversessioncanberetrievedintotheclientprocess.50感谢你的观看2019年5月8日RPC(RemoteProcedureCalls)只支RPC(RemoteProcedureCalls)将IDL作为Server端

IDL命令环境

IDLDE开发环境

在Server端运行IDL时

idlrpc-server=server_number将IDL作为Client端

IDL_VARIABLE结构对变量作说明

IDL_RPCGetMainVariable

LinkingtotheClientLibrary,libidl.rfc.h51感谢你的观看2019年5月8日RPC(RemoteProcedureCalls)将ICall_external 通过目标码进行传递,可调用任何语言的Code(如c和Fortran),适合任何操作平台。

X=FINDGEN(10) S=CALL_EXTERNAL('example.so',$ 'sum_array'X,N_ELEMENTS(X),/F_VALUE)Inthisexample,example.soisthenameofthesharableimagefile,sum_arrayisthenameoftheentrypoint,andXandN_ELEMENTS(X)arepassedtothecalledroutineasparameters.TheF_VALUEkeywordspecifiesthatthereturnedvalueisafloating-pointnumberratherthananIDL_LONG.缺点:数据在传递时数据大小和类型都必须已知,且不能传递虚拟变量。建议:写错误捕捉子程序。52感谢你的观看2019年5月8日Call_external 通过目标码进行传递,可调用任何语Link_image把外部程序变为内部程序须了解IDL的内部结构IDLinternals调用n=link_image()传递变量Keyword的处理:Signals:捕捉,控制Unix操作系统允许多进程53感谢你的观看2019年5月8日Link_image把外部程序变为内部程序53感谢你的观看2CallableIDLIDLcanbecalledasasubroutinefromotherprograms.ThiscapabilityisreferredtoasCallableIDLtodistinguishitfromthemorecommoncaseofcallingyourcodefromIDLviaCALL_EXTERNALorLINKIMAGE.IDLforWindowshasasmalldriverprogramlinkedtoaDynamicLinkLibrary(DLL).效率高与RPC接近(在RPC中,必须先启动IDLRPCServer)比较复杂54感谢你的观看2019年5月8日CallableIDLIDLcanbecalledIDLDataMinerTheIDLDataMinerisanOpenDatabaseConnectivity(ODBC)interfacethatallowsIDLuserstoaccessandmanipulateinformationfromavarietyofdatabasemanagementsystems.ResearchSystems,Inc.,developedIDLDataMinersothatIDLuserscanhavealltheconnectivityadvantagesofODBCwithouthavingtounderstandtheintricaciesofODBCorSQL(StructuredQueryLanguage).55感谢你的观看2019年5月8日IDLDataMinerTheIDLDataMinerIDLDataMinerallowyou:Connecttoadatabasemanagementsystem(DBMS)QuerydatafromaDBMSGetinformationabouttheavailabledatabasetablesinaDBMSAccessatableinaDBMSCreateatableinaDBMSDeleteatableinaDBMSPerformstandardSQLoperationsintheDBMSGetinformationaboutthecolumnsinaselectedtableAdd/Change/Deleterecordsinatable56感谢你的观看2019年5月8日IDLDataMinerallowyou:ConnecIDLDataMinerTheIDLDataMinerprovidestwoIDLobjectsforaccessingdatabases:Databaseobject(IDLdbDatabase)Recordsetobject(IDLdbRecordset)57感谢你的观看2019年5月8日IDLDataMinerTheIDLDataMinerIDLDataMinerstatus=DB_EXISTS()objDB=OBJ_NEW('IDLdbDatabase')status=DIALOG_DBCONNECT(objDB)sources=objDB->GetDatasources()58感谢你的观看2019年5月8日IDLDataMinerstatus=DB_EXISTIDLdbDatabasemyDB=OBJ_NEW('IDLdbDatabase')OBJ_DESTORY,myDBstatus=DIALOG_DBCONNECT(DBobj)status=DB_EXISTS()59感谢你的观看2019年5月8日IDLdbDatabasemyDB=OBJ_NEW('IIDLdbDatabase

IDLdbDatabase::Conne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论