基于SuperMap的河北省土地移動執(zhí)法監(jiān)察平臺設(shè)計(jì)與開發(fā)_第1頁
基于SuperMap的河北省土地移動執(zhí)法監(jiān)察平臺設(shè)計(jì)與開發(fā)_第2頁
基于SuperMap的河北省土地移動執(zhí)法監(jiān)察平臺設(shè)計(jì)與開發(fā)_第3頁
基于SuperMap的河北省土地移動執(zhí)法監(jiān)察平臺設(shè)計(jì)與開發(fā)_第4頁
基于SuperMap的河北省土地移動執(zhí)法監(jiān)察平臺設(shè)計(jì)與開發(fā)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于SuperMap的河北省土地移動執(zhí)法監(jiān)察平臺設(shè)計(jì)與開發(fā)摘 要:河北省國土資源移動執(zhí)法平臺基于SuperMap GIS開發(fā),主要實(shí)現(xiàn)應(yīng)用GIS、GPS以及RS技術(shù)對土地利用情況進(jìn)行監(jiān)管監(jiān)控。該平臺包括移動執(zhí)法監(jiān)察系統(tǒng)、執(zhí)法監(jiān)察數(shù)據(jù)中心管理系統(tǒng)兩大部分,涵蓋了土地利用現(xiàn)狀、土地利用規(guī)劃、海量遙感影像以及執(zhí)法監(jiān)察等國土資源數(shù)據(jù)庫。河北省國土資源移動執(zhí)法平臺應(yīng)用了異構(gòu)數(shù)據(jù)庫互操作、組件式開發(fā)、海量數(shù)據(jù)的集成管理與應(yīng)用、空間信息技術(shù)綜合集成等新技術(shù)手段,同時(shí)實(shí)現(xiàn)了和當(dāng)前已有電子政務(wù)平臺的無縫集成。關(guān)鍵字:SuperMap 國土資源 移動執(zhí)法引言信息技術(shù)是提升國土資源管理水平的重要技術(shù)手段,也是順應(yīng)國

2、土資源管理科學(xué)化發(fā)展年的重要需求。隨著國家越來越重視對土地資源的合理利用和保護(hù),加強(qiáng)土地管理,更好地參與國民經(jīng)濟(jì)宏觀調(diào)控,越來越要求實(shí)時(shí)、準(zhǔn)確、翔實(shí)地掌握土地資源及權(quán)屬的空間數(shù)據(jù)信息。如何盡早地發(fā)現(xiàn)土地違法違規(guī)占用,便捷、高效地實(shí)施土地案件現(xiàn)場核查,實(shí)現(xiàn)建設(shè)用地實(shí)時(shí)監(jiān)管,真正落實(shí)“以圖管地”,是國土資源監(jiān)管工作首先要解決的問題。常規(guī)方法和技術(shù)難以適應(yīng)新形勢下的管理需求。近年來,以全球衛(wèi)星定位系統(tǒng)(GPS)、遙感(RS)、地理信息系統(tǒng)(GIS)為代表的空間信息集成技術(shù)有了長足的發(fā)展,特別是GPSPDA技術(shù)和裝備的成功開發(fā),為土地管理工作提供了方便、實(shí)用、經(jīng)濟(jì)的技術(shù)手段。河北省國土資源廳根據(jù)當(dāng)前國

3、土資源管理的具體情況,利用最新遙感動態(tài)監(jiān)測成果、已有航天、航空數(shù)字正射影像數(shù)據(jù)以及相關(guān)土地業(yè)務(wù)數(shù)據(jù)庫,建設(shè)完成了具有定量采集、定性執(zhí)法功能的集成車載GPS、車載遠(yuǎn)程通訊模塊、土地利用執(zhí)法遙感巡察以及監(jiān)察數(shù)據(jù)中心管理系統(tǒng)等功能一體化的土地移動執(zhí)法監(jiān)察平臺??傮w框架系統(tǒng)在已有電子政務(wù)系統(tǒng)及數(shù)據(jù)資源的基礎(chǔ)上,通過整合、完善以及持續(xù)補(bǔ)充和維護(hù)空間數(shù)據(jù)資源,開發(fā)包含移動執(zhí)法監(jiān)察平臺以及執(zhí)法監(jiān)察數(shù)據(jù)中心管理平臺在內(nèi)的河北省省級土地執(zhí)法監(jiān)察管理信息系統(tǒng)。建立中心數(shù)據(jù)庫和移動執(zhí)法監(jiān)察車載數(shù)據(jù)庫,通過無線傳輸及離線拷貝的方式保持?jǐn)?shù)據(jù)庫的一致,在此基礎(chǔ)上,實(shí)現(xiàn)外業(yè)手持?jǐn)?shù)據(jù)資源采集、車載執(zhí)法監(jiān)察、遙感影像管理、圖形

