專利名稱::一種點面疊加分析方法
技術領域:
:本發明涉及應用于地理信息系統中的空間疊加分析算法,特別地,本發明涉及到一種點面疊加分析方法。
背景技術:
:地理信息系統(GIS)是一種特定的十分重要的空間信息系統。它是在計算機硬、軟件系統支持下,對整個或部分地球表層(包括大氣層)空間中的有關地理分布數據進行采集、儲存、管理、運算、分析、顯示和描述的技術系統。地理信息系統的核心是處理空間地理^t據,包括點面疊加、線面疊加和面面疊加,本發明主要涉及點面疊加分才斤。點面疊加分析就是判斷點與多邊形的位置關系,這是計算幾何的基本問題。很多專家學者在點與多邊形關系的判斷上做了深入的研究,并提出了許多可行的方法,如角度法,射線法等。但是,對于大數據量的點,這些方法并沒有給出可行的方案。對于大量點與多邊形關系的判斷,按照目前的方法,只能一次計算得到一個點與多邊形的關系;有多少個點,就需要計算多少次。而大數據量的點裁剪、點面求交和點面之差在GIS中是基礎的算法,不但涉及到點面疊加,甚至線面、面面疊加也要用到若干個點與一個或者多個多邊形內外關系的判斷。而角度法和射線法都是一次只能得到一個交點與面的關系,當數據量大時,這種暴力算法計算效率差的問題就更加突出。另一方面,掃描線算法是經典的輸出線段交點的算法。此算法是由Bentley和Ottmann提出的,其最原始的目的是對給定一系列線段,求出所有這些線段的交點并輸出。其輸入是一系列線段,輸出是這些線段之間的交點
發明內容間的交點,對大數據量點與多邊形關系進行判斷,從而提供一種具有高計算效率的點面疊加分析方法。為實現上述發明目的,本發明提供的點面疊加分析方法,包括如下步驟1)每次取一個多邊形,對該多邊形的方向進行初始化,將每個多邊形分解為一組具有方向的多邊形邊;這里,面的幾何意義就是多邊形,多邊形包含一個外環以及零個、一個或者多個內環;2)對于每個分析點,分別構造以該分析點為起點的豎直輔助線,所述輔助線終點位于所述多邊形的外包以外;3)利用掃描線算法,對所有輔助線和該多邊形的所有邊進行掃描,得到每條輔助線與所述多邊形的第一個交點;4)對于每條輔助線,分析該輔助線所對應的分析點和與該輔助線產生第一個交點的多邊形邊的位置關系,得出所述輔助線所對應的分析點與所述多邊形的位置關系。上述技術方案中,所述步驟l)中,將順時針方向初始化為所述多邊形的正方向,多邊形的外環為順時針方向,內環為逆時針方向。上述技術方案中,所述步驟2)中,首先通過所述多邊形的外包過濾,排除位于所述多邊形外包以外的點,將剩余的點作為分析點。上述技術方案中,所述多邊形的外包是矩形外包。上述技術方案中,所述步驟2)中,構造所述輔助線的方向為豎直向上;所述步驟3)中,所述掃描線算法的掃描方向為從下至上。上述技術方案中,所述步驟4)中,當所述輔助線與一條多邊形邊過同一交點且二者為相交關系時,若與所述輔助線相應的分析點在多邊形邊的左側,則判斷該分析點在多邊形的外部;若分析點在多邊形邊的右側,則判斷該分析點在多邊形的內部。上述技術方案中,所述步驟4)中,當所述輔助線與一條多邊形邊過同一交點且二者為接觸關系或重疊關系時,則判斷與所述輔助線相應的分析點在多邊形的邊界上。上述技術方案中,所述步驟4)中,當所述輔助線與兩條多邊形邊過同一交點,且所述輔助線與兩條多邊形邊都是接觸關系時,如果所述輔助線對應分析點正好是交點,則分析點在多邊形的邊界上。上述技術方案中,所述步驟4)中,當所述輔助線與兩條多邊形邊過同一交點,且所述輔助線與兩條多邊形邊都是接觸關系時,如果所述輔助線對應分析點不是交點,則對兩條多邊形邊的局部方向進行判斷,如果兩條多邊形邊的局部方向是順時針方向,當所述分析點相對于兩條多邊形邊均在右側時,則判斷分析點位于所述多邊形的內部,當所述分析點相對于兩條多邊形邊不是均在右側時,則判斷分析點位于所述多邊形的外部;如果兩條多邊形邊的局部方向是逆時針方向,當所述分析點相對于兩條多邊形邊均在左側時,則判斷分析點位于所述多邊形的外部,當所述分析點相對于兩條多邊形邊不是均在左側時,則判斷分析點位于所述多邊形的內部。上述技術方案中,所述步驟4)中,當所述輔助線與兩條多邊形邊過同一交點,且所述輔助線與其中一條多邊形邊是重疊關系,而與另一條多邊形邊是接觸關系時,則對輔助線與相接觸的多邊形進行分析,若與所述輔助線相應的分析點在所述相接觸的多邊形邊的左側,則判斷該分析點在多邊形的外部;若分析點在所述相接觸的多邊形邊的右側,則判斷該分析點在多邊形的內部。上述技術方案中,所述步驟4)中,在掃描過程中同步判斷步驟3)中得到的過交點的輔助線所對應分析點與所述多邊形的點面關系。本發明解決GIS空間疊加分析中的基礎算法問題大數據量點與多邊形關系的判斷。應用掃描線算法解決了各種特殊類型的交點處理,并且對多邊形一次初始化就能得到所有交點與多邊形的關系。該發明充分分析并巧妙利用掃描線算法的掃描順序,對于任何一條輔助線,只要掃描到第一個交點,即可得到此線對應的點在多邊形內還是在多邊形外。根據掃描線算法的性質,對任意一條豎直向上的輔助線而言,第一個被掃描到的交點必然是沿著輔助線的起點(也就是分析點)到終點方向的第一個交點。這個交點到起點之間沒有任何其他的交點,因此可以根據輔助線的起點也就是分析點與過當前交點的多邊形的邊的關系判斷得到分析點與多邊形的位置關系。因而本發明能夠減少運算量,大大提高點面疊加的運算速度。以下,結合附圖來詳細說明本發明的實施例,其中圖1是過同一點的線段分布的所有可能的分類示意2是點面疊加實現步驟示意圖圖3是點與多邊形兩鄰接邊關系判斷示意圖圖4是多邊形邊內外側點與多邊形內外點示意圖圖5是經過交點的線段順序反置時,產生新的鄰接線段對的示意圖圖6是有序線段束示意圖圖7是經過交點的線段在過交點后線段順序改變示意圖圖8是新插入線段時,線段間的鄰接關系發生改變示意圖具體實施例方式點與多邊形的位置關系包括點在多邊形內,點在多邊形外和點在多邊形邊界上三種情況。本發明的點面疊加分析是基于相關聯的過同一點的線段簇的處理,通過這一處理就可以判斷出點與多邊形的位置關系屬于上述三種情況中的哪一種。下面結合附圖和實施例對本發明作進一步地描述。實施例1本實施例是得到若干點與一個多邊形內外關系的算法,每次取得一個多邊形,然后判斷這些點與當前多邊形的關系。對于多個多邊形的情形,可以利用多邊形外包進行過濾,得到當前多邊形外包內仍然沒有歸屬的點作為分析點。本實施例中,外包選取包含多邊形所有頂點的最小矩形。判斷一個點是否在外包內僅僅比較其坐標值的大小即可,從計算機計算的角度而言,外包過濾僅4叉是數值的大小比較,而不是復雜的乘除運算,因此外包過濾是非常快的。所以一般的步驟是對每個多邊形先用外包過濾(這個速度很快的),然后對這些在外包內的點計算點與多邊形的關系。所以多個點與多個多邊形的關系轉化為多個點與單個多邊形的關系的判斷。本發明的基本的操作即若干點與一個多邊形的關系判斷,遵循以下步驟1、對每個分析點,均構造一條輔助線(如圖2所示)。該輔助線以分析點為起點,豎直向上,直到恰好跨過此多邊形外包的邊界。并且,該輔助線段結構中存儲一個指向分析點的指針,以標記此輔助線對應哪個分析點。對多邊形,以順時針方向將其分解為一組具有起點和終點的多邊形邊。如果在點面疊加計算中,一個面不僅具有外環還具有內環(也就是洞),則內環方向是逆時針,外環方向是順時針。即將順時針方向初始化為所述多邊形的正方向。2、依次把所述輔助線以及多邊形的邊插入到基于掃描線算法的線段處理模塊中。本步驟中,所述基于掃描線算法的線段處理模塊每次掃描到一個事件點(在掃描線算法中,事件點包括線段的起點、終點和各線段的交點)時刪除終止于此點的線段,把開始于此點的線段加到當前激活線段集合中,把經過此點的線段的順序反置。本步驟中,還需要把所有經過該事件點的線段(包括終止于此點、經過此點以及始于此點的線段)輸出,以便在步驟3中進行進一步地處理。在具體實現中,多邊形的邊與所述輔助線可以用不同的顏色屬性或其它標記進行區分。通常地,掃描線算法的掃描方向都是從左至右,從下至上,本實施例中之所以由下向上構造輔助線,就是為了和掃描方向相配合。如果掃描線算法中采用從上至下的掃描方式,則構造輔助線也應該采用從上至下的方式,即從分析點起豎直向下作輔助線。下面介紹本步驟中具體的線段處理方法基于掃描線算法計算線段交點,其輸入信息是一系列的線段,在線面疊加中包含線和多邊形上的線段,輸出信息是這些線段的交點。本發明對掃描線算法做了改進,得到了過同一點的所有線段。首先,接收線段,得到事件點結構;然后,從事件點結構中取得最小的事件點,對與此點關聯線段進行處理,并把該線段存入臨時線段集合,更新事件點結構;最后,當事件點結構為空時,輸出交點集合和臨時線段集合。在圖1中,對掃描線算法流程做了相應的說明。該算法具體包括以下步驟a、做初始化操作,在初始化操作過程中,用所有輸入線段的端點初始化事件點結構Q,并對初始化后的事件點結構Q根據端點的坐標做排序;初始化當前激活線段束R為空集合;設定當前所有線段有序集合為S;設定當前輸出交點集合I為空集合。掃描線算法的基本思想是釆用一條虛擬的豎直直線(即掃描線)從左到右順次掃描所有線段,直到結束。在這一掃描過程中,與掃描線相交的線段為所述的當前激活線段。所述的當前所有線段有序集合是指從輸入的幾何要素讀取得到的線段,例如,對于任一多邊形,把多邊形的組成線段插入到此集合中去,當所有線段讀取結束后,要按照線段的左端點(對豎直線則是其下端點)按照從左到右、從下到上的順序進行排序。b、判斷Q是否是空,如果是空集合,則計算結束,I即為計算而得的交點的集合;否則循環以下操作(步驟c至步驟g)直至Q是空集合。c、從Q中取得坐標值最小的事件點p,并將其從Q中刪除。這里的最小,首先是看其^f黃坐標,即X值,X值小的即靠左的排在前邊。對于X坐標相同的,再看其Y值,Y值小的即靠下的排在前邊。d、查找R中以p為終點的線段,把該線段存取到臨時線段集合segs中后,在R中依次刪除上述線段;在刪除過程中,R中的線段順序會發生改變,當被刪除線段只有一個或者沒有相鄰線段時,直接執行步驟e;當被刪除線段有兩條相鄰線段時,這兩條相鄰線段由不相鄰轉變成相鄰,計算這新的兩條相鄰線段是否存在交點。如存在交點,則將該交點添加到Q中,然后執行步驟e;如不存在交點,則直接執行步驟e。在本步驟中,R中的線段順序是一個臨時的位置關系,是與當前的事件點相關的。在當前事件點處,做一條豎直線,則按照與此線的交點的上下關系來維持當前線段束的順序。如圖6:可以得到其順序。整個線段束的有序性并不是到一個事件點去計算的,而是始終維持這樣一個順序,其保證措施即I插入一條線段時,給這條線段找到一個合適的位置。II刪除一條線段時,刪除之即可。III當事件點在一個交點位置時,要對過當前點的線段的順序反置,如圖7:在交點左側,其順序從下而上是A,B,C;而到了交點的右側,其順序是CBA。本步驟中,所述的兩線段相鄰即在當前事件點處,做一條豎直的直線,這條直線必然與兩線段都相交。若兩交點之間沒有其他的交點,則兩線段相鄰。如圖8:左側位置時,兩線段是相鄰的。但是在右側的虛線位置,兩線又不是相鄰的,從相鄰到不相鄰的變化是發生在如圖8所示的點,在這個事件點時,把線段插入進去,從而導致了順序的改變。e、查找R中經過事件點p的線段,把查找到的線段存取到臨時線段集合segs中,此時的事件點p為正常相交的交點,輸出交點到I;輸出交點的過程是原始的掃描線算法中的關鍵步驟,而在本發明的實現中,并不需要輸出交點到I。將所查找到的線段的順序反置。當R的順序發生變化后,將會出現新的由不相鄰轉變成相鄰的線段,計算新的相鄰線段是否存在交點。如存在交點,則將該交點添加到Q中,然后執行步驟f;如不存在交點,則直接執行步驟f。本步驟中,過同一個交點的線段可能有兩條或者兩條以上,此時最上端與最下端的線段會出現新的相鄰線段。如圖5所示,如果有兩條以上線段的話,除了最頂端和最底端的兩線段,中間的線^歐的相鄰線段都沒有發生變化。當把這些線段的順序反置時,會出現新的相鄰線段的即最頂端與最底端的線段。所謂的反置即按照完全相反的順序排列,若線段由下而上的序號是1、2、3、4、5……N-1、N,則反置后其順序為N,N-1,……,3,2,1.如圖5所示,在交點左側時,其順序是DABCE,到了交點右側時,其順序是DCBAE。ABC的順序反置了,其余的順序維持不變。作為中間的線段的B的鄰接線段沒有變化,仍然是AC。而對于頂端的C和底端的A,其鄰接線段發生了變化,A有了新的鄰接E,因此需要對AE進行計算,從而得到一個交點。同理,需要對CD進4亍計算,只是它們沒有交點而已。f、從S中選取從點p起始的線段,在S中刪除,加入到R中,把所選取的線段加入到segs中去,新插入的線,殳會導致R中線段順序的變化,計算新插入的線段與其相鄰線段間是否存在交點。如存在交點,則將該交點添加到Q中,然后執行步驟g;如不存在交點,則直接執行步驟g。g、segs中的所有線^a就是過當前交點的線段,包括起點、終點在當前交點以及經過當前交點的線段。本發明中,需要輸出當前交點及過當前交點的線段,然后對這些過同一點的線段進行計算,即可得到線段關聯的點與多邊形的位置關系。3、單獨對每條輔助線進行分析,根據該輔助線和與之過同一點的多邊形邊的關系,得出相應分析點與多邊形的位置關系。本步驟得主要思路是對過當前事件點的輔助線與多邊形的邊進行計算。因為輔助線上從起點開始到當前的事件點之間并沒有任何其他交點,因此通過起始點與多邊形的一條或者兩條邊的局部位置關系可以得到分析點與多邊形的位置關系。之后,對當前交點對應的輔助線段設置訪問標記,意即此輔助線對應的分析點與多邊形的關系已經得到,以后再掃描到此輔助線無需再進行判斷。這樣是為了掃描線算法接口的統一,即每次把過當前點的線段暴露出來允許用戶對這些線段進行處理但不允許用戶深入到線段處理接口的內部去刪除這些線段。若單獨實現點面疊加,當掃描到一個交點肘,即可得到當前輔助線段對應點與多邊形的關系,則可以直接把此輔助線段從掃描線結構中刪除,這樣可以提高計算速度。根據掃描線算法的特點,掃描到事件點的順序是從左往右,從下往上的,掃描到的第一個交點必然是此輔助線與多邊形所有交點自下而上的第一個交點,因此根據輔助線的起點也就是分析點與過交點的多邊形邊的位置關系即可得到分析點與多邊形的位置關系。另外,步驟2中掃描到的交點可能同時輸出多條輔助線,這是由于有多個分析點具有相同的橫坐標,這樣輔助線可能部分重合。此時將所述各條輔助線分開處理,依次選取一條輔助線,對該輔助線和過當前交點的多邊形邊進行分析。下面詳細描述輔助線與多邊形邊的位置關系分類以及相應的處理方法。因為只針對一個多邊形,所以正常條件下,過同一交點的多邊形的邊至多有兩條,因此可以根據過同一交點的多邊形邊的條數進行分類。通過分析構造的輔助線的特點,每個點只構造一條輔助線,并且任意兩條輔助線都不相關,對構造的輔助線段標記為red,對多邊形的線段標記為blue,以區分線段種類。在后續的介紹中,red線都是指根據分析點構造的輔助線,blue線指多邊形的邊。得到一個交點時,由于可能存在一條或多條red線段,當存在多條red線段時,要把這些線^歐分開處理,即一次取一條red線段與多邊形的邊進行計算。以疊加中所有可能出現的線段分布情形為依據,根據過當前事件點的多邊形的邊數為1或2,可得線段的分布情形為redl_bluel和redl—blue2,如附圖1所示。Redl-bluel:對過同一點(指事件點)的線段的位置關系可能是相交關系、接觸關系或重疊關系,如附圖1所示。首先通過計算得出輔助線與多邊形的邊的位置關系。計算方法是對第一條線段的兩個端點分別計算與第二條線段的關系(在左側、右側、在線上、在延長線上等);然后反之,計算第二條線段的兩端點與第一條線段的關系。當然,某些線段之間的關系可能無須全部計算上述四次即可得到結果。這是本領域常有方法,因此這里不再贅述。若輔助線與多邊形的邊是相交關系,也就是第一種情形,則計算輔助線的起點(也就是分析點)與多邊形的邊的位置關系。因為當前事件點到起點之間沒有其他交點,因此根據分析點與多邊形邊的左右關系即可得到點與多邊形的關系。如前文所述,多邊形邊為具有起點和終點的有向線段,因此可以方便地計算出分析點是在多邊形邊的左側還是右側。若分析點在多邊形邊的左側,則判斷分析點在多邊形的外部;若分析點在多邊形邊的右側,則判斷分析點在多邊形的內部。若輔助線與多邊形的邊是接觸關系(即第二種情形,輔助線的起點在多邊形邊上),則點即在多邊形的邊界上;若是輔助線與多邊形的邊是相交關系(即第三種情形,輔助線與多邊形邊部分重疊),則點也是在多邊形的邊界上。Redl—blue2:如圖1所示,根據red線段(也就是輔助線)與兩個blue線段(也就是多邊形的邊)的關系,即分別求red與blue0、red與bluel的關系。若全是接觸類型,根據線段分部的不同可以得到有三種類型的接觸,即前三種類型。根據輔助線的起點是否等于當前的事件點,可得到是前兩種情形還是第三種情形。對第三種情形,對應輔助線起點恰好是當前事件點,則分析點在多邊形邊界上;對前兩種情形,第一種是跨越多邊形的交點,即輔助線從多邊形的內側(外側)走到了多邊形的外側(內側)。對于第二種,則是接觸類型的交點,雖然輔助線與多邊形的邊接觸了,但是輔助線并沒有穿越多邊形,輔助線的從起點到當前事件點的部分必然全部在多邊形的內部或者外部。雖然第一種和第二種的線段分布是不同的情形,但是其計算方式是一樣的,即計算分析點與過事件點的多邊形的兩鄰接邊的局部關系(判斷方法將在下文中詳述),從而得到分析點與多邊形的關系。若兩條blue線段中,一條是接觸關系,另一條是重疊關系,并根據當前事件點是否與分析點重合,得到第四種和第五種情形。對于第五種情形,即事件點與分析點重合,則分析點在多邊形的邊界上。對于第四種情形,則判斷當前分析點與兩線段的關系。因為分析點恰好在其中一條邊的延長線上,因此只判斷分析點與另一條不重疊的多邊形的邊的關系即可。若分析點在多邊形邊的左側,則分析點在多邊形的外部;若分析點在多邊形邊的右側,則分析點在多邊形的內部。計算分析點與過事件點的多邊形的兩鄰接邊的局部關系,判斷分析點位于多邊形的內部還是外部方法如下因為多邊形的以順時針為正方向,所以沿著任何一條邊前進,多邊形內部的區域在邊的右側。對于在邊右側的點,即在多邊形內部。當然,這個判斷思路是有限制的,并不是說任何一個在多邊形邊右側的點都在多邊形內。但是至少,在多邊形邊的右側,沿著相交的red線剛好跨越交點前進足夠小的距離的點(叫做點M,如圖4所示)必然在多邊形內。而從這個M點到當前射線(即有方向的線段)關聯的分析點之間沒有任何多邊形與當前射線的交點,因此射線關聯的點(即分析點)也就在內部。在外部的情形同理。因此,可以通過點與局部線段關系的計算得到點與多邊形的關系。對于有兩條局部線段,則仍然是按照上述思想,具體實現與一條局部線段的判斷有所不同。具體的實現方法是首先判斷兩鄰接邊的方向,順時針或者逆時針(這是指兩鄰接邊的局部方向,而不是整個多邊形的方向)。兩鄰接邊把平面區域劃分為四部分,如圖3所示(圖3中粗線表示多邊形邊,細線表示輔助線,左側圖的虛線表示多邊形可能的輪廓,右側圖的虛線表示延長線)。圖中右側部分表示兩鄰接邊,以及其延長線,把平面區域分成四部分。這四部分分別對應兩多邊形邊(實線段)的左左,左右,右左,右右區域。假設多邊形邊方向如圖所示,則區域劃分如圖3所示。若是兩多邊形邊的方向相反,則左右區域恰好相反。若兩鄰接邊的局部方向是順時針的(即按照邊的走向,分別取第一條邊的起點、第一條邊的終點也就是第二條邊的起點、第二條邊的終點,這三個點所圍的三角形的方向,以下所述鄰接邊的方向都是指順次取得三個點構成的三角形的方向),則右右區域才是多邊形的內側區域,其余的皆為多邊形的外側區域;若兩鄰接邊的局部方向是逆時針的,則左左區域是多邊形的外側區域,其余區域都是多邊形的內側。對于內環與外環,以上規則都適用。所以,根據兩鄰接邊的局部方向,以及點與兩線段的關系,可以得到點在兩線段的內側還是外側,從而得到點是在多邊形內還是多邊形外。對于本發明,可以直接判斷分析點所在區域,當兩鄰接邊是順時針時,如分析點在兩鄰接邊的右右區域,則分析點在多邊形的內部,否則分析點在多邊形的外部;當兩鄰接邊是逆時針時,如分析點在兩鄰接邊的左左區域,則分析點在多邊形的外部,否則分析點在多邊形的內部。在執行過程中,本步驟既可以在執行完步驟2后單獨執行;也可以在步驟2的循環過程中執行,即在步驟2的子步驟g中輸出當前交點及過當前交點的線段后,直接對這些過同一點的線段進行計算,得到當前交點所對應的分析點與多邊形的位置關系。4、按照步驟3所述,依次處理所有的交點。掃描結束時,每個點與多邊形的關系即可得到。對于產生交點的輔助線對應的點,即可才艮據其掃描到的第一個交點時,點與過交點的多邊形的邊的位置關系得到分析點與多邊形的關系;對于沒有產生交點的輔助線對應的分析點,分析點必然是在多邊形的外部。本發明充分利用了掃描線算法的特點-把過某點的線段集中處理,并與射線法結合,有效解決了各種特殊情形交點的情形。再者,若干點與一個多邊形進行關系判斷時,只對多邊形作一次初始化,而非采用暴力算法去——判斷;并且,在充分考慮掃描線算法的特點后,對每條輔助線段,根據其掃描到的第一個點即可得到此輔助線的關聯點與多邊形的內外關系,而不是通過交點個數的奇偶性來判斷。總之,該發明解決了大數據量點與多邊形關系的判斷,在GIS中得到很好地應用,與同類產品的相同功能對比,顯著提高了計算的效率(參見表l)。表中所述的數據要素個數即輸入數據的點的個數。結果要素個數即經過計算得到的在多邊形內部的點的個數。時間的單位是秒。表l<table>tableseeoriginaldocumentpage14</column></row><table>權利要求1.一種點面疊加分析方法,包括如下步驟1)每次取一個多邊形,對該多邊形的方向進行初始化,將每個多邊形分解為一組具有方向的多邊形邊;2)對于每個分析點,分別構造以該分析點為起點的豎直輔助線,所述輔助線終點位于所述多邊形的外包以外;3)利用掃描線算法,對所有輔助線和該多邊形的所有邊進行掃描,得到每條輔助線與所述多邊形的第一個交點;4)對于每條輔助線,分析該輔助線所對應的分析點和與該輔助線產生第一個交點的多邊形邊的位置關系,得出所述輔助線所對應的分析點與所述多邊形的位置關系。2.根據權利要求1所述的點面疊加分析方法,其特征在于,所述步驟l)中,將順時針方向初始化為所述多邊形的正方向,多邊形的外環為順時4十方向,內環為逆時4十方向。3.根據權利要求1所述的點面疊加分析方法,其特征在于,所述步驟2)中,首先通過所述多邊形的外包過濾,排除位于所述多邊形外包以外的點,將剩余的點作為分析點。4.根據權利要求3所述的點面疊加分析方法,其特征在于,所述多邊形的外包是矩形外包。5.根據權利要求2所述的點面疊加分析方法,其特征在于,所述步驟2)中,構造所述輔助線的方向為豎直向上;所述步驟3)中,所述掃描線算法的掃描方向為從下至上。6.根據權利要求5所述的點面疊加分析方法,其特征在于,所述步驟4)中,當所述輔助線與一條多邊形邊過同一交點且二者為相交關系時,若與所述輔助線相應的分析點在多邊形邊的左側,則判斷該分析點在多邊形的外部;若分析點在多邊形邊的右側,則判斷該分析點在多邊形的內部。7.根據權利要求5所述的點面疊加分析方法,其特征在于,所述步驟4)中,當所述輔助線與一條多邊形邊過同一交點且二者為接觸關系或重疊關系時,則判斷與所述輔助線相應的分析點在多邊形的邊界上。8.根據權利要求5所述的點面疊加分析方法,其特征在于,所述步驟4)中,當所述輔助線與兩條多邊形邊過同一交點,且所述輔助線與兩條多邊形邊都是接觸關系時,如果所述輔助線對應分析點正好是交點,則分析點在多邊形的邊界上。9.根據權利要求5所述的點面疊加分析方法,其特征在于,所述步驟4)中,當所述輔助線與兩條多邊形邊過同一交點,且所述輔助線與兩條多邊形邊都是接觸關系時,如果所述輔助線對應分析點不是交點,則對兩條多邊形邊的局部方向進行判斷,如果兩條多邊形邊的局部方向是順時針方向,當所述分析點相對于兩條多邊形邊均在右側時,則判斷分析點位于所述多邊形的內部,當所述分析點相對于兩條多邊形邊不是均在右側時,則判斷分析點位于所述多邊形的外部;如果兩條多邊形邊的局部方向是逆時針方向,當所述分析點相對于兩條多邊形邊均在左側時,則判斷分析點位于所述多邊形的外部,當所述分析點相對于兩條多邊形邊不是均在左側時,則判斷分析點位于所述多邊形的內部。10.根據權利要求5所述的點面疊加分析方法,其特征在于,所述步驟4)中,當所述輔助線與兩條多邊形邊過同一交點,且所述輔助線與其中一條多邊形邊是重疊關系,而與另一條多邊形邊是接觸關系時,則對輔助線與相接觸的多邊形的邊進行分析,若與所述輔助線相應的分析點在所述相接觸的多邊形邊的左側,則判斷該分析點在多邊形的外部;若分析點在所述相接觸的多邊形邊的右側,則判斷該分析點在多邊形的內部。11.根據權利要求1所述的點面疊加分析方法,其特征在于,所述步驟4)中,在掃描過程中同步判斷步驟3)中得到的過交點的輔助線所對應分析點與所述多邊形的點面關系。全文摘要本發明提供一種點面疊加分析方法,包括如下步驟1)將每個多邊形分解為一組具有方向的多邊形邊;2)對于每個分析點,分別構造以該分析點為起點的豎直輔助線,所述輔助線終點位于所述多邊形的外包以外;3)利用掃描線算法,對所有輔助線和該多邊形的所有邊進行掃描,得到每條輔助線與所述多邊形的第一個交點;4)對于每條輔助線,分析該輔助線產生第一個交點的多邊形邊的位置關系,得出所述輔助線所對應的分析點與所述多邊形的位置關系。本發明能夠進行大數據量點與多邊形關系的判斷。對于任何一條輔助線,只要掃描到第一個交點,即可得到此線對應的點在多邊形內還是在多邊形外。因此本發明能夠減少運算量,大大提高點面疊加的運算速度。文檔編號G06T17/05GK101533525SQ20081010181公開日2009年9月16日申請日期2008年3月12日優先權日2008年3月12日發明者方金云,朱效民,趙紅超,杰閆申請人:中國科學院計算技術研究所