TheInteractiveDataLanguage交互式數(shù)據(jù)語言課件_第1頁
TheInteractiveDataLanguage交互式數(shù)據(jù)語言課件_第2頁
TheInteractiveDataLanguage交互式數(shù)據(jù)語言課件_第3頁
TheInteractiveDataLanguage交互式數(shù)據(jù)語言課件_第4頁
TheInteractiveDataLanguage交互式數(shù)據(jù)語言課件_第5頁
已閱讀5頁,還剩129頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

TheInteractiveDataLanguage交互式數(shù)據(jù)語言1感謝你的觀看2019年5月8日TheInteractiveDataLanguage1功能簡(jiǎn)介

IDL是進(jìn)行數(shù)據(jù)分析、可視化及跨平臺(tái)應(yīng)用開發(fā)的最佳選擇。IDL集可視、交互分析、大型商業(yè)開發(fā)為一體,為您提供了最完善、最靈活最有效的開發(fā)環(huán)境。(參考idl5.5.ppt)2感謝你的觀看2019年5月8日功能簡(jiǎn)介 IDL是進(jìn)行數(shù)據(jù)分析、可視化及跨平臺(tái)應(yīng)用開發(fā)的最佳IDL培訓(xùn)提綱IDL簡(jiǎn)介及應(yīng)用IDL程序特點(diǎn)命令行操作數(shù)據(jù)輸入輸出圖像與信號(hào)處理矩陣操作界面設(shè)計(jì)對(duì)象圖形對(duì)象操作參數(shù)傳遞與外部語言接口數(shù)據(jù)庫(kù)接口例程分析回答問題3感謝你的觀看2019年5月8日IDL培訓(xùn)提綱IDL簡(jiǎn)介及應(yīng)用對(duì)象圖形3感謝你的觀看2019IDL程序特點(diǎn)分隔符為“,”,而非空格不分大小寫變量無需事先說明——寬松的語法檢查機(jī)制4感謝你的觀看2019年5月8日IDL程序特點(diǎn)分隔符為“,”,而非空格——寬松的語法檢查機(jī)制IDL符號(hào)$作為一行的第一個(gè)字符時(shí),返回到操作系統(tǒng)下,如:$dir作為一行的最后一個(gè)字符時(shí),相當(dāng)于一行未寫完,換行。;后面是注釋@批作業(yè)如:@test5感謝你的觀看2019年5月8日IDL符號(hào)$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感謝變量命名規(guī)則正確:reade6_$fileonly_8_bitComputerTypevariables_day_of_year錯(cuò)誤:name.lastthird%file4th_list$temp變量名稱長(zhǎng)度不超過255個(gè)字符,但變量大小取決于計(jì)算機(jī)配置和操作系統(tǒng)。7感謝你的觀看2019年5月8日變量命名規(guī)則正確:錯(cuò)誤:變量名稱長(zhǎng)度不超過255個(gè)字符,但變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(結(jié)構(gòu))9感謝你的觀看2019年5月8日IDL變量Scalar9感謝你的觀看2019年5月8日系統(tǒng)Keyword系統(tǒng)Keyword!dpi(3.1415926)!p控制顯示如:!p.font,!p.color!d(device,對(duì)設(shè)備進(jìn)行控制)如:device,get_screen_size=view 24bit顯卡下顯示8位假彩色圖像,用Device,decompose=0,(設(shè)置成8bit256色) 10感謝你的觀看2019年5月8日系統(tǒng)Keyword系統(tǒng)Keyword10感謝你的觀看20矩陣操作A=bytarr(512,512)列行b=tan(a)+10子區(qū)處理:A(*,1)表示第2行的所有列A(*,1:10)11感謝你的觀看2019年5月8日矩陣操作A=bytarr(512,512)11感謝你的觀看2矩陣操作若a為一二維數(shù)組,c=[10,15,20],則A(c)將是一稀疏矩陣,只提取a中第10,15,20個(gè)元素,如可用來提取河流。C=where(a,max=15,min=0)a(c)=255將a中很暗的值變?yōu)?55。取字區(qū)還可實(shí)現(xiàn)非常多的局部操作。12感謝你的觀看2019年5月8日矩陣操作若a為一二維數(shù)組,c=[10,15,20],12感謝WHERE函數(shù)Indices=where(datagt0.4anddatalt0.5)Data[indices]=1.013感謝你的觀看2019年5月8日WHERE函數(shù)Indices=where(datagt矩陣操作search2D二維數(shù)組中在一定值域范圍內(nèi)以一初始點(diǎn)為準(zhǔn),搜索與它連通的范圍,相當(dāng)于a(c)search3D在三維體數(shù)據(jù)內(nèi)搜索。應(yīng)用:給定步長(zhǎng),可實(shí)現(xiàn)半自動(dòng)矢量化,半自動(dòng)跟蹤一條線。14感謝你的觀看2019年5月8日矩陣操作search2D二維數(shù)組中在一定值域范圍內(nèi)以一初始矩陣操作A#B表示A的列乘以B的行A##B表示A的行乘以B的列Transpose矩陣轉(zhuǎn)置a[i,j]=a[j,i]……15感謝你的觀看2019年5月8日矩陣操作A#B表示A的列乘以B的行15感謝你的觀看201IDL數(shù)據(jù)I/OASCII_TEMPLATE和READ_ASCIIBINARY_TEMPLATE和READ_BINARYIDLLIVE_TOOLSDIALOG_READ_IMAGE和DIALOG_WRITE_IMAGE16感謝你的觀看2019年5月8日IDL數(shù)據(jù)I/OASCII_TEMPLATE和READIDL程序結(jié)構(gòu)主程序ProcedureFunctionmethod17感謝你的觀看2019年5月8日IDL程序結(jié)構(gòu)主程序17感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)1、程序體…

end文件名為,沒有名稱的主程序必須放在程序最后面。源代碼編譯后,直接執(zhí)行沒有名稱的放在最后的主程序18感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)1、程序體18感謝你的觀看2019年5主程序(兩種表現(xiàn)形式)protest 程序體