4、管理以及執(zhí)法監(jiān)察過程管理等功能。同時(shí),本次系統(tǒng)建成的數(shù)據(jù)庫將同時(shí)為省廳電子政務(wù)系統(tǒng)服務(wù)。河北省土地移動執(zhí)法監(jiān)察平臺的總體框架如圖2-1所示。圖 STYLEREF 1 s 2 SEQ 圖 * ARABIC s 1 1 執(zhí)法監(jiān)察平臺總體框架系統(tǒng)技術(shù)架構(gòu)系統(tǒng)建設(shè)框架采用C/S和B/S結(jié)合的架構(gòu)模式,利用關(guān)系型數(shù)據(jù)庫技術(shù)及現(xiàn)代網(wǎng)絡(luò)通信技術(shù),由數(shù)據(jù)庫層對遙感影像數(shù)據(jù)、空間矢量數(shù)據(jù)、審批數(shù)據(jù)和執(zhí)法監(jiān)察數(shù)據(jù)進(jìn)行存儲管理,并為應(yīng)用服務(wù)層提供底層數(shù)據(jù)支持。應(yīng)用服務(wù)層用地理信息應(yīng)用平臺為中間應(yīng)用服務(wù)器,來響應(yīng)處理用戶界面層的請求。用戶界面層以定位、采集、立案查處過程管理進(jìn)行瀏覽辦公。系統(tǒng)技術(shù)架構(gòu)如圖3-1??臻g數(shù)

5、據(jù)庫存儲統(tǒng)一采用Oracle Spatial進(jìn)行管理,由于Oracle Spatial具有公開透明特點(diǎn),在電子政務(wù)應(yīng)用和其他業(yè)務(wù)應(yīng)用中,可選擇多種GIS平臺共存的方式。本系統(tǒng)采用SuperMap GIS作為開發(fā)和應(yīng)用的基礎(chǔ)平臺,其中手持移動執(zhí)法監(jiān)察系統(tǒng)、車載定位系統(tǒng)應(yīng)用嵌入式平臺eSuperMap開發(fā),車載移動執(zhí)法監(jiān)察系統(tǒng)、遙感影像管理系統(tǒng)應(yīng)用組件式平臺SuperMap Objects開發(fā),圖形管理平臺和執(zhí)法監(jiān)察過程管理采用WebGIS平臺SuperMap IS開發(fā)。圖 STYLEREF 1 s 3 SEQ 圖 * ARABIC s 1 1 系統(tǒng)技術(shù)架構(gòu)系統(tǒng)設(shè)計(jì)4.1. 硬件組成硬件部分包括:

6、巡察車、車載GPS、車載高性能筆記本、打印車、攝像機(jī)。 巡察車輛的要求:車體寬大,車頂高,越野性能優(yōu)越,適合野外車內(nèi)做業(yè)。 車載GPS要求:精度為亞米級,支持藍(lán)牙和無線網(wǎng)絡(luò)GPRS傳輸??梢灾苯映蓤D和輸出多種數(shù)據(jù)格式。 車載高性能筆記本: 內(nèi)置Windows操作系統(tǒng),安裝本系統(tǒng)所涉及到的數(shù)據(jù)庫軟件、辦公軟件及所有到的數(shù)據(jù),實(shí)現(xiàn)外業(yè)現(xiàn)場辦公管理。 打印機(jī):A4激光打印機(jī),打印現(xiàn)場詢問筆錄、現(xiàn)場勘測筆錄和制式文書等。 攝像機(jī):錄制影音及現(xiàn)場實(shí)景等資料。數(shù)據(jù)傳輸可采用無線方式實(shí)現(xiàn)。系統(tǒng)主要采用網(wǎng)絡(luò)通訊及網(wǎng)絡(luò)安全技術(shù)建立起執(zhí)法車與執(zhí)法局監(jiān)控中心的實(shí)時(shí)通訊通道。首先建立監(jiān)控中心與執(zhí)法車的互聯(lián)網(wǎng)通訊環(huán)境,

