999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面積排序法對批量多邊形凈面積的計算

2012-12-31 00:00:00靳娟麗李乃良
科技資訊 2012年31期

摘 要:在批量多邊形凈面積計算中,按毛面積進行排序,從毛面積最小多邊形開始處理計算,可以高效、準確的計算多邊形的凈面積。

關鍵詞:毛面積 凈面積 面積排序

中圖分類號:P271 文獻標識碼:A 文章編號:1672-3791(2012)11(a)-0033-02

在地籍調查、工程測量等工作中,經常需要批量計算多邊形的凈面積(多邊形毛面積是指本多邊形拐點所圍成的面積;多邊形凈面積是指多邊形的毛面積扣除其內部全部島的凈面積。多邊形內部無島時毛面積和凈面積相等)。如果孤立的隨機的逐個多邊形的凈面積計算,即使采用編程方式進行,編程過程也會變得較為復雜。如圖1,預計算多邊形A的凈面積,首先獲得多邊形A的毛面積,通過搜索可以獲取多邊形A內有3個島,因為不知道每個島的凈面積是否已計算,則需要計算每個島的凈面積,計算每個島的凈面積時還要考慮其內部是否還有島,如此循環、遞歸下去,編程的難度偏大,程序的運行效率也會較低。

1 多邊形毛面積排序法進行凈面積計算的原理

在對多變形面積進行計算前,多邊形是經過拓撲檢查的,即多邊形之間的關系只存在包含、鄰接和相離的關系,不存在多邊形相交或重復的情況。在多邊形凈面積計算前,計算每個多變形的毛面積,按毛面積的大小對多邊形進行排序。在計算多邊形的凈面積時,從面積最小的多邊形開始計算,依次進行。在計算一個多邊形時,搜索其內部的多邊形,讀取每個內部多邊形的凈面積,并求取內部多邊形的凈面積之和,則本多邊形的凈面積為本多邊形毛面積減去其內部多邊形的凈面積之和,然后將本多邊形的凈面積作為本多邊形的屬性,賦值在本多邊形上。采用本方法計算多邊形凈面積時,不用考慮其內部多邊形是否還存在島,只要簡單讀取其內部多邊形的凈面積即可,因為本多邊形內部的多邊形,面積一定比本多邊形要小,所以其一定在本多邊形凈面積計算之前就已經計算了凈面積,直接讀取,無需再計算,即使其內部還用多層嵌套。如圖1中,預計算多邊形C的凈面積,首先計算多邊形C的毛面積,因其內部沒有島,所以其毛面積即為凈面積,作為屬性賦值給其本身;預計算多邊形B的凈面積,首先計算多邊形B的毛面積,因多邊形B的毛面積比多邊形C的毛面積大,所以多邊形C的毛面積必然在多邊形B之前計算,所以直接扣除其內部島多邊形C的凈面積,作為屬性賦值給其本身;預計算多邊形A的凈面積,首先計算多邊形C的毛面積,因多邊形B、C、D的凈面積已經計算,所以直接扣除其內部島多邊形B、C、D的凈面積之和,作為屬性賦值給其本身。

2 多邊形毛面積排序法進行凈面積計算程序設計原理

根據這一原理,采用VB2010和AutoC AD2008設計了多邊形凈面積計算程序,主要步驟如下。

Dim Reg1 As RegAppTable = trans.GetObject(db.RegAppTableId, OpenMode.ForWrite)

Dim App1 As New RegApp TableRecord

If Not Reg1.Has("Area") Then

App1.Name="Area"

Reg1.Add(App1)

trans.AddNewlyCreatedDBObject(App1,True)

End If

Dim Val1 As TypedValue=New TypedValue(DxfCode.Start,"Polyline,Lwpolyline")

Dim Val() As TypedValue={Val1}

Dim Filter1 As New SelectionFilter(Val)

Dim Optsel As New PromptSelectionOptions

Dim Ss1,Ss2 As SelectionSet

Dim Res1 As PromptSelectionResult =Ed.GetSelection(Optsel,Filter1)

If Res1.Status<>PromptStatus.OK Then

Exit Sub

End If

Ss1=Res1.Value

Dim I As Long

Poly2d=CType(trans.GetObject(PolyId1.Item(I),OpenMode.ForRead), Polyline2d)

Len1=Poly2d.Length

Catch

End Try

Try

Poly=CType(trans.GetObject(PolyId1.Item(I),OpenMode.ForRead), Polyline)

Len1=Poly.Length

Catch

End Try

Try

Cur1=CType(trans.GetObject(PolyId1.Item(I),OpenMode.ForWrite),Curve)

Catch

End Try

Area1=Cur1.Area

PtC1=SubFun.Ptc3DOfCollection(PolyId1.Item(I))