end文件名為。源代碼編譯后,直接執(zhí)行與文件名同名的主程序19感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)protest19感謝你的觀看201主程序(兩種表現(xiàn)形式)pro程序名程序體end20感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)pro程序名20感謝你的觀看2019主程序例程Forexample,hereisamainprogramthatplotstenrandomnumbers.I. numbers=randomu(seed,10)*20.0 plot,numbers endExecutethismainprogramusingthe.RUNexecutivecommand.IDL>.runpnums21感謝你的觀看2019年5月8日主程序例程Forexample,hereisamaProcedure結(jié)構(gòu):pro子程序名稱,變量V1,V2,…,k1=k1,k2=k2 程序體endkeyword起重要作用22感謝你的觀看2019年5月8日Procedure結(jié)構(gòu):22感謝你的觀看2019年5月8日ProcedureTtwoplot,one,twoloadct,5plot,one,COLOR=125oplot,two,COLOR=180End調(diào)用時(shí):IDL>twoplot,var1,var223感謝你的觀看2019年5月8日ProcedureTheprocedureisplacFunction(函數(shù))Functiontest變量V1,V2,…,關(guān)鍵字k1=k1,k2=k2 程序體

return,Value end24感謝你的觀看2019年5月8日Function(函數(shù))Functiontest變Function(函數(shù)). functionmean,array average=total(array)/n_elements(array) return,average endCallMEANfromthecommandlineandreturnitsoutputtoanamedvariable:IDL>avgarray=mean(findgen(10))25感謝你的觀看2019年5月8日Function(函數(shù))afilenamedmean.定義對(duì)象的methodproclass_name::test,變量V1,V2,…,k1=k1,k2=k2 程序體

end26感謝你的觀看2019年5月8日定義對(duì)象的methodproclass_name::te調(diào)用方法調(diào)用routines:test,v1,v2,…,k1=k1,k2=k2,…keyword可有可無,若沒有,用缺省值。調(diào)用Function:result=test(v1,v2,…,k1=k1,k2=k2,…)27感謝你的觀看2019年5月8日調(diào)用方法調(diào)用routines:27感謝你的觀看2019年5月調(diào)用方法調(diào)用method:Object->test,v1,v2…28感謝你的觀看2019年5月8日調(diào)用方法調(diào)用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界面設(shè)計(jì)兩種方式GUI方式程序方式30感謝你的觀看2019年5月8日界面設(shè)計(jì)兩種方式30感謝你的觀看2019年5月8日程序方式創(chuàng)建界面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日程序方式創(chuàng)建界面protest;主程序31感謝你的觀看程序方式創(chuàng)建界面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日程序方式創(chuàng)建界面protest_event,ev;事件IDL控件實(shí)例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控件實(shí)例PROwidget2;主程序33感謝你的觀IDL控件實(shí)例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控件實(shí)例PROwidget2_event,ev;ColorinIDL8bitColor—ColorLookupTables(LUT)24bitColor—