7、監(jiān)控中心建立起具有公網(wǎng)固定IP地址的WEB服務(wù),作為整個(gè)系統(tǒng)的通訊中心樞紐。執(zhí)法車?yán)肎PRS通過HTTP協(xié)議建立起與監(jiān)控中心的實(shí)時(shí)通訊通道。利用建立起的這個(gè)監(jiān)察通訊網(wǎng)絡(luò),就可以實(shí)現(xiàn)監(jiān)控中心與執(zhí)法車的遠(yuǎn)程實(shí)時(shí)通訊,實(shí)現(xiàn)數(shù)據(jù)的上傳和下行。系統(tǒng)數(shù)據(jù)傳輸同時(shí)也可通過離線拷貝方式實(shí)現(xiàn)。圖 STYLEREF 1 s 4 SEQ 圖 * ARABIC s 1 1 系統(tǒng)網(wǎng)絡(luò)拓?fù)鋱D4.2. 軟件功能設(shè)計(jì)系統(tǒng)概要設(shè)計(jì)共分四部分:定位采集子系統(tǒng)、遙感影像數(shù)據(jù)管理、圖形查詢子系統(tǒng)和執(zhí)法監(jiān)察過程管理。(1)定位采集子系統(tǒng)定位采集子系統(tǒng)由硬件和軟件兩部分組成,功能是利用GPS、GIS以及遙感集成技術(shù),實(shí)現(xiàn)外業(yè)違法用地的

8、采集。包括兩個(gè)部分,一是通過車載GPS設(shè)備和車載處理軟件實(shí)現(xiàn),二是通過GPS/PDA實(shí)現(xiàn)。(2)遙感影像數(shù)據(jù)管理利用遙感影像數(shù)據(jù)管理子系統(tǒng)實(shí)現(xiàn)對河北省國土資源變化遙感動態(tài)監(jiān)測項(xiàng)目成果數(shù)據(jù)的管理與應(yīng)用。目前已有成果數(shù)據(jù)包括2006年SPOT原始影像26景,2005年23景和1:1萬DOM幅。遙感影像數(shù)據(jù)管理系統(tǒng)主要實(shí)現(xiàn)遙感影像的配準(zhǔn)、拼接、壓縮、入庫、影像金字塔的生成、快速瀏覽、按分幅更新、多期影像的差異對比分析、按照分幅以及任意范圍的制圖輸出等等,在可能的條件下,實(shí)現(xiàn)對新增建設(shè)用地分布范圍、新聞報(bào)道的違法用地范圍、信訪的違法用地范圍的識別提取。(3)圖形查詢子系統(tǒng)系統(tǒng)的圖形查詢主要實(shí)現(xiàn)對采集的

9、坐標(biāo)數(shù)據(jù)與數(shù)據(jù)庫層數(shù)據(jù)的疊加顯示和查詢分析,同時(shí)實(shí)現(xiàn)對所有數(shù)據(jù)的任意調(diào)用、顯示和疊加。圖形查詢功能主要是查詢違法用地、土地利用現(xiàn)狀、土地利用規(guī)劃等圖形信息,包括圖數(shù)互查,并對查詢結(jié)果進(jìn)行統(tǒng)計(jì)分析,同時(shí),提供緩沖分析、疊加分析等空間查詢和分析方法,實(shí)現(xiàn)違法用地占用或影像土地利用現(xiàn)狀、土地利用規(guī)劃相關(guān)的圖形和屬性信息,輸出報(bào)表,并可以直觀的以各種圖表顯示。(4)執(zhí)法監(jiān)察過程管理執(zhí)法過程管理用部執(zhí)法監(jiān)察管理信息系統(tǒng)來完成,做好與其銜接工作,在巡邏車上進(jìn)行現(xiàn)場辦公。實(shí)現(xiàn)當(dāng)場打印法定文書、制式文件、現(xiàn)場立案。系統(tǒng)特色本系統(tǒng)具有如下的技術(shù)特色:(1)基于海量空間數(shù)據(jù)庫技術(shù)管理圖形和影像數(shù)據(jù),數(shù)據(jù)主要包括:

10、遙感影像數(shù)據(jù)、空間矢量數(shù)據(jù)、審批數(shù)據(jù)和執(zhí)法數(shù)據(jù)。其中遙感影像數(shù)據(jù)采用SuperMap SDX+來管理,土地利用現(xiàn)狀和規(guī)劃空間矢量數(shù)據(jù)采用Oracle Spatial來管理,審批數(shù)據(jù)及執(zhí)法數(shù)據(jù)采用Oracle來管理。利用SuperMap SDX + 空間引擎對數(shù)據(jù)庫層數(shù)據(jù)管理、訪問、調(diào)用。(2)GPS、GIS以及RS技術(shù)的一體化集成應(yīng)用。系統(tǒng)采用RS技術(shù)進(jìn)行新增建設(shè)用地的快速準(zhǔn)確的識別發(fā)現(xiàn)和定位。系統(tǒng)采用GIS技術(shù)、數(shù)據(jù)庫技術(shù)以及海量空間數(shù)據(jù)集成與管理技術(shù)進(jìn)行海量空間數(shù)據(jù)庫的管理、更新、業(yè)務(wù)應(yīng)用和分析。系統(tǒng)采用GPS技術(shù)進(jìn)行導(dǎo)航、定位。系統(tǒng)通過開發(fā),建立起GPS與GIS系統(tǒng)之間的通訊與集成,將G

