專利名稱::一種基于柵格結構的空間索引建立方法和系統的制作方法
技術領域:
:本發明涉及地理信息系統(GeographicInformationSystem,GIS)領域,特別是涉及一種基于柵格結構的空間索引建立方法和系統。
背景技術:
:地理信息系統(GeographicInformationSystem或Geo_Informationsystem,GIS)有時又稱為"地學信息系統"或"資源與環境信息系統"。用于采集、存儲、管理、處理、檢索、分析和表達地理空間數據的計算機系統,是分析和處理海量地理數據的通用技術。從GIS系統應用角度,它是由計算機系統、地理數據和用戶組成,通過對地理數據的集成、存儲、檢索、操作和分析,生成并輸出各種地理信息,從而為土地利用、資源評價與管理、環境監測、交通運輸、經濟建設、城市規劃以及政府部門行政管理提供新的知識,為工程設計和規劃、管理決策服務。隨著計算機技術的飛速發展、空間技術的日新月異及計算機圖形學理論的日漸完善,GIS技術也日趨成熟,"數字城市"、"電子地圖"等概念的提出為人們的生活提供了更大的便捷。基于電子地圖的特殊性,GIS的主要任務之一是有效地在后臺服務器檢索空間數據及快速響應前臺不同用戶的在線查詢需求,而檢索的速度將直接影響到整個系統執行的效率。提高檢索速度的主要方法就是建立高效的空間索引。空間索引是對存儲在介質上的某一對象集合中所有數據位置信息的描述,通過對空間對象集合建立索引,使系統能夠快速的檢索出這個對象集合中的某個特定對象。目前已經有很多學者提出了很多的基于柵格結構的空間索引方法,如四叉樹、R-樹、I^-樹、HilbertR-樹等。其中R-樹是一種經典的目前被廣泛應用的空間索引結構,它是1984年由A.Guttman提出,采用了最小約束矩形(MinimumBoundingRectangles,簡稱MBR)法來近似的表示空間對象。R-樹是B-樹在多維空間的擴展,因此它具有B-樹的很多優點,如自動平衡、空間利用率高、適合于外存存儲等。然而R-樹的主要問題是,由于空間對象在建立過程中未進行分割,即中間節點目錄矩形允許且可能重疊,因此在查詢的過程中往往存在多條路徑,并且其中的某些路徑不包含查找結果,這就影響了查找性能。研究表明,隨著索引空間維數的增加,R-樹中間結點目錄矩形的重疊迅速增加,這種結果是我們在實際處理GIS空間信息數據所不希望的。另外,可以預見,隨著索引數據量的增加,樹的高度及R-樹中間結點目錄矩形的重疊均會增加,不僅查找性能會下降,而且這種下降的速度會高于索引數據量的增加速度。
發明內容本發明的目的在于提供一種基于柵格結構的空間索引建立方法和系統。利用建立的索引底圖進行檢索,保證了沒有搜索重疊區域,提高了檢索效率。為實現本發明的目的而提供的一種基于柵格結構的空間索引建立方法,所述方法,包括下列步驟6步驟IOO.讀取矢量圖層,獲取組成該圖層所有矢量要素的要素類型和矢量要素的要素索引ID;步驟200.根據所述矢量要素的要素類型和要素索引ID,掃描所述矢量要素的輪廓,為柵格化所述矢量要素得到該矢量要素的柵格圖像做準備;步驟300.根據所述矢量要素的要素索引ID解析出的RGB顏色分量,填充所述輪廓,輸出矢量圖層與圖像像素相對應的索引底圖。所述步驟100,包括下列步驟步驟IIO.配置OGR/GDAL庫,通過GDAL庫獲取.shp格式的矢量圖層,得到該矢量圖層的圖層信息和地理外包信息以建立數據源;步驟120.根據所述地理外包信息計算世界坐標系向屏幕坐標系的轉換公式,以便使真實地理數據能夠全部顯示在有限的屏幕內;步驟130.循環讀取該矢量圖層中的所有矢量要素得到所述矢量要素的索引ID。所述步驟200,包括下列步驟步驟210.配置AGG庫,定義繪制緩存,設置填充規則;步驟220.根據定義的AGG繪制緩存,掃描所述矢量要素的輪廓。所述步驟300,包括步驟310.計算填充單元跨段存入繪制緩存;步驟320.根據所述矢量要素的要素索引ID,解析出RGB顏色分量;步驟330.根據所述填充單元跨段和其對應的RGB顏色分量,填充所述圖像像素,完成索引顏色存入繪制緩存,輸出索引底圖。所述步驟220,包括下列步驟步驟221.利用坐標轉換通道對所述矢量要素進行坐標轉換;步驟222.根據轉換后的坐標,掃描矢量要素輪廓,計算輪廓像素的權值和覆蓋面積。所述步驟221采用的方法是將原整數柵格再細分為256X256個小單位,通過將雙精度型數據左移八位與255做"與"操作,將小數部分轉化到0-255之間的數。所述步驟222是采用亞像素精度的Bresenham生成直線算法。所述步驟310,包括下列步驟將所有生成輪廓的單元格進行排序,然后按照行掃描順序從最小行到最大行逐行掃描;利用圖形對每個掃描柵格點的覆蓋面積area進行判斷,area等于0說明該圖形未壓蓋此像素,無需填充;Area不等于0說明該圖形部分壓蓋或全部壓蓋了此像素,需要掃描存進繪制控制器中;對于未完全填充的柵格利用adcLcell()函數進行標記,對于完全填充的柵格利用ad(Lspan()函數進行標記。所述步驟320中解析過程采用的做法是將十進制ID轉換為二進制,先從B分量的低8位開始存,共能存256個ID,超過部分存入G分量,再超過部分存入R分量。所述步驟330中,根據輸入的采用24位RGB顏色參數,不再計算其混合后的顏色<formula>formulaseeoriginaldocumentpage7</formula>),而是直接將顏色賦給指針p(*p++=c.r),G分量和B分量也做如上修改,對于要素邊界上的柵格,只要該要素對其壓蓋,就認為該柵格的像素顏色為該要素索引。根據所述矢量要素與圖像象素相對應的索引底圖,對于點查詢,只需根據鼠標點選范圍的坐標對應的顏色進行圖像像素到矢量要素的反解析,便得到了與所述圖像像素對應的矢量要素;對于框查詢,只需根據框定點坐標及框的大小確定在緩存中的位置,利用行掃描循環取出相交柵格的顏色進行圖像像素到矢量要素的反解析,便得到了與查詢框相交的矢量要素。當分別取出R、G、B分量后再采用對顏色信息先從R分量的高8位解析,再解析G分量的中間8位,最后解析B分量的低8位。為實現本發明的目的還提供一種基于柵格結構的空間索引建立系統,所述系統,包括矢量圖層讀取模塊,用于讀取矢量圖層,獲取組成該矢量圖層所有矢量要素的要素類型和矢量要素的要素索引ID;矢量要素處理模塊,用于根據所述矢量要素的要素類型和要素索引ID,掃描所述矢量要素的輪廓,為柵格化所述矢量要素得到該矢量要素的柵格圖像做準備;索引底圖輸出模塊,用于根據所述矢量要素的要素索引ID解析出的RGB顏色分量,填充所述輪廓,輸出矢量圖層與圖像像素相對應的索引底圖。所述矢量圖層讀取模塊,包括OGR/GDAL庫,通過GDAL庫獲取.shp格式的矢量圖層,得到該矢量圖層的圖層信息和地理外包信息以建立數據源;坐標轉換模塊,用于根據所述地理外包信息計算世界坐標系向屏幕坐標系的轉換公式,以便使真實地理數據能夠全部顯示在有限的屏幕內;讀取模塊,用于循環讀取該矢量圖層中的所有矢量要素得到所述矢量要素的索引ID。所述矢量要素處理模塊,包括繪制緩存配置模塊,用于定義AGG繪制緩存,設置填充規則;掃描模塊,用于根據定義的AGG繪制緩存,掃描所述矢量要素的輪廓。所述索引底圖輸出模塊,包括跨段計算模塊,用于計算填充單元跨段存入繪制緩存;顏色解析模塊,用于根據所述矢量要素的要素索引ID,解析出RGB顏色分量;繪制模塊,用于根據所述填充單元跨段和其對應的RGB顏色分量,填充所述圖像像素,完成索引顏色存入繪制緩存,輸出索引底圖。所述掃描模塊,包括坐標計算模塊,用于利用坐標轉換通道對所述矢量要素進行坐標轉換;計算模塊,用于根據轉換后的坐標,掃描矢量要素輪廓,計算輪廓線所覆蓋像素的權值和覆蓋面積。所述坐標計算模塊,采用的方法是將原整數柵格再細分為256X256個小單位,通過將雙精度型數據左移八位與255做"與"操作,將小數部分轉化到0-255之間的數。所述計算模塊采用亞像素精度的Bresenham生成直線算法。所述跨段計算模塊,執行下列操作將所有生成輪廓的單元格進行排序,然后按照行掃描順序從最小行到最大行逐行掃描;利用圖形對每個掃描柵格點的覆蓋面積area進行判斷,area等于0說明該圖形未壓蓋此像素,無需填充;Area不等于0說明該圖形部分壓蓋或全部壓蓋了此像素,需要掃描存進繪制控制器中;對于未完全填充的柵格利用adcLcell()函數進行標記,對于完全填充的柵格利用ad(Lspan()函數進行標記。所述顏色解析模塊,采用的做法是將十進制ID轉換為二進制,先從B分量的低8位開始存,共能存256個ID,超過部分存入G分量,再超過部分存入R分量。所述繪制模塊,根據輸入的采用24位RGB顏色參數,不再計算其混合后的顏色(*P++=(((c.r-r)*alpha)+(r<<16))>>16),而是直接將顏色賦給指針p(*p++=c.r),G分量和B分量也做如上修改,對于要素邊界上的柵格,只要該要素對其壓蓋,就認為該柵格的像素顏色為該要素索引。所述系統,還包括搜索模塊,用于根據所述矢量要素與圖像象素相對應的索引底圖,對于點查詢,只需根據鼠標點選范圍的坐標對應的顏色進行圖像像素到矢量要素的反解析,便得到了與所述圖像像素對應的矢量要素;對于框查詢,只需根據框定點坐標及框的大小確定在緩存中的位置,利用行掃描循環取出相交柵格的顏色進行圖像像素到矢量要素的反解析,便得到了與查詢框相交的矢量要素。所述搜索模塊,分別取出R、G、B分量后再采用對顏色信息先從R分量的高8位解析,再解析G分量的中間8位,最后解析B分量的低8位。本發明的有益效果是1.本發明的基于柵格結構的空間索引建立方法和系統,提出了一種用于GIS中的柵格空間索引機制,此方法利用AGG繪制引擎不僅能夠快速建立柵格索引,而且與經典的空間索引結構R樹比較,在建立索引的內存使用方面具有一定優勢;2.本發明的基于柵格結構的空間索引建立方法和系統,提出了兩素對應索引方法在查詢精度上具有一定優勢,能夠達到90%以上,誤差大小取決于柵格大小。并且查詢效率上大部分情況要優于R數,該發明尤其適用于GIS中海量密集數據的檢索上,其檢索的時間復雜度為一維線性;3.由于本發明提出的基于AGG引擎的索引機制在檢索效率上的優勢,為網絡地圖服務模式下的空間檢索的性能提升提供了很好的探索方向。圖1是本發明一種基于柵格結構的空間索引建立方法的步驟流程圖;圖2是本發明中讀取矢量圖層的方法的步驟流程圖;圖3是本發明中對柵格圖像進行掃描的方法步驟流程圖;圖4是本發明中掃描所述柵格圖像的輪廓的步驟流程圖;圖5是本發明中通過坐標轉換通道對所述矢量要素進行坐標轉換的示意9圖6是本發明中增量計算的示意圖;圖7是本發明中計算權值(cover)和覆蓋面積(area)的示意圖;圖8是本發明中折線細節計算方法的示意圖;圖9是本發明中掃描效果的示意圖;圖10是本發明中輸出索引底圖的方步驟流程圖;圖11是本發明中繪制控制器的計算過程的示意圖;圖12是本發明中索引解析的示意圖;圖13是本發明中對AGG填充部分作出修改后的示意圖;圖14是本發明中矢量地圖的原圖;圖15是本發明中根據矢量地圖生成的索引底圖;圖16是本發明中采用框查詢的示例圖;圖17是本發明一種基于柵格結構的空間索引建立系統的結構示意圖;圖18(a)是本發明中試驗數據為密集數據的示意圖;圖18(b)是本發明中試驗數據為稀疏數據的示意圖;圖19(a)是采用R樹過濾邊界的示例圖;圖19(b)是采用本發明的兩素對應過濾邊界的示例圖;圖20是建立索引比對圖。具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明的一種基于柵格結構的空間索引建立方法和系統進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。本發明的一種基于柵格結構的空間索引建立方法和系統,是利用AGG(Anti-GrainGeometry)引擎將矢量圖層中的每個矢量要素轉換成柵格數據并對該柵格數據進行渲染,而達到矢量要素與圖像像素相對應,生成索引底圖,利用該索引底圖進行檢索,保證了沒有搜索重疊區域,提高了檢索效率。本發明要解決的技術問題包括1.矢量要素的柵格渲染;2.要素索引ID的解析及與圖像像素的關聯;3.利用這種兩素(矢量要素與圖像像素)對應索引機制實現的檢索過程。下面結合上述目標詳細介紹本發明一種基于柵格結構的空間索引建立方法,圖1是本發明一種基于柵格結構的空間索引建立方法的步驟流程圖,如圖1所示,所述方法包括下列步驟步驟100.讀取矢量圖層,獲取組成該圖層所有矢量要素的要素類型和要素索引ID;本發明是采用OGR庫來讀取.shp格式的矢量圖層,獲取組成該圖層所有要素的信息。該過程中的關鍵點如下[OO98](1)多邊形帶洞的情況。在處理面數據的時候,一定要判斷其是否存在內環,由于AGG繪制引擎渲染過程10就是柵格填充過程,如果不判斷內環情況,當出現面要素帶洞情況將無法識別而將洞內全部填充。反之,如果考慮內環,可采取利用背景色繪制內環部分,則新繪制的內環中的像素將覆蓋原來部分。這樣,就能夠處理地理信息數據中面要素帶洞的情況。(2)邏輯坐標轉換。在處理真實地理數據的時候,為了使真實數據在屏幕上完整的顯示,最關鍵要做的就是世界坐標系向屏幕坐標系的轉換,該過程需要地理外包、屏幕外包、及比例尺等參數。圖2是本發明中讀取矢量圖層的方法的步驟流程圖,如圖2所示,所述步驟100,包括下列步驟步驟IIO.配置OGR/GDAL庫,通過GDAL庫獲取.shp格式的矢量圖層,得到該矢量圖層的圖層信息和地理外包信息;從官方網站上下載動態鏈接庫gdal.dll放在C:\WIND0WS\system32目錄下,靜態鏈接庫gdal.lib放在開發環境的lib安裝目錄下,如D:\ProgramFiles\MicrosoftVisualStudio8\SDK\v2.0\Lib,頭文件放在開發環境的include目錄下,如D:\ProgramFiles\MicrosoftVisualStudio8\SDK\v2.0\include。通過GDAL庫獲取.shp格式的矢量圖層,得到該矢量圖層的圖層信息和地理外包信息以建立數據源。其中利用gdal庫建立數據源,屬于現有技術,在此不再贅述。步驟120.根據所述地理外包信息計算世界坐標系向屏幕坐標系的轉換公式,以便使真實地理數據能夠全部顯示在有限的屏幕內;步驟130.循環讀取該矢量圖層中的所有矢量要素得到所述矢量要素的索引ID。以下代碼為生成索引底圖的過程,即將矢量要素柵格化的過程,包括繪制內容,在這段代碼里,當要繪制時會調用別的函數,因此它應該算是生成索引底圖的整體過程。〃讀取.shp文件ReadShp0利用GDAL庫獲取數據源OGRDataSource*poDS<table>tableseeoriginaldocumentpage12</column></row><table>氺poPolygon=(OGRPolygon*)geom;獲取該面得內環、外環坐標系轉換利用AGG引擎填充外環內的面數據利用AGG引擎填充內環外的面數據〃Multi點elseif(geom->getGeometryType()==wkbMultiPoint)//獲取OGRGeometryCollection*PointCollection=(OGRGeometryCollection*)geom;按照處理點數據的方式循環處理該集合〃Multi線6ls6if(geom->getGeometryType()==wkbMultiLineString){//獲取OGRGeometryCollection氺PointCollection=(OGRGeometryCollection*)geom;按照處理線數據的方式循環處理該集合〃Multi面elseif(geom->getGeometryType()==wkbMultiPolygon)//獲取OGRGeometryCollection氺PointCollection=(OGRGeometryCollection*)geom;按照處理面數據的方式循環處理該集合步驟200,根據所述矢量要素的要素類型和要素索引ID,掃描所述柵格圖像的輪廓,為柵格化所述矢量要素得到該矢量要素的柵格圖像做準備;圖3是本發明中對柵格圖像進行掃描的方法步驟流程圖,如圖3所示,所述步驟200,包括下列步驟步驟210.配置AGG庫,定義繪制緩存,設置填充規則;(1)配置AGG庫下載AGGLite,將其生成靜態鏈接庫agg.lib放入開發環境的lib安裝目錄下,如D:\ProgramFiles\MicrosoftVisualStudio8\SDK\v2.0\Lib中,工程項目中加入agglite.h頭文件。(2)定義AGG繪制緩存〃定義畫布大小13voicWmf=newunsignedvoid[width樸eigh1^3]〃根據該緩存創建繪制緩存agg::rendering—bufferrbuf((unsignedchar氺)buf,width,height,width氺3)5〃定義AGG繪制控制器agg::renderer〈3gg::spMi_rgb24>ren(rbuf)5agg::rasterizerras;〃邊沿虛化程度ras.gamma(1.3);〃填充規則ras.filling—rule(agg::fill_even_odd);〃畫布背景色ren.clear(agg::rgba8(255,255,255));設置好規則后,所有的繪制部分都利用rasterizer的對象ras來完成,由于它是利用緩存buf創建的,所以,所有繪制完的圖像像素都存儲在buf中,如需將圖形輸出到屏幕,只需將其利用bitmap與前緩存進行交換。如需保存成ppm格式,只需按照ppm文件格式將buf寫入即可。步驟220.根據定義的AGG繪制緩存,掃描所述矢量要素的輪廓;此時柵格圖像還沒有生成,這里的輪廓是指得到的矢量要素的輪廓)在本步驟中,掃描所述矢量要素的輪廓,并非是實際繪制出柵格圖像的輪廓,而僅僅是掃描矢量要素的輪廓,將掃描得到后的數據存入緩存中,待計算填充單元及跨段時使用。圖4是本發明中掃描所述矢量要素的輪廓的步驟流程圖,如圖4所示,所述步驟220,包括下列步驟步驟221.利用坐標轉換通道對所述矢量要素進行坐標轉換;只要是利用AGG引擎繪制,都必須進行這種坐標轉換,當獲得了某個要素的所有坐標點準備掃描輪廓前,都要將這些坐標點經過這種坐標轉換。圖5是本發明中通過坐標轉換通道對所述矢量要素進行坐標轉換的示意圖,如圖5所示,由于在渲染的過程中要考慮到亞像素精度的反走樣以便于繪制控制器記錄跨段信息,因此需要考慮雙精度(double)型的真實數據中小數部分對整數部分所做的貢獻,該貢獻是指小數部分的大小對整數部分的影響程度。采用的方法是將原整數柵格再細分為256X256個小單位。通過將double型數據左移八位與255做"與"操作,即可將小數部分轉化到0-255之間的數。步驟222.根據轉換后的坐標,掃描矢量要素輪廓,進而計算權值(cover)和覆蓋面積(area);圖6是本發明中增量計算的示意圖,圖7是本發明中計算權值(cover)和覆蓋面積(area)的示意圖。掃描輪廓采用Y方向上逐行增加,X方向上逐單元增加的方法,將矢量要素的輪廓線所經過的每一個柵格點計算權值(cover)和覆蓋面積(area)。以便用加權采樣方法進行反走樣的實現。這里運用了亞像素精度(subpixelaccuracy)的Bresenham生成直線算法,Bresenham算法是一種基于誤差判別式來生成直線的方法。與傳統Bresenham所不同的是,該算法利用誤差判別選擇像素的過程是基于亞像素的,即將單位柵格平均分成了256*256個子像素。根據直線斜率及增量依次判斷該直線與所有橫縱柵格線的交點,而此交點的計算不再僅僅依賴于斜率將原坐標(Xi,y》進行增量(delta)運算,而是需要轉換成亞像素精度,增量(delta)的計算公式描述如下<formula>formulaseeoriginaldocumentpage15</formula>其中fy為實數坐標分量Y部分經過坐標轉換通道所得的小數部分,Ax=x2_Xl,Ay=y2-y1Q如圖6所示。x方向的增量采用與Y方向相同的方法。這樣,在每一步上,便可求出該直線與X軸柵格線或Y軸柵格線的交點。根據這些點,可方便計算出受該直線所影響的整數柵格點的area和cover,計算公式描述如下cover=fy2-ftl(2)area=(fx2+fxl)Xcover(3)如圖7所示,對整數坐標A點影響的點有直線頂點a,及直線與X方向柵格線的交點b,整數坐標B點影響的點有直線與X軸柵格線交點b及與Y軸柵格線交點c。因此,A、B兩點的權值和覆蓋面積如下cover_A=fy_b_fy_a(4)area—A=(fx_a+fx_b)Xcover_A(5)cover_B=fy_c_fy_b(6)area_B=(fx_c+fx_b)Xcover_B(7)圖8是本發明中折線細節計算方法的示意圖,圖9是本發明中掃描效果的示意圖。由于AGG引擎是根據封閉多邊形在閉合區域內處理的,因此對于點、線、面的處理要求將它們都轉化為封閉多邊形。下面分別對這三種類型進行詳細說明。①點的掃描由于點要素的頂點序列中只有一個點,若想形成封閉區域可以以該點為圓心畫實心圓,半徑可以自己指定。具體為先將ras移動到圓上的任一點,ras.move—to_d(X-r,y),然后根據角度利用正弦余弦計算圓周上所有點的坐標,最后利用循環將角度從0至lj360循環一次,ras.line_to_d(x+cos(a)*r,y+sin(a)*r),ras便將圓周所有點畫了一遍。②線的掃描線要素的掃描比較復雜,線要素實際是由一系列點序列組成的折線,單純的這條折線在AGG中是繪制不出來的,必須給它賦予一定的寬度,形成封閉多邊形。由于地理數據特殊性,兩條直線的夾角可能會非常小,由于直線斜率無限接近,利用寬度線求交點將導致交點在無限遠處,地圖整體看來會有毛剌,為避免上述情形,不能根據直線寬度求交點,采用保留原直線寬度一半的做法,上部分求出四個點,下部分直接利用折線上的點,然后在分別對斜率不同、折線點個數不同的情況進行分類。最后繪制封閉的多邊形。如圖8所示,對于線段AB與線段BC所組成的折線來說,組成其的端點序列為D-E-F-G-C-B-A。則D點的坐標描述如下<formula>formulaseeoriginaldocumentpage15</formula>,(8)J^"」+w廳xJ(9)用同樣的方法依次計算出E、F、G。將D、E、F、G存入容器vector—up中。當所有端點都循環計算一次后,該直線上部分的所有點便都獲得。最后將它們形成封閉多邊形,如圖9所示。③面的掃描根據面要素的頂點序列,只需先將ras移動到面要素的點序列的第一個點ras.move_to(vec.first,vec[O].second),然后對所有點序列中每個點進行循環,使ras繪制邊界ras.line_to_d(vec[i].first,vec[i].second),最后輪廓掃描完畢。AGG引擎提供的接口最重要的就是ras.move—to—d(x,y)和ras.line_to_d(x,y)。這兩個函數是用來生成柵格圖形的輪廓的。步驟300.根據所述矢量要素的要素索引ID解析出的RGB顏色分量,填充所述柵格圖像,得到所述矢量圖層與圖像像素相對應的索引底圖;本步驟中,所述柵格圖像是由多個圖像象素組成,進而得到與所述矢量要素對應的圖像像素。圖10是本發明中輸出索引底圖的方步驟流程圖,如圖10所示,所述步驟300,包括下列步驟步驟310.根據所述權值和覆蓋面積,計算填充單元跨段;將所有生成輪廓的單元格(cell)進行排序,然后按照行掃描順序從最小行到最大行逐行掃描,利用圖形對每個掃描柵格點的覆蓋面積area進行判斷,area等于0說明該圖形未壓蓋此像素,無需填充。Area不等于O說明該圖形部分壓蓋或全部壓蓋了此像素,需要掃描存進繪制控制器中。對于未完全填充的柵格利用adcLcell()函數進行標記,對于完全填充的柵格利用adcLspan()函數進行標記。由于cover有正負,所以在掃描每一行的時候都將所有cell的cover相加,(因為多邊形一定是閉合的,所以當該跨段填充完以后cover會為0),通過這樣的判斷,就能自動找到哪部分需要填充,哪部分不需要填充。從而解決了帶洞多邊形填充的問題。圖ll是本發明中繪制控制器的計算過程的示意圖,如圖11所示。在1-12標記的cell中執行adcLcell,在圖形內部執行add_span。步驟320.根據所述矢量要素的要素索引ID,解析出RGB顏色分量;兩素對應就是矢量要素與圖形像素對應,具體指在繪制矢量要素的同時,生成一張與原圖匹配的柵格底圖,該底圖就是其對應的索引圖。因此該索引底上的每個像素點都對應了兩部分內容,一是對應了該真實圖像的顏色,二是對應了該矢量要素索引號ID轉換為RGB的顏色。這種索引結構的生成過程和查詢過程由于都是基于柵格的運算,因此效率上具有很大的優勢。本發明中,顏色格式采用RGB24,也就是說使用24位來表示一個像素,R、G、B每個分量都用8位表示,取值范圍為0-255,內存中RGB各分量的排列順序為RGB。解析過程采用的做法是將十進制ID轉換為二進制,先從B分量的低8位開始存,共能存256個ID,超過部分存入G分量,再超過部分存入R分量。圖12是本發明中索引解析的示意圖,如圖12所示,如下三個面要素的索引ID分別為159,24202,5513482。其解析的過程是先將159轉換為二進制數,為10011111,其擴充到24位后將前16位補0,因此后八位為10011111,即159,為B分量;中間八位為'16即O,為G分量;前八位為00000000,即0,為R分量。因此該要素索引解析為RGB顏色為(0,0,159)。同理,索引號為24202的要素ID轉換為顏色是(0,94,138),索引號為5513482的要素ID解析為顏色是(84,33,10)。這樣便實現了矢量要素索引ID向顏色空間的轉換過程,巧妙的將矢量要素索引和圖像像素結合到一起,完成了兩素對應方法。上述解析過程的輸入參數為索引ID,輸出參數為R、G、B分量。偽代碼如下voidconvert(intid,int&r,int&g,int&b)定義顏色數組如果要素ID不為0將該十進制數轉換為二進制數存入數組中for(循環數組的低8位)計算B分量;for(循環數組的中間8位)計算G分量;for(循環數組的高8位)計算R分量;由于AGG引擎及基于亞像素精度和反走樣技術的,因此在要素柵格化后,填充顏色時會有混合色的計算過程,這將使顏色深淺過渡更加平緩。但是,該發明要做的工作利用解析為RGB顏色信息的索引ID對柵格化的要素進行填充,如果采用反走樣,在要素的邊沿,對于沒有完全占滿整個柵格的cell來說,會和其它對該柵格做貢獻的顏色產生混合效果,顏色的變化將會導致索引ID的變化,因此在要素邊沿處,就無法保證要素ID的正確性。較佳地,為了避免這種情況,可以對AGG顏色填充部分做修改。根據輸入的24位RGB顏色參數c,不再計算其混合后的顏色(*p++=(((C.r-r)*alpha)+(r<<16))>>16),而是直接將顏色賦給指針p(*p++=c.r),G分量和B分量也做如上修改。圖13是本發明中對AGG填充部分作出修改后的示意圖,修改后產生的效果如圖13所示此處修改,默認了對于要素邊界上的柵格,只要該要素對其壓蓋,就認為該柵格的像素顏色為該要素索引。因此,通過這種方式建立起的柵格索引的誤差均產生在要素邊緣CN101719154A的像素點上。誤差的大小將取決于柵格的大小。按照這種生成索引的方式,我們就可以對已經柵格化的要素進行填充。根據如上計算的ID顏色,將每個像素的RGB分量存入繪制緩存中。所有的繪制部分都利用rasterizer的對象ras來完成,因此可利用接口ras.render(ren,agg::rgba8(red,green,blue))土真充彥頁色,其中red、green、blue就是進行角牟析后的要素ID。步驟330.根據所述填充單元跨段和其對應的RGB顏色分量,填充所述圖像像素,完成索引顏色信息存入繪制緩存,輸出索引底圖;圖14是本發明中根據矢量地圖生成的索引底圖,如圖14所示,生成的索引底圖,如果繪制出來,顏色會是從黑色到藍色逐漸變化的,因為黑色的RGB是(0,0,0),藍色影響最后8位,因此會逐漸變藍,如果超過255,就會影響綠色分量G。以此類推,再影響紅色分針對這種矢量要素與圖像象素相對應的索引生成方法,搜索運算將異常簡單。對于點查詢,只需根據鼠標點選范圍的坐標,獲取(X,Y)點,根據已生成的繪制緩存進行反解析。對于框查詢,只需根據框定點坐標及框的大小確定在緩存中的位置,利用行掃描循環取出相交柵格的顏色進行反解析即可。解析的代碼如下〃獲取渲染好的畫布unsignedchar氺buffer=(unsignedchar氺)this—>bufId5〃獲取R、G、B分量unsignedintred=buffer[(height_point_y)氺width氺3+point—x氺3];unsignedintgreen=buffer[(height_point_y)氺width氺3+point—x氺3+l];unsignedintblue=buffer[(height_point_y)氺width氺3+point—x氺3+2];當分別取出R、G、B分量后再采用和生成顏色索引相反的方式,對顏色信息先從R分量的高8位解析,再解析G分量的中間8位,最后解析B分量的低8位。圖15是本發明中采用框查詢的示例圖,如圖15所示,如果采用框查詢,給定查詢點A,及查詢框大小WidthXHeigth,則以起始點A逐行像素掃描至B,取出與框相交的像素顏色,有(0,0,159)、(0,94,138)、(84,33,10),將他們從R分量開始反解析,分別為159,24202,5513482,由此便得到了與查詢框相交的矢量要素。相應于本發明的一種基于柵格結構的空間索引建立方法,還提供一種基于柵格結構的空間索引建立系統。圖16是本發明一種基于柵格結構的空間索引建立系統的結構示意圖,如圖16所示,所述系統,包括矢量圖層讀取模塊l,用于讀取矢量圖層,獲取組成該矢量圖層所有矢量要素的要素類型和矢量要素的要素索引ID;所述矢量圖層讀取模塊l,包括0GR/GDAL庫ll,通過GDAL庫獲取.shp格式的矢量圖層,得到該矢量圖層的圖層信息和地理外包信息以建立數據源;坐標轉換模塊12,用于根據所述地理外包信息計算世界坐標系向屏幕坐標系的轉換公式,以便使真實地理數據能夠全部顯示在有限的屏幕內;18讀取模塊13,用于循環讀取該矢量圖層中的所有矢量要素得到所述矢量要素的索引ID。矢量要素處理模塊2,用于根據所述矢量要素的要素類型和要素索引ID,掃描所述矢量要素的輪廓,為柵格化所述矢量要素得到該矢量要素的柵格圖像做準備;所述矢量要素處理模塊2,包括繪制緩存配置模塊21,用于定義AGG繪制緩存,設置填充規則;掃描模塊22,用于根據定義的AGG繪制緩存,掃描所述矢量要素的輪廓。所述掃描模塊22,包括坐標計算模塊221,用于利用坐標轉換通道對所述矢量要素進行坐標轉換;計算模塊222,用于根據轉換后的坐標,掃描矢量要素輪廓,計算輪廓線所覆蓋像素的權值和覆蓋面積。所述坐標計算模塊,采用的方法是將原整數柵格再細分為256X256個小單位,通過將雙精度型數據左移八位與255做"與"操作,將小數部分轉化到0-255之間的數。所述計算模塊采用亞像素精度的Bresenham生成直線算法。索引底圖輸出模塊3,用于根據所述矢量要素的要素索引ID解析出的RGB顏色分量,填充所述輪廓,輸出矢量圖層與圖像像素相對應的索引底圖。所述索引底圖輸出模塊3,包括跨段計算模塊31,用于計算填充單元跨段存入繪制緩存;顏色解析模塊32,用于根據所述矢量要素的要素索引ID,解析出RGB顏色分量;繪制模塊33,用于根據所述填充單元跨段和其對應的RGB顏色分量,填充所述輪廓,完成索引顏色存入繪制緩存,輸出索引底圖。所述跨段計算模塊,執行下列操作將所有生成輪廓的單元格進行排序,然后按照行掃描順序從最小行到最大行逐行掃描;利用圖形對每個掃描柵格點的覆蓋面積area進行判斷,area等于0說明該圖形未壓蓋此像素,無需填充;Area不等于0說明該圖形部分壓蓋或全部壓蓋了此像素,需要掃描存進繪制控制器中;對于未完全填充的柵格利用adcLcell()函數進行標記,對于完全填充的柵格利用ad(Lspan()函數進行標記。所述顏色解析模塊,采用的做法是將十進制ID轉換為二進制,先從B分量的低8位開始存,共能存256個ID,超過部分存入G分量,再超過部分存入R分量。所述繪制模塊,根據輸入的采用24位RGB顏色參數,不再計算其混合后的顏色(*P++=(((c.r-r)*alpha)+(r<<16))>>16),而是直接將顏色賦給指針p(*p++=c.r),G分量和B分量也做如上修改,對于要素邊界上的柵格,只要該要素對其壓蓋,就認為該柵格的像素顏色為該要素索引。所述基于柵格結構的空間索引建立系統,還包括搜索模塊4,用于根據所述矢量要素與圖像象素相對應的索引底圖,對于點查詢,只需根據鼠標點選范圍的坐標對應的顏色進行圖像像素到矢量要素的反解析,便得到了與所述圖像像素對應的矢量要素;對于框查詢,只需根據框定點坐標及框的大小確定在緩存中的位置,利用行掃描循環取出相交柵格的顏色進行圖像像素到矢量要素的反解析,便得到了與查詢框相交的矢量要素。所述搜索模塊,分別取出R、G、B分量后再采用對顏色信息先從R分量的高8位解析,再解析G分量的中間8位,最后解析B分量的低8位。較佳地,由于兩素對應生成索引的方法是采用將ID解析為顏色,然后按照柵格掃描的方法完成的。整個過程是以渲染為基礎的,圖形要素的渲染效率將對整個索引生成過程產生很大的影響,選擇恰當的圖形渲染引擎很重要,因此有必要對本發明所使用的AGG渲染引擎與GDI+渲染引擎在渲染效率上做對比。GDI+是微軟的.NetFramework的一個重要組成部分,增強了Windows的圖形圖像開發接口,同時它也改變了傳統的GDI編程模式,使開發工作大幅度簡化。我們選擇渲染多邊形來進行測驗,根據多邊形的邊數不同,即多邊形的復雜情況不同,和渲染多邊形的個數不同來測試渲染時間進行比對,圖17是本發明中AGG與GDI+的渲染效率對比圖,實驗結果如圖17所示。由此看出,AGG繪圖引擎的渲染效率整體要高于GDI+,有時會超過10倍,并且渲染的圖形要素越復雜,AGG所具有的優勢越明顯。建立索引的最終目的將是為了高效的查詢,查詢的性能將直接影響到電子地圖響應用戶需求的速度。因此,有必要對該發明提出的索引機制在過濾精度及查詢速度方面與傳統的空間索引結構R樹作對比。圖18(a)是本發明中試驗數據為密集數據的示意圖,圖18(b)是本發明中試驗數據為稀疏數據的示意圖。為了對比R-樹和兩素對應的索引行為,本發明設計了三個實驗針對以下幾個指標來測試它們的性能兩種索引的過濾精度、建立索引所花費的時間及內存、針對密集數據和稀疏數據利用兩種索引分別進行點查詢和框查詢的效率。實驗的測試環境操作系統為WindowsXP(ServicePack2),CPU為IntelPentium1.73GHZ,內存為1G。(1)過濾精度對比測試R樹索引與兩素對應索引的過濾精度可采用點查詢和框查詢,但對于兩素對應法來講框查詢也將轉換為點查詢,因此框過濾精度無異于點過濾的精度。本實驗以點過濾為例,為了進行對比還將選一種基于矢量的計算幾何的方法來作為參照。這種計算幾何方法采用射線算法能夠精確判斷所查詢的隨機點的索引號,即是否屬于某一要素。實驗采用的數據為表1測試數據集中的D2。該實驗通過生成隨機點利用三種方法分別判斷出能夠查詢到索引的點的數目,試驗結果見表2。表1測試數據集編號名稱幾何類型大小(MB)要素數目對應圖示DlBOUND—poly.shpMultiPolygon17.33407圖18(a)D2CS_99_03c.shpMultiPolygon1.48123圖18(b)20表2過濾精確率對比<table>tableseeoriginaldocumentpage21</column></row><table>圖19(a)是采用R樹過濾邊界的示例圖,圖19(b)是采用本發明的兩素對應過濾邊界的示例圖。從實驗結果可以看出兩素對應的過濾集能達到95%以上,要比R樹的過濾集精度更高一些。產生這種差異的原因是,R樹空間目標采用最小約束矩形(MBR)來加以近似表達,如圖19(a)中紅線所示,而且允許兄弟結點之間的相互重疊,因此對于精確匹配查詢,R樹不能保證唯一的檢索路徑,和唯一的檢索結果。而基于AGG的兩素索引機制查詢只需進行簡單的內存地址計算就可以檢索出與查詢條件匹配的索引項,相對比較精確,由于采用的是柵格方法,它的誤差只產生在輪廓線的邊沿像素,如圖19(b)紅線所示。(2)建立索引性能對比將R-樹與兩素對應分別對建立索引的時間與內存占用作對比。實驗數據為表1測試數據集中的Dl。圖20是建立索引比對圖,實驗結果如圖20所示。從該結果可以看出,R樹建立索引占用的內存會隨著數據量的增大而增加,而兩素對應由于是在內存中生成Bitm即,只要長度與寬度指定,它建立索引占用的內存不會隨著數據量的增大而增加,由此看來,兩素對應更適合大數據量的索引建立。從在建立索引占用的時間來看,R樹所用時間要比兩素對應要少一些,但在實際電子地圖服務器的應用中,索引是預生成的。由于兩素對應方法在查詢方面的效率更高,所以更適用于在電子地圖服務器應用。(3)查詢性能對比比較R樹索引與兩素對應索引在查詢方面的效率。為了試驗結果的客觀性,將分別對密集數據和稀疏數據做測試。密集數據采用的是表1測試數據集中的Dl,該面圖層的重疊區域較多。而稀疏數據采用的是表1測試數據集中的D2,該面圖層的重疊部分較少。點查詢的實驗對比如表3所示。實驗數據為空間目標隨機點,結果表明,無論是對密集數據還是稀疏數據,兩素對應的點查詢效率更高一些,因為這種索引機制是基于AGG的柵格渲染過程,每一點的索引保存在bitm即,點查詢時,只需根據點坐標計算該點在bitmap中的行列地址,便可根據顏色信息解析出該點索引,時間復雜度是一維線性的O(n),而對于R樹,無論是密集數據還是稀疏數據都要從根結點向下搜索,當索引數據量增加時,這種索引效率就會降低。21框查詢的實驗結果如表3所示。實驗數據為空間目標隨機點,框的大小為200X200。結果表明,針對密集數據的框查詢,兩素對應的效率要明顯高于R樹索引效率,因為數據越密集,MBR的重疊越多,這樣在框查詢時,R樹搜索的路徑不唯一,導致效率下降。針對稀疏數據的框查詢,兩素對應的效率卻沒有R樹高,原因是由于數據稀疏,MBR的重疊少,R樹的效率將有所提升,同時由于在框查詢過程中,兩素對應的查詢方法是以隨機點為定點,框的大小為掃描的長度、寬度,循環掃描單位柵格點,從而找出與查詢框相交的要素索引。因此在數據極稀疏的情況下,循環時間將影響兩素對應索引的整體效率。由于網絡地圖應用場景中,尤其是城市電子地圖應用中,絕大部分情況要素都較為密集,因此此種情形不會影響兩素對應算法在實際應用中的性能表現。表3查詢對比表<table>tableseeoriginaldocumentpage22</column></row><table>本發明的有益效果在于1.本發明的基于柵格結構的空間索引建立方法和系統,提出了一種用于GIS中的柵格空間索引機制,此方法利用AGG繪制引擎不僅能夠快速建立柵格索引,而且與經典的空間索引結構R樹比較,在建立索引的內存使用方面具有一定優勢;2.本發明的基于柵格結構的空間索引建立方法和系統,提出了兩素對應索引方法在查詢精度上具有一定優勢,能夠達到90%以上,誤差大小取決于柵格大小。并且查詢效率上大部分情況要優于R數,該發明尤其適用于GIS中海量密集數據的檢索上,其檢索的時間復雜度為一維線性;3.由于本發明提出的基于AGG引擎的索引機制在檢索效率上的優勢,為網絡地圖服務模式下的空間檢索的性能提升提供了很好的探索方向。通過結合附圖對本發明具體實施例的描述,本發明的其它方面及特征對本領域的技術人員而言是顯而易見的。以上對本發明的具體實施例進行了描述和說明,這些實施例應被認為其只是示例性的,并不用于對本發明進行限制,本發明應根據所附的權利要求進行解釋。權利要求一種基于柵格結構的空間索引建立方法,其特征在于,所述方法,包括下列步驟步驟100.讀取矢量圖層,獲取組成該圖層所有矢量要素的要素類型和矢量要素的要素索引ID;步驟200.根據所述矢量要素的要素類型和要素索引ID,掃描所述矢量要素的輪廓,為柵格化所述矢量要素得到該矢量要素的柵格圖像做準備;步驟300.根據所述矢量要素的要素索引ID解析出的RGB顏色分量,填充所述輪廓,輸出矢量圖層與圖像像素相對應的索引底圖。2.根據權利要求1所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟100,包括下列步驟步驟110.配置0GR/GDAL庫,通過GDAL庫獲取.shp格式的矢量圖層,得到該矢量圖層的圖層信息和地理外包信息以建立數據源;步驟120.根據所述地理外包信息計算世界坐標系向屏幕坐標系的轉換公式,以便使真實地理數據能夠全部顯示在有限的屏幕內;步驟130.循環讀取該矢量圖層中的所有矢量要素得到所述矢量要素的索引ID。3.根據權利要求2所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟200,包括下列步驟步驟210.配置AGG庫,定義繪制緩存,設置填充規則;步驟220.根據定義的AGG繪制緩存,掃描所述矢量要素的輪廓。4.根據權利要求3所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟300,包括:步驟310.計算填充單元跨段存入繪制緩存;步驟320.根據所述矢量要素的要素索引ID,解析出RGB顏色分量;步驟330.根據所述填充單元跨段和其對應的RGB顏色分量,填充所述圖像像素,完成索引顏色存入繪制緩存,輸出索引底圖。5.根據權利要求3所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟220,包括下列步驟步驟221.利用坐標轉換通道對所述矢量要素進行坐標轉換;步驟222.根據轉換后的坐標,掃描矢量要素輪廓,計算輪廓線所覆蓋像素的權值和覆蓋面積。6.根據權利要求5所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟221采用的方法是將原整數柵格再細分為256X256個小單位,通過將雙精度型數據左移八位與255做"與"操作,將小數部分轉化到0-255之間的數。7.根據權利要求5所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟222是采用亞像素精度的Bresenham生成直線算法。8.根據權利要求4所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟310,包括下列步驟將所有生成輪廓的單元格進行排序,然后按照行掃描順序從最小行到最大行逐行掃描;利用圖形對每個掃描柵格點的覆蓋面積area進行判斷,area等于0說明該圖形未壓蓋此像素,無需填充;Area不等于O說明該圖形部分壓蓋或全部壓蓋了此像素,需要掃描存進繪制控制器中;對于未完全填充的柵格利用adcLcell()函數進行標記,對于完全填充的柵格利用add—span()函數進行標記。9.根據權利要求4所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟320中解析過程采用的做法是將十進制ID轉換為二進制,先從B分量的低8位開始存,共能存256個ID,超過部分存入G分量,再超過部分存入R分量。10.根據權利要求9所述的基于柵格結構的空間索引建立方法,其特征在于,所述步驟330中,根據輸入的采用24位RGB顏色參數,不再計算其混合后的顏色(*p++=(((c.r-r)*alpha)+(r《16))》16),而是直接將顏色賦給指針。(*。++=c.r),G分量和B分量也做如上修改,對于要素邊界上的柵格,只要該要素對其壓蓋,就認為該柵格的像素顏色為該要素索引。11.根據權利要求1所述的基于柵格結構的空間索引建立方法,其特征在于,根據所述矢量要素與圖像象素相對應的索引底圖,對于點查詢,只需根據鼠標點選范圍的坐標對應的顏色進行圖像像素到矢量要素的反解析,便得到了與所述圖像像素對應的矢量要素;對于框查詢,只需根據框定點坐標及框的大小確定在緩存中的位置,利用行掃描循環取出相交柵格的顏色進行圖像像素到矢量要素的反解析,便得到了與查詢框相交的矢量要素。12.根據權利要求ll所述的基于柵格結構的空間索引建立方法,其特征在于,當分別取出R、G、B分量后再采用對顏色信息先從R分量的高8位解析,再解析G分量的中間8位,最后解析B分量的低8位。13.—種基于柵格結構的空間索引建立系統,其特征在于,所述系統,包括矢量圖層讀取模塊,用于讀取矢量圖層,獲取組成該矢量圖層所有矢量要素的要素類型和矢量要素的要素索引ID;矢量要素處理模塊,用于根據所述矢量要素的要素類型和要素索引ID,掃描所述矢量要素的輪廓,為柵格化所述矢量要素得到該矢量要素的柵格圖像做準備;索引底圖輸出模塊,用于根據所述矢量要素的要素索引ID解析出的RGB顏色分量,填充所述輪廓,輸出矢量圖層與圖像像素相對應的索引底圖。14.根據權利要求13所述的基于柵格結構的空間索引建立系統,其特征在于,所述矢量圖層讀取模塊,包括OGR/GDAL庫,通過GDAL庫獲取.shp格式的矢量圖層,得到該矢量圖層的圖層信息和地理外包信息以建立數據源;坐標轉換模塊,用于根據所述地理外包信息計算世界坐標系向屏幕坐標系的轉換公式,以便使真實地理數據能夠全部顯示在有限的屏幕內;讀取模塊,用于循環讀取該矢量圖層中的所有矢量要素得到所述矢量要素的索引ID。15.根據權利要求13所述的基于柵格結構的空間索引建立系統,其特征在于,所述矢量要素處理模塊,包括繪制緩存配置模塊,用于定義AGG繪制緩存,設置填充規則;掃描模塊,用于根據定義的AGG繪制緩存,掃描所述矢量要素的輪廓。16.根據權利要求13所述的基于柵格結構的空間索引建立系統,其特征在于,所述索引底圖輸出模塊,包括跨段計算模塊,用于計算填充單元跨段存入繪制緩存;顏色解析模塊,用于根據所述矢量要素的要素索引ID,解析出RGB顏色分量;繪制模塊,用于根據所述填充單元跨段和其對應的RGB顏色分量,填充所述圖像像素,完成索引顏色存入繪制緩存,輸出索引底圖。17.根據權利要求15所述的基于柵格結構的空間索引建立系統,其特征在于,所述掃描模塊,包括坐標計算模塊,用于利用坐標轉換通道對所述矢量要素進行坐標轉換;計算模塊,用于根據轉換后的坐標,掃描矢量要素輪廓,計算輪廓線所覆蓋像素的權值和覆蓋面積。18.根據權利要求17所述的基于柵格結構的空間索引建立系統,其特征在于,所述坐標計算模塊,采用的方法是將原整數柵格再細分為256X256個小單位,通過將雙精度型數據左移八位與255做"與"操作,將小數部分轉化到0-255之間的數。19.根據權利要求17所述的基于柵格結構的空間索引建立系統,其特征在于,所述計算模塊采用亞像素精度的Bresenham生成直線算法。20.根據權利要求16所述的基于柵格結構的空間索引建立系統,其特征在于,所述跨段計算模塊,執行下列操作將所有生成輪廓的單元格進行排序,然后按照行掃描順序從最小行到最大行逐行掃描;利用圖形對每個掃描柵格點的覆蓋面積area進行判斷,area等于0說明該圖形未壓蓋此像素,無需填充;Area不等于O說明該圖形部分壓蓋或全部壓蓋了此像素,需要掃描存進繪制控制器中;對于未完全填充的柵格利用adcLcell()函數進行標記,對于完全填充的柵格利用add—span()函數進行標記。21.根據權利要求16所述的基于柵格結構的空間索引建立系統,其特征在于,所述顏色解析模塊,采用的做法是將十進制ID轉換為二進制,先從B分量的低8位開始存,共能存256個ID,超過部分存入G分量,再超過部分存入R分量。22.根據權利要求16所述的基于柵格結構的空間索引建立系統,其特征在于,所述繪制模塊,根據輸入的采用24位RGB顏色參數,不再計算其混合后的顏色<formula>formulaseeoriginaldocumentpage4</formula>而是直接將顏色賦給指針<formula>formulaseeoriginaldocumentpage4</formula>,G分量和B分量也做如上修改,對于要素邊界上的柵格,只要該要素對其壓蓋,就認為該柵格的像素顏色為該要素索引。23.根據權利要求13所述的基于柵格結構的空間索引建立系統,其特征在于,所述系統,還包括搜索模塊,用于根據所述矢量要素與圖像象素相對應的索引底圖,對于點查詢,只需根據鼠標點選范圍的坐標對應的顏色進行圖像像素到矢量要素的反解析,便得到了與所述圖像像素對應的矢量要素;對于框查詢,只需根據框定點坐標及框的大小確定在緩存中的位置,利用行掃描循環取出相交柵格的顏色進行圖像像素到矢量要素的反解析,便得到了與查詢框相交的矢量要素。24.根據權利要求23所述的基于柵格結構的空間索引建立系統,其特征在于,所述搜索模塊,分別取出R、G、B分量后再采用對顏色信息先從R分量的高8位解析,再解析G分量的中間8位,最后解析B分量的低8位。全文摘要本發明公開了一種基于柵格結構的空間索引建立方法和系統。所述方法,包括下列步驟讀取矢量圖層,獲取組成該圖層所有矢量要素的要素類型和矢量要素的要素索引ID;根據所述矢量要素的要素類型和要素索引ID,柵格化所述矢量要素得到該矢量要素的柵格圖像,柵格化的過程包括掃描所述矢量要素的輪廓;根據所述矢量要素的要素索引ID解析出的RGB顏色分量,填充所述柵格圖像,輸出矢量圖層與圖像像素相對應的索引底圖。文檔編號G06T11/00GK101719154SQ200910243478公開日2010年6月2日申請日期2009年12月24日優先權日2009年12月24日發明者方金云,程振林,董慧,趙艷偉申請人:中國科學院計算技術研究所