指定RGB顏色在程序開始時(shí)將decomposed選相關(guān)掉Device,decomposed=0或:根據(jù)顏色深度指定顏色察看系統(tǒng)顏色信息:Device,get_visual_depth=vdSysdevinfoHelp,/device瀏覽彩色表:cindex,xloadct35感謝你的觀看2019年5月8日ColorinIDL8bitColor—ColoIDLDirectandObjectGraphics直接圖形法和對(duì)象圖形法直接圖形法:創(chuàng)建2D圖形時(shí)常用,如:plot,mapping,contours.簡(jiǎn)單、快速,但需反復(fù)重畫;對(duì)象圖形法:加速3D系統(tǒng)顯示,靈活,交互性強(qiáng),充分控制對(duì)象,對(duì)象駐留內(nèi)存,不需反復(fù)重畫。36感謝你的觀看2019年5月8日IDLDirectandObjectGraphicsLiveTools對(duì)象編程Live_contourLive_controlLive_destroyLive_exportLive_ImageLive_infoLive_loadLive_oplotLive_plotLive_printLive_rectLive_surfaceLive_textLive_style高效快捷的對(duì)象分析工具,提供如下函數(shù):37感謝你的觀看2019年5月8日LiveTools對(duì)象編程Live_contourLivIDL定義對(duì)象定義類的StructureStructure={IDLexModelManip,$INHERITS,IDLgrModel, 常量及新的對(duì)象}ThefollowingisanexampleofastructuredefinitionprocedurethatdefinesastructurethatwillbeusedfortheclassCNAME.PROCNAME__DEFINEstruct={CNAME,data1:0L,data2:FLTARR(10)}END38感謝你的觀看2019年5月8日IDL定義對(duì)象定義類的Structure38感謝你的觀看20IDL定義對(duì)象定義類的method:PROClassName::MethodIDLstatementsENDorFUNCTIONClassName::Method,Argument1IDLstatementsRETURN,valueEND39感謝你的觀看2019年5月8日IDL定義對(duì)象定義類的method:39感謝你的觀看2019創(chuàng)建對(duì)象Result=OBJ_NEW([ObjectClassName[,Arg1...Argn]])如:a=obj_new(‘idlgrmodel’)40感謝你的觀看2019年5月8日創(chuàng)建對(duì)象Result=OBJ_NEW([ObjectCl刪除對(duì)象OBJ_DESTROY,ObjRef[,Arg1,,Argn]41感謝你的觀看2019年5月8日刪除對(duì)象OBJ_DESTROY,ObjRef[,ArgIDL中對(duì)象種類四大類:容器:View,Window模型:idlgrmodel,是容器對(duì)象的子對(duì)象 起承上啟下作用原子:image,surface,polyline,ploygon,光源(均可直接顯示)屬性:符號(hào),IDLgrFont,(無法直接顯示)42感謝你的觀看2019年5月8日IDL中對(duì)象種類四大類:42感謝你的觀看2019年5月8日IDL對(duì)象關(guān)系四類對(duì)象呈樹狀關(guān)系一個(gè)只能有一個(gè)父對(duì)象GraphicsAtomModelViewSceneGraphicsAtomGraphicsAtomGraphicsAtomModelModelView43感謝你的觀看2019年5月8日IDL對(duì)象關(guān)系四類對(duì)象呈樹狀關(guān)系GraphicsModel調(diào)用時(shí)傳遞

Surface,a,color=[255,0,0] 限制性強(qiáng)公共區(qū)傳遞

Commonfd,a,b,c公共區(qū)占用PROMULT,MCOMMONSHARE2,E,F,GM=E*F*GPRINT,M,E,F,GRETURNENDPRODIV,DCOMMONSHARE2D=E/FPRINT,D,E,F,GRETURN固定內(nèi)存用uservalue傳遞參數(shù)Keyword傳遞參數(shù)傳遞44感謝你的觀看2019年5月8日調(diào)用時(shí)傳遞參數(shù)傳遞44感謝你的觀看2019年5月8日IDLPointer指針與C、C++中指針不同,只是IDL堆變量的索引,不存在真正的內(nèi)存地址。相關(guān)函數(shù):PTR_NEW,PTR_VALID,PTR_FREE調(diào)用方法: a=findgen(10) aptr=ptr_new(a) Print,*aptr45感謝你的觀看2019年5月8日IDLPointer指針與C、C++中指針不同,只是IDIDL坐標(biāo)系統(tǒng)Data數(shù)據(jù)坐標(biāo)缺省的坐標(biāo)系統(tǒng),plot,contour,surface常用Device設(shè)備坐標(biāo)以像素為單位的物理坐標(biāo),tv,tvscl常用Normal歸一化坐標(biāo),從0到1,對(duì)象圖形法常用46感謝你的觀看2019年5月8日IDL坐標(biāo)系統(tǒng)Data數(shù)據(jù)坐標(biāo)46感謝你的觀看2019年外部語言接口Spawn子進(jìn)程ActiveX控件RPC遠(yuǎn)程進(jìn)程調(diào)用Call_externalLink_imageCallableIDL47感謝你的觀看2019年5月8日外部語言接口Spawn子進(jìn)程47感謝你的觀看2019年5月Spawn子進(jìn)程Windows下可執(zhí)行操作,無法返回信息。Spawn,’cd/windows’單用spawn,可到dos操作系統(tǒng)下。Unix下,可以多進(jìn)程使用,非常有用。48感謝你的觀看2019年5月8日Spawn子進(jìn)程Windows下可執(zhí)行操作,無法返回信息。ActiveX控件Vb調(diào)用IDL界面由VB設(shè)計(jì),觸發(fā)事件可有VB或IDL控制??丶跏蓟疘DL程序初始化49感謝你的觀看2019年5月8日ActiveX控件Vb調(diào)用IDL49感謝你的觀看2019RPC(RemoteProcedureCalls)只支持UNIX平臺(tái)allowsIDLtoberunasanRPCserverandyourownprogramtoberunasaclient.IDLcommandscanbesentfromyourapplicationtotheIDLserver,wheretheyareexecuted.VariablestructurescanbedefinedintheclientprogramandthensenttotheIDLserverforcreationasIDLvariables.Similarly,thevaluesofvariablesintheIDLserversessioncanberetrievedintotheclientprocess.50感謝你的觀看2019年5月8日RPC(RemoteProcedureCalls)只支RPC(RemoteProcedureCalls)將IDL作為Server端

IDL命令環(huán)境

IDLDE開發(fā)環(huán)境

在Server端運(yùn)行IDL時(shí)

idlrpc-server=server_number將IDL作為Client端

IDL_VARIABLE結(jié)構(gòu)對(duì)變量作說明

IDL_RPCGetMainVariable

LinkingtotheClientLibrary,libidl.rfc.h51感謝你的觀看2019年5月8日RPC(RemoteProcedureCalls)將ICall_external 通過目標(biāo)碼進(jìn)行傳遞,可調(diào)用任何語言的Code(如c和Fortran),適合任何操作平臺(tái)。

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.缺點(diǎn):數(shù)據(jù)在傳遞時(shí)數(shù)據(jù)大小和類型都必須已知,且不能傳遞虛擬變量。建議:寫錯(cuò)誤捕捉子程序。52感謝你的觀看2019年5月8日Call_external 通過目標(biāo)碼進(jìn)行傳遞,可調(diào)用任何語Link_image把外部程序變?yōu)閮?nèi)部程序須了解IDL的內(nèi)部結(jié)構(gòu)IDLinternals調(diào)用n=link_image()傳遞變量Keyword的處理:Signals:捕捉,控制Unix操作系統(tǒng)允許多進(jìn)程53感謝你的觀看2019年5月8日Link_image把外部程序變?yōu)閮?nèi)部程序53感謝你的觀看2CallableIDLIDLcanbecalledasasubroutinefromotherprograms.ThiscapabilityisreferredtoasCallableIDLtodistinguishitfromthemorecommoncaseofcallingyourcodefromIDLviaCALL_EXTERNALorLINKIMAGE.IDLforWindowshasasmalldriverprogramlinkedtoaDynamicLinkLibrary(DLL).效率高與RPC接近(在RPC中,必須先啟動(dòng)IDLRPCServer)比較復(fù)雜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::ConnectIDLdbDatabase::ExecuteSQLIDLdbDatabase::GetDatasourcesIDLdbDatabase::GetPropertyIDLdbDatabase::GetTablesIDLdbDatabase::SetProperty60感謝你的觀看2019年5月8日IDLdbDatabaseIDLdbDatabase::CConnectODBCforOracleConnectODBCforOraclesupportstwoseparatedrivers.ConnectODBCforOracle7(theOracledriver)supportstheOracle7databasesystem.ConnectODBCforOracle8(theOracle8driver)supportstheOracle8databasesystem.TheOracle8driverissupportedintheWindows9x,WindowsNT,MacintoshPowerPC,andUNIXenvironments.SeetheREADMEfileshippedwithyourINTERSOLVDataDirectproductforthefilenamesoftheOracledrivers.61感謝你的觀看2019年5月8日ConnectODBCforOracleConnectIDLdbRecordsetTheIDLdbRecordsetobjectcontainsadatabasetableortheresultsfromanSQLquery.RSObj=OBJ_NEW('IDLdbRecordset',DBobj,KEYWORD)OBJ_DESTROY,RSObj62感謝你的觀看2019年5月8日IDLdbRecordsetTheIDLdbRecordsIDLdbRecordsetIDLdbRecordset::AddRecordIDLdbRecordset::CurrentRecordIDLdbRecordset::DeleteRecordIDLdbRecordset::GetFieldIDLdbRecordset::GetPropertyIDLdbRecordset::GetRecordIDLdbRecordset::MoveCursorIDLdbRecordset::NFieldsIDLdbRecordset::SetField63感謝你的觀看2019年5月8日IDLdbRecordsetIDLdbRecordset::網(wǎng)上相關(guān)資源64感謝你的觀看2019年5月8日網(wǎng)上相關(guān)資源64感謝你的觀看2019年5月8日65感謝你的觀看2019年5月8日65感謝你的觀看2019年5月8日Questions?謝謝!66感謝你的觀看2019年5月8日Questions?謝謝!66感謝你的觀看2019年5月67感謝你的觀看2019年5月8日67感謝你的觀看2019年5月8日TheInteractiveDataLanguage交互式數(shù)據(jù)語言68感謝你的觀看2019年5月8日TheInteractiveDataLanguage1功能簡(jiǎn)介