11、PS坐標(biāo)實(shí)時(shí)傳輸或轉(zhuǎn)換給GIS業(yè)務(wù)應(yīng)用系統(tǒng),對違法地塊進(jìn)行定位,同時(shí)通過記錄車載GPS的行駛軌跡,對遠(yuǎn)程巡察車進(jìn)行實(shí)時(shí)監(jiān)控和管理。(3)組件式GIS技術(shù)及服務(wù)式GIS技術(shù)。采用多層架構(gòu)并且具有插件擴(kuò)充功能的集成系統(tǒng),采用全組件式GIS開發(fā)技術(shù)。同時(shí),應(yīng)用SuperMap服務(wù)式GIS平臺進(jìn)行海量空間數(shù)據(jù)的集成管理、應(yīng)用以及實(shí)現(xiàn)與局內(nèi)電子政務(wù)平臺之間的無縫銜接。通過提供開發(fā)的Web服務(wù)接口,可實(shí)現(xiàn)土地執(zhí)法監(jiān)察結(jié)果能夠無縫的被電子政務(wù)平臺調(diào)用。結(jié)語應(yīng)用現(xiàn)代空間信息技術(shù),實(shí)現(xiàn)了河北省違法用地的快速發(fā)現(xiàn)和處理,為保障土地資源的合理利用提供了很好的技術(shù)手段。系統(tǒng)集成應(yīng)用GIS、GPS、RS等技術(shù),實(shí)現(xiàn)了違

12、法用地車載巡察、手持野外數(shù)據(jù)采集、遙感影像處理和管理、圖形數(shù)據(jù)管理和應(yīng)用、違法用地分析等功能,并通過Web服務(wù)接口實(shí)現(xiàn)了與電子政務(wù)系統(tǒng)的無縫集成。河北省土地移動執(zhí)法監(jiān)察系統(tǒng)的建設(shè),實(shí)現(xiàn)了違法用地的快速識別、定位、分析以及查處,提高了國土資源管理的效率。附錄資料:不需要的可以自行刪除 perl函數(shù)應(yīng)用一、進(jìn)程處理函數(shù)1、進(jìn)程啟動函數(shù)函數(shù)名eval調(diào)用語法eval(string)解說將string看作Perl語句執(zhí)行。正確執(zhí)行后,系統(tǒng)變量$為空串,如果有錯誤,$中為錯誤信息。例子$print = print (hello,worldn);eval ($print);結(jié)果輸出hello, world

13、函數(shù)名system調(diào)用語法system(list)解說list中第一個(gè)元素為程序名,其余為參數(shù)。system啟動一個(gè)進(jìn)程運(yùn)行程序并等待其結(jié)束,程序結(jié)束后錯誤代碼左移八位成為返回值。例子proglist = (echo, hello,world!);system(proglist);結(jié)果輸出hello, world!函數(shù)名fork調(diào)用語法procid = fork();解說創(chuàng)建程序的兩個(gè)拷貝-父進(jìn)程和子進(jìn)程-同時(shí)運(yùn)行。子進(jìn)程返回零,父進(jìn)程返回非零值,此值為子程序的進(jìn)程ID號。例子$retval = fork();if ($retval = 0) # this is the child proce

14、ss exit; # this terminates the child process else # this is the parent process結(jié)果輸出無函數(shù)名pipe調(diào)用語法pipe (infile, outfile);解說與fork合用,給父進(jìn)程和子進(jìn)程提供通信的方式。送到outfile文件變量的信息可以通過infile文件變量讀取。步驟:1、調(diào)用pipe2、用fork將程序分成父進(jìn)程和子進(jìn)程3、一個(gè)進(jìn)程關(guān)掉infile,另一個(gè)關(guān)掉outfile例子pipe (INPUT, OUTPUT);$retval = fork();if ($retval != 0) # this is

15、 the parent process close (INPUT); print (Enter a line of input:n); $line = ; print OUTPUT ($line); else # this is the child process close (OUTPUT); $line = ; print ($line); exit (0);結(jié)果輸出$programEnter a line of input:Here is a test lineHere is a test line$函數(shù)名exec調(diào)用語法exec (list);解說與system類似,區(qū)別是啟動新進(jìn)程前