Pt1=Cur1.GeometricExtents.MinPoint

Pt2=Cur1.GeometricExtents.MaxPoint

Pt1=New Point3d(Pt1.X-1,Pt1.Y-1,0)

Pt2=New Point3d(Pt2.X+1,Pt2.Y+1,0)

Tools.ZoomWindow(Pt1,Pt2)

Res2=Ed.SelectWindowPolygon(PtC1,Filter1)

If Res2.Status<>PromptStatus.OK Then

GoTo Skip1

End If

Ss2=Res2.Value

For J=0 To Ss2.Count-1

Area3=0

If Ss2.Item(J).ObjectId=PolyId1.Item(I) Then

Area2=Area2+Area3

Next

Area1=Area1-Area2

Dim DxfArea As New ResultBuffer

DxfArea.Add(New TypedValue(CInt(1001),"Area"))

DxfArea.Add(New TypedValue(CInt(1040),Area1))

Cur1.XData=DxfArea

3 多邊形毛面積排序法進行凈面積計算的示例

如圖1所示,采用多邊形毛面積排序法進行凈面積計算的結果如表1。

4 結語

多邊形毛面積排序法進行凈面積計算,從面積最小的多邊形開始進行,所以多邊形內部島的凈面積計算一定在本多邊形之前進行,所以在計算本多邊形時就無需考慮島的凈面積計算,而直接讀取所有島的凈面積即可,免去了原本復雜的循環、遞歸運算,使得程序的原理簡單,設計方便,運行高效。

參考文獻

[1](美)Bill Evjen,Rockford Lhotka,Billy Hollis等,著. Visual Basic2005高級編程[M].楊浩,吳雷譯.北京:清華大學出版社,2006.

[2] (美)David F,Rogers,著.計算機圖形學的算法基礎[M].北京:機械工業出版社,2002.

[3]曾洪飛,張帆,盧擇臨.AutoCAD VBA &VB.NET開發基礎教程與實例[M].北京:中國電力出版社,2008.

主站蜘蛛池模板: 亚洲中文精品人人永久免费| 少妇精品在线| 亚洲国产AV无码综合原创| 免费国产在线精品一区| 日韩欧美91| www.精品国产| 欧美h在线观看| 精品国产电影久久九九| 天堂在线视频精品| 中文精品久久久久国产网址| 亚洲国产成熟视频在线多多 | 国产福利拍拍拍| 色噜噜综合网| 在线va视频| 亚洲综合精品香蕉久久网| 免费jizz在线播放| 永久天堂网Av| 国产欧美日韩91| 国产精品一区二区无码免费看片| 波多野结衣久久高清免费| 国产成人无码AV在线播放动漫| 亚洲全网成人资源在线观看| 人人看人人鲁狠狠高清| 中文字幕精品一区二区三区视频| 无码内射中文字幕岛国片 | 99青青青精品视频在线| 精品人妻一区二区三区蜜桃AⅤ| 欧美a在线视频| 色成人综合| 在线日韩一区二区| 91高清在线视频| 国产xx在线观看| 永久免费AⅤ无码网站在线观看| 久久久久青草线综合超碰| 国产成人亚洲无吗淙合青草| 一区二区无码在线视频| 亚洲视频欧美不卡| 又污又黄又无遮挡网站| 免费在线a视频| 日本精品αv中文字幕| 成年av福利永久免费观看| 91精品专区| 成人无码一区二区三区视频在线观看| 人妻出轨无码中文一区二区| 国产SUV精品一区二区| 综合色婷婷| 国产va欧美va在线观看| 一级毛片在线直接观看| 极品国产一区二区三区| AV无码国产在线看岛国岛| 一级毛片免费不卡在线| 99精品视频在线观看免费播放 | 国产精品网拍在线| 国产91丝袜| 中文字幕欧美日韩高清| 久久精品91麻豆| 免费网站成人亚洲| 国产成人亚洲精品色欲AV| 久久精品嫩草研究院| 久久免费精品琪琪| 国产丝袜啪啪| 国产尹人香蕉综合在线电影| 色噜噜久久| 日韩精品亚洲精品第一页| 中文字幕在线观看日本| 青青草原国产一区二区| 国产精品va| 无码免费视频| 五月天综合网亚洲综合天堂网| 国产乱人伦偷精品视频AAA| 亚洲香蕉伊综合在人在线| 无码高清专区| 91精品网站| 国产日韩欧美中文| 亚洲中文字幕无码mv| 日本一区二区三区精品视频| 国产激爽大片高清在线观看| 国产哺乳奶水91在线播放| 手机精品福利在线观看| 国产成人高清亚洲一区久久| 欧美成人午夜视频| 婷婷综合在线观看丁香|