IDL是進(jìn)行數(shù)據(jù)分析、可視化及跨平臺(tái)應(yīng)用開發(fā)的最佳選擇。IDL集可視、交互分析、大型商業(yè)開發(fā)為一體,為您提供了最完善、最靈活最有效的開發(fā)環(huán)境。(參考idl5.5.ppt)69感謝你的觀看2019年5月8日功能簡(jiǎn)介 IDL是進(jìn)行數(shù)據(jù)分析、可視化及跨平臺(tái)應(yīng)用開發(fā)的最佳IDL培訓(xùn)提綱IDL簡(jiǎn)介及應(yīng)用IDL程序特點(diǎn)命令行操作數(shù)據(jù)輸入輸出圖像與信號(hào)處理矩陣操作界面設(shè)計(jì)對(duì)象圖形對(duì)象操作參數(shù)傳遞與外部語言接口數(shù)據(jù)庫(kù)接口例程分析回答問題70感謝你的觀看2019年5月8日IDL培訓(xùn)提綱IDL簡(jiǎn)介及應(yīng)用對(duì)象圖形3感謝你的觀看2019IDL程序特點(diǎn)分隔符為“,”,而非空格不分大小寫變量無需事先說明——寬松的語法檢查機(jī)制71感謝你的觀看2019年5月8日IDL程序特點(diǎn)分隔符為“,”,而非空格——寬松的語法檢查機(jī)制IDL符號(hào)$作為一行的第一個(gè)字符時(shí),返回到操作系統(tǒng)下,如:$dir作為一行的最后一個(gè)字符時(shí),相當(dāng)于一行未寫完,換行。;后面是注釋@批作業(yè)如:@test72感謝你的觀看2019年5月8日IDL符號(hào)$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,$,/t3d73感謝你的觀看2019年5月8日IDL命令行A=dist(100)Zvalue=0.56感謝變量命名規(guī)則正確:reade6_$fileonly_8_bitComputerTypevariables_day_of_year錯(cuò)誤:name.lastthird%file4th_list$temp變量名稱長(zhǎng)度不超過255個(gè)字符,但變量大小取決于計(jì)算機(jī)配置和操作系統(tǒng)。74感謝你的觀看2019年5月8日變量命名規(guī)則正確:錯(cuò)誤:變量名稱長(zhǎng)度不超過255個(gè)字符,但變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變量類型75感謝你的觀看2019年5月8日TypeLenCreationArrayConversionIDL變量ScalarArray(1—8維)Structure(結(jié)構(gòu))76感謝你的觀看2019年5月8日IDL變量Scalar9感謝你的觀看2019年5月8日系統(tǒng)Keyword系統(tǒng)Keyword!dpi(3.1415926)!p控制顯示如:!p.font,!p.color!d(device,對(duì)設(shè)備進(jìn)行控制)如:device,get_screen_size=view 24bit顯卡下顯示8位假彩色圖像,用Device,decompose=0,(設(shè)置成8bit256色) 77感謝你的觀看2019年5月8日系統(tǒng)Keyword系統(tǒng)Keyword10感謝你的觀看20矩陣操作A=bytarr(512,512)列行b=tan(a)+10子區(qū)處理:A(*,1)表示第2行的所有列A(*,1:10)78感謝你的觀看2019年5月8日矩陣操作A=bytarr(512,512)11感謝你的觀看2矩陣操作若a為一二維數(shù)組,c=[10,15,20],則A(c)將是一稀疏矩陣,只提取a中第10,15,20個(gè)元素,如可用來提取河流。C=where(a,max=15,min=0)a(c)=255將a中很暗的值變?yōu)?55。取字區(qū)還可實(shí)現(xiàn)非常多的局部操作。79感謝你的觀看2019年5月8日矩陣操作若a為一二維數(shù)組,c=[10,15,20],12感謝WHERE函數(shù)Indices=where(datagt0.4anddatalt0.5)Data[indices]=1.080感謝你的觀看2019年5月8日WHERE函數(shù)Indices=where(datagt矩陣操作search2D二維數(shù)組中在一定值域范圍內(nèi)以一初始點(diǎn)為準(zhǔn),搜索與它連通的范圍,相當(dāng)于a(c)search3D在三維體數(shù)據(jù)內(nèi)搜索。應(yīng)用:給定步長(zhǎng),可實(shí)現(xiàn)半自動(dòng)矢量化,半自動(dòng)跟蹤一條線。81感謝你的觀看2019年5月8日矩陣操作search2D二維數(shù)組中在一定值域范圍內(nèi)以一初始矩陣操作A#B表示A的列乘以B的行A##B表示A的行乘以B的列Transpose矩陣轉(zhuǎn)置a[i,j]=a[j,i]……82感謝你的觀看2019年5月8日矩陣操作A#B表示A的列乘以B的行15感謝你的觀看201IDL數(shù)據(jù)I/OASCII_TEMPLATE和READ_ASCIIBINARY_TEMPLATE和READ_BINARYIDLLIVE_TOOLSDIALOG_READ_IMAGE和DIALOG_WRITE_IMAGE83感謝你的觀看2019年5月8日IDL數(shù)據(jù)I/OASCII_TEMPLATE和READIDL程序結(jié)構(gòu)主程序ProcedureFunctionmethod84感謝你的觀看2019年5月8日IDL程序結(jié)構(gòu)主程序17感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)1、程序體…

end文件名為,沒有名稱的主程序必須放在程序最后面。源代碼編譯后,直接執(zhí)行沒有名稱的放在最后的主程序85感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)1、程序體18感謝你的觀看2019年5主程序(兩種表現(xiàn)形式)protest 程序體