16、結(jié)束當(dāng)前程序。常與fork合用,當(dāng)fork分成兩個(gè)進(jìn)程后,子進(jìn)程用exec啟動另一個(gè)程序。例子 結(jié)果輸出函數(shù)名syscall調(diào)用語法syscall (list);解說調(diào)用系統(tǒng)函數(shù),list第一個(gè)元素是系統(tǒng)調(diào)用名,其余為參數(shù)。如果參數(shù)是數(shù)字,就轉(zhuǎn)化成C的整型數(shù)(type int)。否則傳遞字符串的指針。詳見UNIX的幫助或Perl文檔。使用syscall必須包含文件syscall.pl,即:require (syscall.ph); 例子結(jié)果輸出2、進(jìn)程終止函數(shù)函數(shù)名Die調(diào)用語法die (message);解說終止程序并向STDERR輸出錯誤信息。message可以為字符串或列表。如果最后一個(gè)

17、參數(shù)不包含換行符,則程序文件名和行號也被輸出。例子die (Cannot open input file);結(jié)果輸出Cannot open input file at myprog line 6.函數(shù)名warn調(diào)用語法warn (message);解說與die類似,區(qū)別是不終止程序。例子warn(Danger! Danger!n);結(jié)果輸出Danger! Danger!函數(shù)名exit調(diào)用語法exit (retcode);解說終止程序并指定返回值。例子exit(2);結(jié)果輸出無函數(shù)名kill調(diào)用語法kill (signal, proclist);解說給一組進(jìn)程發(fā)送信號。signal是發(fā)送的數(shù)字信

18、號,9為殺掉進(jìn)程。proclist是進(jìn)程ID列表。詳見kill的UNIX幫助。例子結(jié)果輸出3、進(jìn)程控制函數(shù)函數(shù)名sleep調(diào)用語法sleep (time);解說將程序暫停一段時(shí)間。time是停止的秒數(shù)。返回值為實(shí)際停止的秒數(shù)。例子sleep (5);結(jié)果輸出無函數(shù)名wait調(diào)用語法procid = wait();解說暫停程序執(zhí)行,等待子進(jìn)程終止。不需要參數(shù),返回值為子進(jìn)程ID,如果沒有子進(jìn)程,返回-1。例子結(jié)果輸出函數(shù)名waitpid調(diào)用語法waitpid (procid, waitflag);解說暫停程序執(zhí)行,等待特定的子進(jìn)程終止。procid為等待的進(jìn)程ID例子$procid = fork

19、();if ($procid = 0) # this is the child process print (this line is printed firstn); exit(0); else # this is the parent process waitpid ($procid, 0); print (this line is printed lastn);結(jié)果輸出$ programthis line is printed firstthis line is printed last$4、其它控制函數(shù)函數(shù)名caller調(diào)用語法subinfo = caller();解說返回調(diào)用者的程序

20、名和行號,用于Perl Debugger。返回值為三元素的列表:1、調(diào)用處的包名2、調(diào)用者文件名3、調(diào)用處的行號例子結(jié)果輸出函數(shù)名chroot調(diào)用語法chroot (dir);解說改變程序的根目錄,詳見chroot幫助。例子結(jié)果輸出函數(shù)名local調(diào)用語法local($variable);解說在語句塊(由大括號包圍的語句集合)中定義局域變量,僅在此語句塊中起作用,對其的改變不對塊外同名變量造成影響。千萬不要在循環(huán)中使用,否則每次循環(huán)都定義一個(gè)新的局域變量!例子結(jié)果輸出函數(shù)名times調(diào)用語法timelist = times解說返回該程序及所有子進(jìn)程消耗的工作時(shí)間。返回值為四個(gè)浮點(diǎn)數(shù)的列表:1、

