• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

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

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

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

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

    2 直角化方法

    偽矩形的存在,使得地圖表達與實際情況存在差異,直角化時必須保證中點位置不變。目前運用最多的方法是最小二乘法[4],其具有技術(shù)優(yōu)化、方便快捷的優(yōu)點,但只是將平行四邊形簡單直角化,車位位置卻發(fā)生了偏移,不能滿足采集北京地區(qū)停車位的位置和面積信息的要求。經(jīng)過反復(fù)試驗,將條件極值法與最小二乘法相結(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求偏導(dǎo)數(shù)。要使得函數(shù)z=f(x1, x2, x3,…, xn)存在極值,則其對各變量的偏導(dǎo)數(shù)為零。根據(jù)原始陣列和偏導(dǎo)數(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ù)學(xué)模型為陣列式,因此其永遠不能到達設(shè)定值,即紅色長軸與藍色長軸近似重疊,但不重疊;然后,將紅色長軸沿B方向旋轉(zhuǎn)至藍色長軸,使得長軸的方位角無限接近于零,則四邊形的四角將無限接近于90°,由于條件極值的數(shù)學(xué)模型為陣列式,因此其永遠不能到達設(shè)定值,即紅色長軸與藍色長軸近似重疊,但不重疊。兩種方向所得結(jié)果一致,但旋轉(zhuǎn)半徑不同,因此利用數(shù)學(xué)基礎(chǔ),將A方向(即最短距離方向)設(shè)定為旋轉(zhuǎn)長軸。

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

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

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

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

    GIS的二次開發(fā)是面向?qū)ο蟮某绦蛟O(shè)計(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ù)角度值作垂直處理,并設(shè)計界面,代碼為:

    <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)生的四邊形失真或中心位移問題。對于四邊形四邊較小的圖形,其邊長直接影響直角化效果,四邊越接近,直角化效果越明顯。本文設(shè)定的條件極值模型能快速、簡單、精準地進行直角化處理,但目前還不適用于其他多邊形的直角化。四邊形以上的多邊形直角化算法相對復(fù)雜一些,后續(xù)可根據(jù)項目要求繼續(xù)探討。

    猜你喜歡
    化后長軸停車位
    單管立式長軸多級熔鹽泵的研發(fā)及應(yīng)用
    橢圓與兩焦點弦有關(guān)的幾個重要性質(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)登記探析
    长白| 玛曲县| 阜南县| 濮阳市| 勃利县| 平湖市| 乌拉特前旗| 南木林县| 鄂托克旗| 旬邑县| 阳谷县| 汽车| 广昌县| 商水县| 长子县| 靖州| 潞西市| 宿松县| 浦北县| 体育| 电白县| 工布江达县| 白水县| 宁武县| 安岳县| 蓬安县| 陕西省| 柳河县| 铁岭市| 梨树县| 阿拉善盟| 睢宁县| 杭锦后旗| 莱阳市| 双鸭山市| 敖汉旗| 特克斯县| 安多县| 郸城县| 集贤县| 双柏县|