end文件名為。源代碼編譯后,直接執(zhí)行與文件名同名的主程序86感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)protest19感謝你的觀看201主程序(兩種表現(xiàn)形式)pro程序名程序體end87感謝你的觀看2019年5月8日主程序(兩種表現(xiàn)形式)pro程序名20感謝你的觀看2019主程序例程Forexample,hereisamainprogramthatplotstenrandomnumbers.I. numbers=randomu(seed,10)*20.0 plot,numbers endExecutethismainprogramusingthe.RUNexecutivecommand.IDL>.runpnums88感謝你的觀看2019年5月8日主程序例程Forexample,hereisamaProcedure結(jié)構(gòu):pro子程序名稱,變量V1,V2,…,k1=k1,k2=k2 程序體endkeyword起重要作用89感謝你的觀看2019年5月8日Procedure結(jié)構(gòu):22感謝你的觀看2019年5月8日ProcedureTtwoplot,one,twoloadct,5plot,one,COLOR=125oplot,two,COLOR=180End調(diào)用時(shí):IDL>twoplot,var1,var290感謝你的觀看2019年5月8日ProcedureTheprocedureisplacFunction(函數(shù))Functiontest變量V1,V2,…,關(guān)鍵字k1=k1,k2=k2 程序體

return,Value end91感謝你的觀看2019年5月8日Function(函數(shù))Functiontest變Function(函數(shù)). functionmean,array average=total(array)/n_elements(array) return,average endCallMEANfromthecommandlineandreturnitsoutputtoanamedvariable:IDL>avgarray=mean(findgen(10))92感謝你的觀看2019年5月8日Function(函數(shù))afilenamedmean.定義對(duì)象的methodproclass_name::test,變量V1,V2,…,k1=k1,k2=k2 程序體