21、程序耗用的用戶時(shí)間2、程序耗用的系統(tǒng)時(shí)間3、子進(jìn)程耗用的用戶時(shí)間4、子進(jìn)程耗用的系統(tǒng)時(shí)間例子結(jié)果輸出二、數(shù)學(xué)函數(shù)函數(shù)名sin調(diào)用語法retval = sin (value);解說參數(shù)為弧度值。函數(shù)名cos調(diào)用語法retval = cos (value);解說參數(shù)為弧度值。函數(shù)名atan2調(diào)用語法retval = atan2 (value1, value2);解說運(yùn)算并返回value1除以value2結(jié)果的arctan值,單位為弧度,范圍在-PIPI。應(yīng)用例:角度轉(zhuǎn)化成弧度子程序。sub degrees_to_radians local ($degrees) = _; local ($radia

22、ns);11: $radians = atan2(1,1) * $degrees / 45;函數(shù)名sqrt調(diào)用語法retval = sqrt (value);解說平方根函數(shù)。value為非負(fù)數(shù)。函數(shù)名exp調(diào)用語法retval = exp (value);解說返回e的value次方。函數(shù)名log調(diào)用語法retval = log (value);解說以e為底的自然對數(shù)。函數(shù)名abs調(diào)用語法retval = abs (value);解說絕對值函數(shù)。(Perl 4中沒有)函數(shù)名rand調(diào)用語法retval = rand (num);解說隨機(jī)數(shù)函數(shù),返回0和整數(shù)num之間的一個(gè)浮點(diǎn)數(shù)。函數(shù)名srand

23、調(diào)用語法srand (value);解說初始化隨機(jī)數(shù)生成器。保證每次調(diào)用rand真正隨機(jī)。三、字符串處理函數(shù)函數(shù)名index調(diào)用語法position = index (string, substring, position);解說返回子串substring在字符串string中的位置,如果不存在則返回-1。參數(shù)position是可選項(xiàng),表示匹配之前跳過的字符數(shù),或者說從該位置開始匹配。函數(shù)名rindex調(diào)用語法position = rindex (string, substring, position);解說與index類似,區(qū)別是從右端匹配。函數(shù)名length調(diào)用語法num = length

24、 (string);解說返回字符串長度,或者說含有字符的數(shù)目。函數(shù)名pos調(diào)用語法offset = pos(string);解說返回最后一次模式匹配的位置。函數(shù)名substr調(diào)用語法substr (expr, skipchars, length)解說抽取字符串(或表達(dá)式生成的字符串)expr中的子串,跳過skipchars個(gè)字符,或者說從位置skipchars開始抽取子串(第一個(gè)字符位置為0),子串長度為length,此參數(shù)可忽略,意味著取剩下的全部字符。當(dāng)此函數(shù)出現(xiàn)在等式左邊時(shí),expr必須為變量或數(shù)組元素,此時(shí)其中部分子串被等式右邊的值替換。函數(shù)名study調(diào)用語法study (scala

25、r);解說用一種內(nèi)部格式提高變量的訪問速度,同一時(shí)刻只對一個(gè)變量起作用。函數(shù)名lcuc調(diào)用語法retval = lc(string);retval = uc(string);解說將字符串全部轉(zhuǎn)換成小/大寫字母。函數(shù)名lcfirstucfirst調(diào)用語法retval = lcfirst(string);retval = ucfirst(string);解說將第一個(gè)字母轉(zhuǎn)換成小/大寫。函數(shù)名quotameta調(diào)用語法newstring = quotemeta(oldstring);解說將非單詞的字母前面加上反斜線()。語句 : $string = quotemeta($string);等效于:$s

26、tring = s/(W)/$1/g;常用于模式匹配操作中,確保字符串中沒有字符被看作匹配操作符。函數(shù)名join調(diào)用語法join (joinstr, list);解說把字符串列表(數(shù)組)組合成一個(gè)長的字符串,在每兩個(gè)列表元素間插入串joinstr。函數(shù)名sprintf調(diào)用語法sprintf (string, fields);解說與printf類似,區(qū)別是結(jié)果不輸出到文件,而作為返回值賦給變量。例子$num = 26;$outstr = sprintf(%d = %x hexadecimal or %o octaln,$num, $num, $num);print ($outstr);結(jié)果輸出2

27、6 = 1a hexadecimal or 32 octal四、標(biāo)量轉(zhuǎn)換函數(shù)函數(shù)名chop調(diào)用語法$lastchar = chop (var);解說var可為變量或數(shù)組,當(dāng)var為變量時(shí),最后一個(gè)字符被刪除并賦給$lastchar,當(dāng)var為數(shù)組/列表時(shí),所有元素的最后一個(gè)字符被刪除,最后一個(gè)元素的最后一個(gè)字母賦給$lastchar。函數(shù)名chomp調(diào)用語法result = chomp(var);解說檢查字符串或字符串列表中元素的最后一個(gè)字符是否為由系統(tǒng)變量$/定義的行分隔符,如果是就刪除。返回值為實(shí)際刪除的字符個(gè)數(shù)。函數(shù)名crypt調(diào)用語法result = crypt (original,

28、salt);解說用DES算法加密字符串,original是將要加密的字符串,salt是兩個(gè)字符的字符串,定義如何改變DES算法,以使更難解碼。返回值為加密后的串。函數(shù)名hex調(diào)用語法decnum = hex (hexnum);解說將十六進(jìn)制數(shù)(字符串形式)轉(zhuǎn)化為十進(jìn)制數(shù)。函數(shù)名int調(diào)用語法intnum = int (floatnum);解說將浮點(diǎn)數(shù)舍去小數(shù)部分轉(zhuǎn)化為整型數(shù)。函數(shù)名oct調(diào)用語法decnum = oct (octnum);解說將八進(jìn)制數(shù)(字符串形式)或十六進(jìn)制數(shù)(0 x.形式)轉(zhuǎn)化為十進(jìn)制數(shù)。函數(shù)名ord調(diào)用語法asciival = ord (char);解說返回單個(gè)字符的AS

