亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于三次參數(shù)樣條的等高線點(diǎn)加密算法

        2015-02-07 07:44:47范磊磊王寶水閆玉強(qiáng)
        地理空間信息 2015年4期
        關(guān)鍵詞:等高線樣條賦值

        劉 旭,范磊磊,王寶水,閆玉強(qiáng)

        (1.徐州市賈汪區(qū)國(guó)土資源局,江蘇 徐州 221011;2.江陰市城市規(guī)劃信息咨詢中心,江蘇 江陰 214433;3.蘇州工業(yè)園區(qū)測(cè)繪地理信息有限公司,江蘇 蘇州 215027)

        基于三次參數(shù)樣條的等高線點(diǎn)加密算法

        劉 旭1,范磊磊1,王寶水2,閆玉強(qiáng)3

        (1.徐州市賈汪區(qū)國(guó)土資源局,江蘇 徐州 221011;2.江陰市城市規(guī)劃信息咨詢中心,江蘇 江陰 214433;3.蘇州工業(yè)園區(qū)測(cè)繪地理信息有限公司,江蘇 蘇州 215027)

        分析了DXF格式結(jié)構(gòu)中各組碼段與對(duì)應(yīng)代碼段的含義及關(guān)系特點(diǎn),實(shí)現(xiàn)DXF文件的讀寫,并根據(jù)提取地形圖中等高線的信息,利用VisualC++編寫三次參數(shù)樣條自動(dòng)實(shí)現(xiàn)對(duì)等高線進(jìn)行點(diǎn)加密算法。通過(guò)實(shí)例驗(yàn)證,該算法可保證等高線原始趨勢(shì)不變,特別是出現(xiàn)大撓度等高線時(shí),對(duì)等高線進(jìn)行點(diǎn)加密,能保證地形圖的準(zhǔn)確性,提高工作效率。

        Visual C++;三次參數(shù)樣條;等高線;點(diǎn)加密

        等高線是一種重要的反映區(qū)域地貌形態(tài)的基礎(chǔ)數(shù)據(jù)[1,2],工程中時(shí)常需要對(duì)等高線進(jìn)行點(diǎn)加密,使其能更為細(xì)致地表示地貌特征[3]。基于VisualC++平臺(tái)對(duì)DXF格式文件進(jìn)行讀寫,根據(jù)等高線上已知的(x,y)信息,利用三次參數(shù)樣條對(duì)等高線上的點(diǎn)進(jìn)行加密,能有很好的效果。

        1 DXF文件及三次參數(shù)樣條差值

        1.1 DXF文件的結(jié)構(gòu)

        從結(jié)構(gòu)上,DXF文件[3]是由一系列的組構(gòu)成的。組作為DXF文件中的最小單元,與一行整數(shù)型組碼及連續(xù)的下一行組值(對(duì)組碼的描述說(shuō)明)構(gòu)成。

        DXF文件由6節(jié)構(gòu)成[4],其中實(shí)體節(jié)包含圖形中所有的實(shí)體(如多段線、點(diǎn)、構(gòu)造線等)信息,如點(diǎn)的高程、坐標(biāo)、所在圖層、顏色等,以組碼2及對(duì)應(yīng)組值ENTITIES標(biāo)志開始。

        等高線是以多段線的方式表現(xiàn)的,在DXF格式文件中多段線以組碼0及對(duì)應(yīng)組值LWPOLYLINE,主要實(shí)體數(shù)據(jù)[4]見表1。

        表1 多段線的實(shí)體數(shù)據(jù)表

        1.2 三次參數(shù)樣條插值

        目前常用的曲線插值方法有拉格朗日插值法、分段低次插值法、張力樣條插值法、樣條插值法等[4]。其中以樣條插值中的三次樣條插值、三次參數(shù)樣條插值最為常用[5]。

        三次樣條插值在曲線小撓度的情況下滿足要求,當(dāng)撓度過(guò)大時(shí),不能很好地控制曲線的彎曲度,樣條曲線與實(shí)際曲線撓度偏差較大,使得曲線失真[6]。

        1.2.1 三次參數(shù)樣條函數(shù)

        三次參數(shù)樣條曲線函數(shù)是以曲線的弦長(zhǎng)li作為參數(shù)的函數(shù),表達(dá)形式一般為:空間曲線上的節(jié)點(diǎn)為pti(xi,yi,zi)(i=0,1,…,n)。若函數(shù)S(x)是該空間曲線的函數(shù),每個(gè)區(qū)間[pti,pti+1],(i=0,1,…,n-1)是三次多項(xiàng)式的形式:

        式中,l?[0,Li]。Li為第i段的弦長(zhǎng):

        且在節(jié)點(diǎn)處滿足連續(xù)性條件:

        由式(1)~(3)可知,共有4n-2個(gè)條件。還需2個(gè)條件,在區(qū)間邊界點(diǎn)pt0和ptn處各增加1個(gè)條件(邊界條件)。常用的邊界條件有3種:夾持端、自由端、拋物端。

        1.2.2 構(gòu)造三次參數(shù)樣條函數(shù)

        可得:

        將式(5)代入式(1),由樣條曲線二階導(dǎo)數(shù)連續(xù)可得:

        其中,

        由上式可得到4n-2個(gè)方程,根據(jù)邊界條件可增加2個(gè)方程,見表2。則式(6)寫為矩陣形式BY'=D:

        表2 三次參數(shù)樣條曲線的邊界條件

        代入式(1),得到曲線方程Si(li)中yi(li)的方程。同理,求得曲線方程Si(li)中的xi(li)及zi(li)。

        2 算法設(shè)計(jì)

        2.1 數(shù)據(jù)格式

        由于等高線在CAD中以多段線的形式體現(xiàn),對(duì)應(yīng)表1,以結(jié)構(gòu)體typedef struct的形式聲明等高線類型。

        等高線上的點(diǎn)(x,y)類型:

        typedef struct{double x; //點(diǎn)的x值 double y; //點(diǎn)的y值} BPoint;

        等高線類型:

        typedef struct{CString layer; //圖層名 int color; //顏色值 int bz; // 0開曲線,1閉曲線

        int ds; //等高線上的點(diǎn)數(shù) double h;//等高線的高程 BPoint *pt; //等高線上的點(diǎn) }Pline;

        定義變量Pline addpl,表示一次讀取的等高線。由于在讀取DXF文件時(shí)等高線的總條數(shù)不可知,在doc類中以動(dòng)態(tài)數(shù)組Carray[7]的形式定義類型為Pline的全局變量CArray<Pline,Pline&>m_Pline,為了便于讀寫加密等函數(shù)對(duì)其賦值修改等。將每次獲取的等高線添加到數(shù)組m_Pline中,m_Pline.Add(addpl)。

        以結(jié)構(gòu)體的形式聲明三次參數(shù)樣條曲線上節(jié)點(diǎn)類型:

        typedef struct{ double l; double y; }SPoint;

        其中,第i條等高線對(duì)應(yīng)參數(shù)樣條曲線上節(jié)點(diǎn)總數(shù)為int ds=m_Pline.GetAt(i).ds。

        定義每條進(jìn)行三次參數(shù)樣條插值曲線的節(jié)點(diǎn)動(dòng)態(tài)數(shù)組Spoint *spl; spl=new Spoint [ds],并根據(jù)對(duì)應(yīng)等高線進(jìn)行賦值。

        2.2 等高線的讀取

        由于在DXF文件中每個(gè)組信息中組碼和組值各占一行,故每次讀取兩行。根據(jù)不同組碼所對(duì)應(yīng)的組值信息不同,可用if…else if…語(yǔ)句對(duì)add_pt中的變量賦值。

        定義CString型變量cs,data,并將讀入的字符串賦值給cs,data。

        組碼定義為int型變量code,并將讀入的第一行賦值給code,data包含組值信息。

        1)等高線對(duì)應(yīng)的多段線是一種實(shí)體,定義開始(結(jié)束)讀取實(shí)體節(jié)的標(biāo)志,并初始化,根據(jù)組結(jié)構(gòu),判斷是否開始(結(jié)束)讀取實(shí)體節(jié)。

        2)進(jìn)入實(shí)體節(jié),定義開始(結(jié)束)讀取多段線的標(biāo)志,并初始化,根據(jù)組結(jié)構(gòu)判斷是否讀取多段線。

        3)定義中間變量,根據(jù)表1多段線的實(shí)體數(shù)據(jù)表中組的對(duì)應(yīng)格式,從data中賦值。

        2.3 構(gòu)造三次參數(shù)樣條函數(shù)矩陣

        定義Pline pl=m_Pline.GetAt(i),獲取第i條等高線的信息??纱_定總點(diǎn)數(shù)int n=pl.ds即B、D矩陣的大小為n×n、n×1。

        三次參數(shù)樣條節(jié)點(diǎn)數(shù)組Spoint *spt=new Spoint[n];將pl.pt賦值給spl。由于多段線上各處高程hi相等,定義變量double L[n-1],U[n],Lmd[n-1],D[n][1]。由式(2)、式(7),對(duì)L、U、Led、D進(jìn)行普通情況下的賦值。

        對(duì)于不同的邊界條件(見表2),λn,μ1,D1,Dn不同,定義變量 int choice,switch…case…語(yǔ)句,確定邊界條件,偽代碼形式見圖1。確定矩陣B及D,然后求得矩陣Y'。

        圖1 選取邊界條件偽代碼圖

        2.4 點(diǎn)自動(dòng)加密算法設(shè)計(jì)

        圖2 自動(dòng)加密點(diǎn)算法流程圖

        2.5 算法實(shí)現(xiàn)

        通過(guò)消息映射的方式,在菜單欄中映射doc類函數(shù):

        void OnReadDxfFile(); //讀取DXF文件

        void OnPointEncryption(); //等高線上點(diǎn)加密

        void OnWriteDxfFile();

        //儲(chǔ)存等高線點(diǎn)加密后DXF文件

        將加密算法封裝到CCubicSpline類中。其中包含:

        class CCubicSpline : public CObject{

        public : void EncryptPline(Pline pl,Pline &newpl); //對(duì)等高線上的點(diǎn)加密

        private: void PraCubSpline(SPoint *spl,int n,SPoint *spt,int ptn); //三次參數(shù)樣條曲線

        double **InvMatrixl(double **A,int n); //高斯列主元消去法求逆矩陣

        double **MulMatrix(double**A,double**B,int m,int n,int k); //矩陣相乘 }

        算法的實(shí)現(xiàn)流程:

        1)讀取DXF格式文件,并將提取的等高線信息賦值給m_Pline。

        2)對(duì)等高線pl上的點(diǎn)進(jìn)行加密。將等高線點(diǎn)賦值給三次參數(shù)樣條節(jié)點(diǎn)并進(jìn)行加密;差值后三次參數(shù)樣條節(jié)點(diǎn)賦值到等高線中,并通過(guò)m_Pline.SetAt(i,pl)賦值到等高線動(dòng)態(tài)數(shù)組中。

        3)以DXF格式寫出文件。

        3 算法驗(yàn)證

        三次樣條曲線在小撓度情況下,效果較好,當(dāng)撓度過(guò)大時(shí),樣條曲線與實(shí)際曲線有很大的偏差。而三次參數(shù)樣條可以很好地解決大撓度問(wèn)題,見圖3。

        圖3 三次樣條與三次參數(shù)樣條對(duì)比圖

        從整體趨勢(shì)分析,三次參數(shù)樣條在3種邊界條件下,邊界條件選取夾持端效果較好。故在對(duì)等高線進(jìn)行點(diǎn)加密時(shí)采用夾持端的方法進(jìn)行加密。加密后的效果見圖4。

        圖4 等高線上點(diǎn)加密效果圖

        4 結(jié) 語(yǔ)

        本文算法在不破壞原始等高線趨勢(shì)的情況下利用三次參數(shù)樣條對(duì)等高線進(jìn)行點(diǎn)加密,生成的等高線有較高的光滑性。較三次樣條插值精度更高,避免了大撓度情況下出現(xiàn)失真情況,能準(zhǔn)確地反映實(shí)地地形特征,大大縮短工作時(shí)間,且該算法程序基于Visual C++編寫,實(shí)現(xiàn)簡(jiǎn)單,可代替?zhèn)鹘y(tǒng)的手工方法。

        [1] 陳丹.地形圖等高線自動(dòng)識(shí)別與提取中的若干方法研究[D].武漢:武漢大學(xué),2004

        [2] 夏春林,王雪,葉長(zhǎng)青.等高線自動(dòng)識(shí)別方法的研究[J].礦山測(cè)量,2007(1):32-34

        [3] 郭慶勝,于江佩,徐崢,等.等高線圖形綜合策略的研究[J].測(cè)繪信息與工程,2005,30(6):16-18

        [4] 劉傳亮,陸建德.AutoCAD DXF文件格式與二次開發(fā)圖形軟件編程[J].微機(jī)發(fā)展,2004,14(9):101-104

        [5] 郭朝勇. AutoCAD R14二次開發(fā)技術(shù)[M].北京:清華大學(xué)出版社,1999

        [6] 李慶揚(yáng),王能超,易大義,等.數(shù)值分析[M].北京:清華大學(xué)出版社,2006

        [7] 陳鳳祥,李汪根.C++動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)與重用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010(2):79-82

        P208

        B

        1672-4623(2015)04-0148-03

        10.3969/j.issn.1672-4623.2015.04.053

        劉旭,工程師,主要從事工程測(cè)量相關(guān)工作。

        2013-09-17。

        猜你喜歡
        等高線樣條賦值
        關(guān)于1 1/2 … 1/n的一類初等對(duì)稱函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        一元五次B樣條擬插值研究
        地形圖的閱讀
        一種基于Fréchet距離的斷裂等高線內(nèi)插算法
        強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
        三次參數(shù)樣條在機(jī)床高速高精加工中的應(yīng)用
        三次樣條和二次刪除相輔助的WASD神經(jīng)網(wǎng)絡(luò)與日本人口預(yù)測(cè)
        軟件(2017年6期)2017-09-23 20:56:27
        基于樣條函數(shù)的高精度電子秤設(shè)計(jì)
        “等高線地形圖的判讀”專題測(cè)試
        地理教育(2016年10期)2016-11-09 00:32:53
        成人女同av在线观看网站| 无码精品人妻一区二区三区影院| 国产精品_国产精品_k频道w| 亚洲日韩欧洲无码av夜夜摸| 久久久久中文字幕精品无码免费| 午夜日本精品一区二区| 日本超级老熟女影音播放| 日日碰日日摸日日澡视频播放| 4399理论片午午伦夜理片| 国产jk在线观看| 国产日韩精品视频一区二区三区| 国产av精品一区二区三区久久 | 激情综合色五月丁香六月欧美| 日本乱人伦在线观看| 国产欧美日韩专区毛茸茸| 日本av一区二区三区四区| 中文字幕 亚洲精品 第1页| 亚洲国产精品成人综合色| 精品少妇一区二区三区视频| 久久精品女人天堂AV一个| 亚洲一区二区三区视频免费| 高清少妇二区三区视频在线观看 | 亚洲av高清不卡免费在线| 色偷偷av一区二区三区| 国产精品第一二三区久久蜜芽| 免费人成视频网站在线| 国产精品三区四区亚洲av| 无码任你躁久久久久久久 | 在线免费观看蜜桃视频| 狠狠躁天天躁无码中文字幕图| 无遮挡呻吟娇喘视频免费播放| 欧美日韩在线视频| 人妻av无码一区二区三区| 人妻无码人妻有码中文字幕| 伊人色综合九久久天天蜜桃| 伊人久久大香线蕉av色婷婷色| 国产男女无遮挡猛进猛出| 国产爆乳乱码女大生Av| 青青草视频在线观看视频免费| 久久精品国产亚洲av久按摩 | 无码国产69精品久久久久孕妇 |