end93感謝你的觀看2019年5月8日定義對(duì)象的methodproclass_name::te調(diào)用方法調(diào)用routines:test,v1,v2,…,k1=k1,k2=k2,…keyword可有可無,若沒有,用缺省值。調(diào)用Function:result=test(v1,v2,…,k1=k1,k2=k2,…)94感謝你的觀看2019年5月8日調(diào)用方法調(diào)用routines:27感謝你的觀看2019年5月調(diào)用方法調(diào)用method:Object->test,v1,v2…95感謝你的觀看2019年5月8日調(diào)用方法調(diào)用method:28感謝你的觀看2019年5月8日IDL程序條件語句Begin–EndIf–Then–ElseFor–DoWhile–DoRepeat–UntilCaseXof–else–endcaseExpr?Expr1:expr2(條件判斷語句)96感謝你的觀看2019年5月8日IDL程序條件語句Begin–End29感謝你的觀看2界面設(shè)計(jì)兩種方式GUI方式程序方式97感謝你的觀看2019年5月8日界面設(shè)計(jì)兩種方式30感謝你的觀看2019年5月8日程序方式創(chuàng)建界面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'end98感謝你的觀看2019年5月8日程序方式創(chuàng)建界面protest;主程序31感謝你的觀看程序方式創(chuàng)建界面protest_event,ev;事件處理程序widget_control,ev.id,get_uvalue=uvcaseuvof'op':begin shade_surf,dist(100)end'ex':begin widget_control,ev.top,/destroy endendcaseend99感謝你的觀看2019年5月8日程序方式創(chuàng)建界面protest_event,ev;事件IDL控件實(shí)例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