29、CII值,與PASCAL中同名函數(shù)類似。函數(shù)名chr調(diào)用語法$char = chr (asciival);解說返回ASCII值的相應(yīng)字符,與PASCAL中同名函數(shù)類似。函數(shù)名pack調(diào)用語法formatstr = pack(packformat, list);解說把一個(gè)列表或數(shù)組以在實(shí)際機(jī)器存貯格式或C等編程語言使用的格式轉(zhuǎn)化(包裝)到一個(gè)簡單變量中。參數(shù)packformat包含一個(gè)或多個(gè)格式字符,列表中每個(gè)元素對應(yīng)一個(gè),各格式字符間可用空格或tab隔開,因?yàn)閜ack忽略空格。除了格式a、A和外,重復(fù)使用一種格式多次可在其后加個(gè)整數(shù),如: $twoints = pack (i2, 103, 2

30、41);把同一格式應(yīng)用于所有的元素則加個(gè)*號,如: $manyints = pack (i*, 14, 26, 11, 83);對于a和A而言,其后的整數(shù)表示要創(chuàng)建的字符串長度,重復(fù)方法如下: $strings = pack (a6 x 2, test1, test2);格式的情況比較特殊,其后必須加個(gè)整數(shù),該數(shù)表示字符串必須的長度,如果長度不夠,則用空字符(null)補(bǔ)足,如: $output = pack (a 6 a, test, test2);pack函數(shù)最常見的用途是創(chuàng)建可與C程序交互的數(shù)據(jù),例如C語言中字符串均以空字符(null)結(jié)尾,創(chuàng)建這樣的數(shù)據(jù)可以這樣做: $Cstring

31、= pack (ax, $mystring);下表是一些格式字符與C中數(shù)據(jù)類型的等價(jià)關(guān)系:字符 等價(jià)C數(shù)據(jù)類型CcharddoubleffloatiintIunsigned int (or unsigned)llongLunsigned longsshortSunsigned short完整的格式字符見下表。 格式字符 描述a用空字符(null)補(bǔ)足的字符串A用空格補(bǔ)足的字符串b位串,低位在前B位串,高位在前c帶符號字符(通常-128127)C無符號字符(通常8位)d雙精度浮點(diǎn)數(shù)f單精度浮點(diǎn)數(shù)h十六進(jìn)制數(shù)串,低位在前H十六進(jìn)制數(shù)串,高位在前i帶符號整數(shù)I無符號整數(shù)l帶符號長整數(shù)L無符號長整數(shù)n

32、網(wǎng)絡(luò)序短整數(shù)N網(wǎng)絡(luò)序長整數(shù)p字符串指針s帶符號短整數(shù)S無符號短整數(shù)u轉(zhuǎn)化成uuencode格式vVAX序短整數(shù)VVAX序長整數(shù)x一個(gè)空字節(jié)X回退一個(gè)字節(jié)以空字節(jié)(null)填充函數(shù)名unpack調(diào)用語法list = unpack (packformat, formatstr);解說unpack與pack功能相反,將以機(jī)器格式存貯的值轉(zhuǎn)化成Perl中值的列表。其格式字符與pack基本相同(即上表),不同的有:A格式將機(jī)器格式字符串轉(zhuǎn)化為Perl字符串并去掉尾部所有空格或空字符;x為跳過一個(gè)字節(jié);為跳過一些字節(jié)到指定的位置,如4為跳過4個(gè)字節(jié)。下面看一個(gè)和X合同的例子: $longrightint

33、 = unpack (* X4 L, $packstring);此語句將最后四個(gè)字節(jié)看作無符號長整數(shù)進(jìn)行轉(zhuǎn)化。下面看一個(gè)對uuencode文件解碼的例子:1 : #!/usr/local/bin/perl2 : 3 : open (CODEDFILE, /u/janedoe/codefile) |4 : die (Cant open input file);5 : open (OUTFILE, outfile) |6 : die (Cant open output file);7 : while ($line = ) 8 : $decoded = unpack(u, $line);9 : pr

