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

        ?

        基于條件極值的四邊形直角化方法研究

        2018-11-23 07:35:52馬鵬剛王永紅周群強趙寶軍張鵬巖
        地理空間信息 2018年11期
        關鍵詞:化后長軸停車位

        馬鵬剛,王永紅,周群強,趙寶軍,張鵬巖

        (1.國家測繪地理信息局第二地形測量隊,陜西 西安 710054;2.河南大學 環(huán)境與規(guī)劃學院,河南 開封 475004)

        數(shù)字地形圖是“數(shù)字城市”、“數(shù)字地球”的重要組成部分,在城市建設和規(guī)劃中起著重要作用。在大比例尺地形圖(1∶500、1∶1 000、1∶2 000)中,特定地物、建筑物、停車位、院落等均為重要要素,其屬性的準確性直接影響用戶的使用情況。航空攝影測量時,由于地形條件、投影變換、采集誤差等因素,使得本來為矩形的地物要素變?yōu)橐话愕乃倪呅?,導致地圖失真,為了能準確反映地物要素的實際情況,需要將四邊形修正為矩形。然而,單純?nèi)斯ば拚男屎蜏蚀_度都很低,因此本文采用條件極值法,以北京地區(qū)停車位信息采集為例,利用GIS的二次開發(fā)技術編寫了自動直角化軟件。首先提取四邊形的中點,以平行于長邊的平行線為中線;再將四邊形旋轉(zhuǎn),相鄰兩邊互相垂直,中點不變,使其保持原來的中心位置。

        1 四邊形的產(chǎn)生和表現(xiàn)形式

        一般情況下,野外測量或內(nèi)業(yè)采集時得到的圖形為矩形,但在進行預處理時,由于測量誤差、投影轉(zhuǎn)換、加密控制等因素,將導致矢量圖形發(fā)生變形,甚至位移,使得矩形變成平行四邊形[1-3],如圖1所示。

        圖1 四邊形產(chǎn)生的原因與表現(xiàn)形式

        2 直角化方法

        偽矩形的存在,使得地圖表達與實際情況存在差異,直角化時必須保證中點位置不變。目前運用最多的方法是最小二乘法[4],其具有技術優(yōu)化、方便快捷的優(yōu)點,但只是將平行四邊形簡單直角化,車位位置卻發(fā)生了偏移,不能滿足采集北京地區(qū)停車位的位置和面積信息的要求。經(jīng)過反復試驗,將條件極值法與最小二乘法相結(jié)合,利用GIS的二次開發(fā)功能,以編程的形式開發(fā)了直角化軟件。該方法確保了圖形中點固定不變,長邊中點以一定的角度旋轉(zhuǎn),直至四邊相互垂直。

        2.1 條件極值模型

        在約束條件下,函數(shù)z=f(x1, x2, x3, …, xn)的陣列數(shù)為[4-5]:

        令 F(x1, x2, x3, …, xn)=f(x1, x2, x3, ..., xm)+∑∮iβi(x1,x2, x3,…, xn)k∈n, ∮i∈m,分別對 x1, x2, x3, …, xn求偏導數(shù)。要使得函數(shù)z=f(x1, x2, x3,…, xn)存在極值,則其對各變量的偏導數(shù)為零。根據(jù)原始陣列和偏導數(shù)方程可求出z=f(x1, x2, x3, …, xn)極值時的x1, x2, x3, …, xn和∮1,∮2, …,∮m。

        2.2 基于條件極值的中點固定模型

        進行四邊形直角化時,要確保其幾何中心不變,反將其中線圍繞中點進行旋轉(zhuǎn)。這種算法類似一種近似值,即直角化后矩形的四角無限接近于90°,但不為90°,如圖2a所示。首先,將原來的四邊形(紅色邊線)沿長軸以A方向旋轉(zhuǎn)[5-7],使得長軸的方位角無限接近于零,則四邊形的四角將無限接近于90°,由于條件極值的數(shù)學模型為陣列式,因此其永遠不能到達設定值,即紅色長軸與藍色長軸近似重疊,但不重疊;然后,將紅色長軸沿B方向旋轉(zhuǎn)至藍色長軸,使得長軸的方位角無限接近于零,則四邊形的四角將無限接近于90°,由于條件極值的數(shù)學模型為陣列式,因此其永遠不能到達設定值,即紅色長軸與藍色長軸近似重疊,但不重疊。兩種方向所得結(jié)果一致,但旋轉(zhuǎn)半徑不同,因此利用數(shù)學基礎,將A方向(即最短距離方向)設定為旋轉(zhuǎn)長軸。

        圖2 旋轉(zhuǎn)順序與成果

        對四邊形(紅色)進行直角化后,其相鄰兩邊相互垂直,則直角對應的限制條件為:

        當四邊形存在非直角以及兩個長軸沒有重合時,進行旋轉(zhuǎn)處理,將式(1)進行線性化處理可得到四角直角化后的參數(shù)。

        2.3 基于GIS的程序?qū)崿F(xiàn)過程

        GIS的二次開發(fā)是面向?qū)ο蟮某绦蛟O計(OPP),本文以前期作業(yè)區(qū)北京地區(qū)停車位信息采集矢量數(shù)據(jù)(.mdb)為例,基于GIS的ArcObject,以Microsoft Visual Studio 2010為開發(fā)環(huán)境,以Visual Basic為開發(fā)語言進行程序開發(fā)。對象(Object)為停車位,類(Class)為四邊形,繼承(Inher)為可不旋轉(zhuǎn)圖形。

        圖3 四邊形直角化實現(xiàn)過程

        1)將四邊形的坐標按順時針方向排序,以中點為基點,四角分別為A、B、C、D,如圖3所示。

        2)為了避免單純旋轉(zhuǎn)得到如圖2b所示的結(jié)果,即只進行旋轉(zhuǎn),而未進行垂直處理,需計算a角的度數(shù),并將其與90°作減法,再按照得出的角度進行有目的的旋轉(zhuǎn),代碼為:

        //Console.WriteLine("Stand:{0},L1:{1},L2:{2},L3:{3},L4:{4},LS-L1:{5},LS-L2:{6},LS-L3:{7},LS-L4:{8}", lStand.Angle, l1.Angle, l2.Angle, l3.Angle, l4.Angle,

        //lStand.Angle-l1.Angle, lStand.Angle-l2.Angle,lStand.Angle-l3.Angle, lStand.Angle-l4.Angle);

        double AngleDiff1= Math.Abs(lStand.Angle-l1.Angle);

        double AngleDiff2= Math.Abs(lStand.Angle-l2.Angle);

        double AngleDiff3= Math.Abs(lStand.Angle-l3.Angle);

        double AngleDiff4= Math.Abs(lStand.Angle-l4.Angle);

        double ad1= Math.Min(AngleDiff1, AngleDiff3);

        double ad2= Math.Min(AngleDiff2, AngleDiff4);

        ‘和軸線平行

        double ParallelLineLength= 0;

        ‘和軸線垂直

        double VerticalLine= 0;

        if (ad1 < ad2)//1-2 或 3-4

        {

        ParallelLineLength= (l1.Length + l3.Length) / 2;

        VerticalLine= (l2.Length + l4.Length) / 2;

        else//2-3或4-1

        {ParallelLineLength= (l2.Length + l4.Length) / 2;

        VerticalLine= (l1.Length + l3.Length) / 2;}

        double Angle= lStand.Angle;

        double HalfPi= Math.PI / 2;

        PointClass cp= new PointClass();

        ‘沿軸線前進一半

        cp.ConstructAngleDistance(pi.Centroid, Angle,ParallelLineLength / 2);

        PointClass cp1= new PointClass();

        PointClass cp2= new PointClass();

        PointClass cp3= new PointClass();

        PointClass cp4= new PointClass();

        Angle += HalfPi;

        cp1.ConstructAngleDistance(cp, Angle, VerticalLine / 2);

        Angle += HalfPi;

        cp2.ConstructAngleDistance(cp1, Angle, ParallelLineLength);

        Angle += HalfPi;

        cp3.ConstructAngleDistance(cp2, Angle, VerticalLine);

        Angle += HalfPi;

        cp4.ConstructAngleDistance(cp3, Angle, ParallelLineLength);

        /Console.WriteLine("({0},{1})({2},{3})({4},{5})({6},{7})", cp1.X,cp1.Y,cp2.X,cp2.Y,cp3.X,cp3.Y,cp4.X,cp4.Y);

        ‘找到每組中心點距離最大的兩個點連成直線

        ‘考慮只有一個圖形的極端情況

        List<ParallelogramInfo> lstGroupParallelogramInfo=new List<ParallelogramInfo>();

        List<int> lstOID= new List<int>();

        do

        {

        ‘由于存在跳躍,每次都全部遍歷

        for (int i= 0; i < lstParallelogramInfo.Count; i++)

        {

        ParallelogramInfo pi= lstParallelogramInfo[i];

        if (lstOID.Contains(pi.OID))

        continue;

        Console.WriteLine(string.Format("{0}/{1}", lstOID.Count, lstParallelogramInfo.Count));

        ‘只有一個的情況

        if (lstGroupParallelogramInfo.Count== 1)

        ‘找到每組中心點距離最大的兩個點連成直線

        ‘考慮只有一個圖形的極端情況

        // List<ParallelogramInfo> lstGroupParallelogramInfo= new List<ParallelogramInfo>();

        // List<int> lstOID= new List<int>();

        ‘由于存在跳躍,每次都全部遍歷

        / for (int i= 0; i < lstParallelogramInfo.Count; i++)

        3)將原始四邊形的中點與旋轉(zhuǎn)后的四邊形(此時由于還未作垂直處理,不能稱其為矩形)定位重合。

        4)已計算得到a角的值,根據(jù)角度值作垂直處理,并設計界面,代碼為:

        <Window x:Class="Revise2Rect.FrmMain"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="圖形校正" Height="800" Width="800" Wi ndowStartupLocation="CenterScreen" Icon="default.ico"Closing="Window_Closing">

        <Window.Background>

        <LinearGradientBrush EndPoint="1,1"StartPoint="0,0">

        <GradientStop Color="LightBlue" Offset="0" />

        <GradientStop Color="LightGreen" Offset="0.5" />

        <GradientStop Color="#FFBE5A5A" Offset="1" />

        </LinearGradientBrush>

        </Window.Background>

        輸出結(jié)果如圖4所示。

        圖4 輸出結(jié)果

        3 結(jié) 語

        實驗證明,本文所提出的方法對于四邊形(多邊形還未實現(xiàn))進行直角化的效果明顯,最終成果已無限接近矩形,避免了部分軟件直角化時產(chǎn)生的四邊形失真或中心位移問題。對于四邊形四邊較小的圖形,其邊長直接影響直角化效果,四邊越接近,直角化效果越明顯。本文設定的條件極值模型能快速、簡單、精準地進行直角化處理,但目前還不適用于其他多邊形的直角化。四邊形以上的多邊形直角化算法相對復雜一些,后續(xù)可根據(jù)項目要求繼續(xù)探討。

        猜你喜歡
        化后長軸停車位
        單管立式長軸多級熔鹽泵的研發(fā)及應用
        橢圓與兩焦點弦有關的幾個重要性質(zhì)及其推論
        好味知時節(jié)
        特殊的春運
        南方周末(2021-01-28)2021-01-28 11:18:06
        溫度對精煉渣碳酸化效果影響分析
        蹲守停車位
        英語文摘(2020年7期)2020-09-21 03:40:56
        2013年山東卷(理)壓軸題的推廣
        車位上的數(shù)
        P92鋼奧氏體化后的冷卻方式對650℃時效組織及硬度穩(wěn)定性的影響
        材料工程(2019年1期)2019-01-16 07:00:44
        地下停車位不動產(chǎn)登記探析
        白嫩人妻少妇偷人精品| 亚洲中文字幕精品久久久久久直播| 丰满少妇一区二区三区专区| 99久久婷婷国产一区| 蜜桃日本免费观看mv| 精品欧美乱码久久久久久1区2区| 伊人狠狠色j香婷婷综合| 在线看亚洲一区二区三区| 欧美大胆性生话| 亚洲精品网站在线观看你懂的| 99精品久久久中文字幕| 亚洲女同精品一区二区久久| 大地资源网在线观看免费官网 | 中文字幕亚洲视频一区| 熟女少妇av一区二区三区 | 久久精品国产亚洲av无码娇色| 人人妻人人添人人爽日韩欧美| 国产精品天干天干在线观蜜臀| 三级日本理论在线观看| 特级精品毛片免费观看| 亚洲欧美日韩一区在线观看| 婷婷成人亚洲综合国产| 狠色人妻丝袜中文字幕| 国产真实乱对白精彩| 免费一区啪啪视频| 亚洲一区二区三区厕所偷拍| 亚洲中国精品精华液| 欧美日韩视频无码一区二区三| 久久久久成人精品免费播放网站| 亚洲国产精品日韩av专区| 日韩国产精品无码一区二区三区| 国产成人精品无码播放| 亚洲av国产大片在线观看| 国产一区二区三区在线观看第八页| 狠狠色狠狠色综合| 久精品国产欧美亚洲色aⅴ大片| 中文字幕丰满人妻被公强| 射精区-区区三区| 精品国产v无码大片在线观看| 一区二区av日韩免费| av影片在线免费观看|