100感謝你的觀看2019年5月8日IDL控件實(shí)例PROwidget2;主程序33感謝你的觀IDL控件實(shí)例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,/DESTROYENDCASEEND101感謝你的觀看2019年5月8日IDL控件實(shí)例PROwidget2_event,ev;ColorinIDL8bitColor—ColorLookupTables(LUT)24bitColor—

指定RGB顏色在程序開始時(shí)將decomposed選相關(guān)掉Device,decomposed=0或:根據(jù)顏色深度指定顏色察看系統(tǒng)顏色信息:Device,get_visual_depth=vdSysdevinfoHelp,/device瀏覽彩色表:cindex,xloadct102感謝你的觀看2019年5月8日ColorinIDL8bitColor—ColoIDLDirectandObjectGraphics直接圖形法和對(duì)象圖形法直接圖形法:創(chuàng)建2D圖形時(shí)常用,如:plot,mapping,contours.簡(jiǎn)單、快速,但需反復(fù)重畫;對(duì)象圖形法:加速3D系統(tǒng)顯示,靈活,交互性強(qiáng),充分控制對(duì)象,對(duì)象駐留內(nèi)存,不需反復(fù)重畫。103感謝你的觀看2019年5月8日IDLDirectandObjectGraphicsLiveTools對(duì)象編程Live_contourLive_controlLive_destroyLive_exportLive_ImageLive_infoLive_loadLive_oplotLive_plotLive_printLive_rectLive_surfaceLive_textLive_style高效快捷的對(duì)象分析工具,提供如下函數(shù):104感謝你的觀看2019年5月8日LiveTools對(duì)象編程Live_contourLivIDL定義對(duì)象定義類的StructureStructure={IDLexModelManip,$INHERITS,IDLgrModel, 常量及新的對(duì)象}ThefollowingisanexampleofastructuredefinitionprocedurethatdefinesastructurethatwillbeusedfortheclassCNAME.PROCNAME__DEFINEstruct={CNAME,data1:0L,data2:FLTARR(10)}END105感謝你的觀看2019年5月8日IDL定義對(duì)象定義類的Structure38感謝你的觀看20IDL定義對(duì)象定義類的method:PROClassName::MethodIDLstatementsENDorFUNCTIONClassName::Method,Argument1IDLstatementsRETURN,valueEND106感謝你的觀看2019年5月8日IDL定義對(duì)象定義類的method:39感謝你的觀看2019創(chuàng)建對(duì)象Result=OBJ_NEW([ObjectClassName[,Arg1...Argn]])如:a=obj_new(‘idlgrmodel’)107感謝你的觀看2019年5月8日創(chuàng)建對(duì)象Result=OBJ_NEW([ObjectCl刪除對(duì)象OBJ_DESTROY,ObjRef[,Arg1,,Argn]108感謝你的觀看2019年5月8日刪除對(duì)象OBJ_DESTROY,ObjRef[,ArgIDL中對(duì)象種類四大類:容器:View,Window模型:idlgrmodel,是容器對(duì)象的子對(duì)象 起承上啟下作用原子:image,surface,polyline,ploygon,光源(均可直接顯示)屬性:符號(hào),IDLgrFont,(無法直接顯示)109感謝你的觀看2019年5月8日IDL中對(duì)象種類四大類:42感謝你的觀看2019年5月8日IDL對(duì)象關(guān)系四類對(duì)象呈樹狀關(guān)系一個(gè)只能有一個(gè)父對(duì)象GraphicsAtomModelViewSceneGraphicsAtomGraphicsAtomGraphicsAtomModelModelView110感謝你的觀看2019年5月8日IDL對(duì)象關(guān)系四類對(duì)象呈樹狀關(guān)系GraphicsModel調(diào)用時(shí)傳遞

Surface,a,color=[255,0,0] 限制性強(qiáng)公共區(qū)傳遞

Commonfd,a,b,c公共區(qū)占用PROMULT,MCOMMONSHARE2,E,F,GM=E*F*GPRINT,M,E,F,GRETURNENDPRODIV,DCOMMONSHARE2D=E/FPRINT,D,E,F,GRETURN固定內(nèi)存用uservalue傳遞參數(shù)Keyword傳遞參數(shù)傳遞111感謝你的觀看2019年5月8日調(diào)用時(shí)傳遞參數(shù)傳遞44感謝你的觀看2019年5月8日IDLPointer指針與C、C++中指針不同,只是IDL堆變量的索引,不存在真正的內(nèi)存地址。相關(guān)函數(shù):PTR_NEW,PTR_VALID,PTR_FREE調(diào)用方法: a=findgen(10) aptr=ptr_new(a) Print,*aptr112感謝你的觀看2019年5月8日IDLPointer指針與C、C++中指針不同,只是IDIDL坐標(biāo)系統(tǒng)Data數(shù)據(jù)坐標(biāo)缺省的坐標(biāo)系統(tǒng),plot,contour,surface常用Device設(shè)備坐標(biāo)以像素為單位的物理坐標(biāo),tv,tvscl常用Normal歸一化坐標(biāo),從0到1,對(duì)象圖形法常用113感謝你的觀看2019年5月8日IDL坐標(biāo)系統(tǒng)Data數(shù)據(jù)坐標(biāo)46感謝你的觀看2019年外部語言接口Spawn子進(jìn)程ActiveX控件RPC遠(yuǎn)程進(jìn)程調(diào)用Call_externalLink_imageCallableIDL114感謝你的觀看2019年5月8日外部語言接口Spawn子進(jìn)程47感謝你的觀看2019年5月Spawn子進(jìn)程Windows下可執(zhí)行操作,無法返回信息。Spawn,’cd/windows’單用spawn,可到dos操作系統(tǒng)下。Unix下,可以多進(jìn)程使用,非常有用。115感謝你的觀看2019年5月8日Spawn子進(jìn)程Windows下可執(zhí)行操作,無法返回信息。ActiveX控件Vb調(diào)用IDL界面由VB設(shè)計(jì),觸發(fā)事件可有VB或IDL控制??丶跏蓟疘DL程序初始化116感謝你的觀看2019年5月8日ActiveX控件Vb調(diào)用IDL49感謝你的觀看2019RPC(RemoteProcedureCalls)只支持UNIX平臺(tái)allowsIDLtoberunasanRPCserverandyourownprogramtoberunasaclient.IDLcommandscanbesentfromyourapplicationtotheIDLserver,wheretheyareexecuted.VariablestructurescanbedefinedintheclientprogramandthensenttotheIDLserverforcreationasIDLvariables.Similarly,thevaluesofvariablesintheIDLserversessioncanberetrievedintotheclientprocess.117感謝你的觀看2019年5月8日RPC(RemoteProcedureCalls)只支RPC(RemoteProcedureCalls)將IDL作為Server端

IDL命令環(huán)境

IDLDE開發(fā)環(huán)境

在Server端運(yùn)行IDL時(shí)

idlrpc-server=server_number將IDL作為Client端

IDL_VARIABLE結(jié)構(gòu)對(duì)變量作說明

IDL_RPCGetMainVariable

LinkingtotheClientLibrary,libidl.rfc.h118感謝你的觀看2019年5月8日RPC(RemoteProcedureCalls)將ICall_external 通過目標(biāo)碼進(jìn)行傳遞,可調(diào)用任何語言的Code(如c和Fortran),適合任何操作平臺(tái)。

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.缺點(diǎn):數(shù)據(jù)在傳遞時(shí)數(shù)據(jù)大小和類型都必須已知,且不能傳遞虛擬變量。建議:寫錯(cuò)誤捕捉子程序。119感謝你的觀看2019年5月8日Call_external 通過目標(biāo)碼進(jìn)行傳遞,可調(diào)用任何語Link_image把外部程序變?yōu)閮?nèi)部程序須了解IDL的內(nèi)部結(jié)構(gòu)IDLinternals調(diào)用n=link_image()傳遞變量Keyword的處理:Signals:捕捉,控制Unix操作系統(tǒng)允許多進(jìn)程120感謝你的觀看2019年5月8日Link_image把外部程序變?yōu)閮?nèi)部程序53感謝你的觀看2CallableIDLIDLcanbecalledasasubroutinefromotherprograms.ThiscapabilityisreferredtoasCallableIDLtodistinguishitfromthemorecommoncaseofcallingyourcodefromIDLviaCALL_EXTERNALorLINKIMAGE.IDLforWindowshasasmalldriverprogramlinkedtoaDynamicLinkLibrary(DLL).效率高與RPC接近(在RPC中,必須先啟動(dòng)IDLRPCServer)比較復(fù)雜121感謝你的觀看2019年5月8日CallableIDLIDLcanbecalledIDLDataMinerThe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論