34、int OUTFILE ($decoded);10: 11: close (OUTFILE);12: close (CODEDFILE); 當(dāng)將pack和unpack用于uuencode時(shí),要記住,雖然它們與UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和末行,如果想用uudecode對由pack的輸出創(chuàng)建的文件進(jìn)行解碼,必須也把首行和末行輸出(詳見UNIX中uuencode幫助)。函數(shù)名vec調(diào)用語法retval = vec (vector, index, bits);解說顧名思義,vec即矢量(vector)函數(shù),它把簡單變量vector的值看作多塊(維)數(shù)據(jù),

35、每塊含一定數(shù)目的位,合起來即一個(gè)矢量數(shù)據(jù)。每次的調(diào)用訪問其中一塊數(shù)據(jù),可以讀取,也可以寫入。參數(shù)index就象數(shù)組下標(biāo)一樣,提出訪問哪一塊,0為第一塊,依次類推,要注意的是訪問次序是從右到左的,即第一塊在最右邊。參數(shù)bits指定每塊中的位數(shù),可以為1,2,4,8,16或32。例子1 : #!/usr/local/bin/perl2 : 3 : $vector = pack (B*, 11010011);4 : $val1 = vec ($vector, 0, 4);5 : $val2 = vec ($vector, 1, 4);6 : print (high-to-low order valu

36、es: $val1 and $val2n);7 : $vector = pack (b*, 11010011);8 : $val1 = vec ($vector, 0, 4);9 : $val2 = vec ($vector, 1, 4);10: print (low-to-high order values: $val1 and $val2n); 結(jié)果high-to-low order values: 3 and 13low-to-high order values: 11 and 12函數(shù)名defined調(diào)用語法retval = defined (expr);解說判斷一個(gè)變量、數(shù)組或數(shù)組的

37、一個(gè)元素是否已經(jīng)被賦值。expr為變量名、數(shù)組名或一個(gè)數(shù)組元素。如果已定義,返回真,否則返回假。函數(shù)名undef調(diào)用語法retval = undef (expr);解說取消變量、數(shù)組或數(shù)組元素甚至子程序的定義,回收其空間。返回值始終為未定義值,此值與空串等效。五、數(shù)組和列表函數(shù)函數(shù)名grep調(diào)用語法foundlist = grep (pattern, searchlist);解說與同名的UNIX查找工具類似,grep函數(shù)在列表中抽取與指定模式匹配的元素,參數(shù)pattern為欲查找的模式,返回值是匹配元素的列表。例子list = (This, is, a, test);foundlist = g

38、rep(/tT/, list);結(jié)果foundlist = (This, test);函數(shù)名splice調(diào)用語法retval = splice (array, slipelements, length, newlist);解說拼接函數(shù)可以向列表(數(shù)組)中間插入元素、刪除子列表或替換子列表。參數(shù)skipelements是拼接前跳過的元素?cái)?shù)目,length是被替換的元素?cái)?shù),newlist是將要拼接進(jìn)來的列表。當(dāng)newlist的長度大于length時(shí),后面的元素自動后移,反之則向前縮進(jìn)。因此,當(dāng)length=0時(shí),就相當(dāng)于向列表中插入元素,而形如語句splice (array, -1, 0, Hel

39、lo);則向數(shù)組末尾添加元素。而當(dāng)newlist為空時(shí)就相當(dāng)于刪除子列表,這時(shí),如果length為空,就從第skipelements個(gè)元素后全部刪除,而刪除最后一個(gè)元素則為:splice (array, -1);這種情況下,返回值為被刪去的元素列表。函數(shù)名shift調(diào)用語法element = shift (arrayvar);解說刪去數(shù)組第一個(gè)元素,剩下元素前移,返回被刪去的元素。不加參數(shù)時(shí),缺省地對ARGV進(jìn)行操作。函數(shù)名unshift調(diào)用語法count = unshift (arrayver, elements);解說作用與shift相反,在數(shù)組arrayvar開頭增加一個(gè)或多個(gè)元素,返回值為結(jié)果(列表)的長度。等價(jià)于splice (array, 0, 0, elements);函數(shù)名push調(diào)用語法push (arrayvar, elements);解說在數(shù)組末尾增加一個(gè)或多個(gè)元素。等價(jià)于slice (array, array, 0, elements);函數(shù)名pop調(diào)用語法element = pop (arrayvar);解

溫馨提示

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

評論

0/150

提交評論