本發(fā)明屬于地理信息科學(xué)領(lǐng)域,尤其涉及空間矢量數(shù)據(jù)生成方法及裝置。
背景技術(shù):
在地理信息科學(xué)(Geographic Information Science,GIS)中,空間矢量數(shù)據(jù)是GIS重要的數(shù)據(jù)源,是進(jìn)行空間數(shù)據(jù)處理與分析的基礎(chǔ)。而在二維GIS中,面狀矢量數(shù)據(jù)又是最復(fù)雜的地理實(shí)體的表達(dá)形式,其自動(dòng)生成的方式已從傳統(tǒng)的幾何構(gòu)建方式向拓?fù)錁?gòu)建方式轉(zhuǎn)換,以保證數(shù)據(jù)間拓?fù)潢P(guān)系的正確性。
面狀矢量數(shù)據(jù)生成以后,有時(shí)需要對(duì)空間距離相近或具有相同屬性的多邊形進(jìn)行合并,這是制圖綜合領(lǐng)域中的重要算子。目前的面狀矢量數(shù)據(jù)的合并算法的完備性與合并的結(jié)果較為理想,但并未考慮到城市功能單元面狀矢量數(shù)據(jù)生成的特殊性。城市功能單元面狀矢量數(shù)據(jù)創(chuàng)建的數(shù)據(jù)基礎(chǔ)是各類建筑物多邊形,建筑物多邊形基本不存在自交,疊置等狀態(tài)?!盎贒elaunay三角網(wǎng)的多邊形合并算法”與“基于矢量游走的多邊形合并算法”的合并過程相對(duì)復(fù)雜,合并效率偏低;其次,部分景觀型建筑物含有島,“凸包演化算法”對(duì)含有島的多邊形處理效果不佳,因此同樣不適合于城市功能單元面狀矢量數(shù)據(jù)的生成。因此,針對(duì)城市建筑物這一類型多邊形的合并算法缺乏針對(duì)性的研究。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供空間矢量數(shù)據(jù)的生成方法及裝置,旨在解決目前建筑物多邊形的合并過程效率低的問題。
本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種空間矢量數(shù)據(jù)生成方法,包括:
將地址樹中所有的節(jié)點(diǎn)分成已生成矢量數(shù)據(jù)節(jié)點(diǎn)和未生成矢量數(shù)據(jù)節(jié)點(diǎn)并生成各自的列表,所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)包括建筑物節(jié)點(diǎn),所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)包括城市功能單元節(jié)點(diǎn);
遍歷所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表,利用所述建筑物節(jié)點(diǎn)的矢量數(shù)據(jù),生成所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
將生成了所述面狀矢量數(shù)據(jù)的城市功能單元節(jié)點(diǎn)從所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表中移除,并添加到所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)的列表中;
在所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表結(jié)束一次遍歷后,創(chuàng)建一個(gè)矢量圖層來存儲(chǔ)所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
重復(fù)上述遍歷過程,直到所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表為空。
本發(fā)明實(shí)施例的另一目的在于提供一種空間矢量數(shù)據(jù)生成裝置,包括:
分類單元,用于將地址樹中所有的節(jié)點(diǎn)分成已生成矢量數(shù)據(jù)節(jié)點(diǎn)和未生成矢量數(shù)據(jù)節(jié)點(diǎn)并生成各自的列表,所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)包括建筑物節(jié)點(diǎn),所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)包括城市功能單元節(jié)點(diǎn);
生成單元,用于遍歷所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表,利用所述建筑物節(jié)點(diǎn)的矢量數(shù)據(jù),生成所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
更換單元,用于將生成了所述面狀矢量數(shù)據(jù)的城市功能單元節(jié)點(diǎn)從所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表中移除,并添加到所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)的列表中;
存儲(chǔ)單元,用于在所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表結(jié)束一次遍歷后,創(chuàng)建一個(gè)矢量圖層來存儲(chǔ)所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
重復(fù)上述遍歷過程,直到所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表為空。
在本發(fā)明實(shí)施例中,利用已有的建筑物矢量數(shù)據(jù)和地址樹結(jié)構(gòu)來快速生成城市功能單元的面狀矢量數(shù)據(jù),該方法提高了城市功能單元面狀矢量數(shù)據(jù)的生成效率,從而能夠準(zhǔn)確迅速地完善城市地理空間目標(biāo)體系數(shù)據(jù)集。
附圖說明
圖1是本發(fā)明實(shí)施例提供的城市功能單元層次示意圖;
圖2是本發(fā)明實(shí)施例提供的空間矢量數(shù)據(jù)生成方法的流程圖;
圖3是本發(fā)明實(shí)施例提供的城市功能單元空間矢量數(shù)據(jù)與其它數(shù)據(jù)之間的拓?fù)潢P(guān)系示意圖;
圖4是本發(fā)明實(shí)施例提供的地址樹結(jié)構(gòu)圖;
圖5是本發(fā)明實(shí)施例提供的最小距離合并法的流程圖;
圖6是本發(fā)明實(shí)施例提供的最小距離合并法的算法流程圖;
圖7是本發(fā)明實(shí)施例提供的城市功能單元空間矢量數(shù)據(jù)自動(dòng)生成的算法流程圖;
圖8本發(fā)明實(shí)施例提供的空間矢量數(shù)據(jù)生成裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實(shí)施例在于生成城市功能單元的空間矢量數(shù)據(jù),建立完整的城市功能體系結(jié)構(gòu)數(shù)據(jù)集,所述城市功能單元介于行政區(qū)劃與建筑物之間。
具體地,如圖1所示,行政區(qū)、街道、社區(qū)、管理網(wǎng)格(部分城市)為一個(gè)城市的行政區(qū)劃單元,位于城市結(jié)構(gòu)體系的上層。它們類似于容器自上而下包含著城市中的各個(gè)要素。底層的建筑物類似于元胞,是構(gòu)成城市各類功能模塊的基本單元。城市功能單元介于行政區(qū)劃與建筑物之間,它將城市中距離相近且功能相似的若干建筑物組合起來,形成具有特定功能的建筑集群,如:學(xué)校、醫(yī)院、居民小區(qū)、工廠等;城市功能單元之間亦可進(jìn)行重復(fù)組合,形成功能更為豐富的建筑集群,如:商業(yè)區(qū)、居住區(qū)、高新園區(qū)等。同時(shí),各類城市功能單元必須包含在上層的行政區(qū)劃單元以內(nèi)。從而,形成完整的城市功能體系結(jié)構(gòu)。
圖2是本發(fā)明實(shí)施例提供的空間矢量數(shù)據(jù)的生成方法的流程圖,詳述如下:
在S201中,將地址樹中所有的節(jié)點(diǎn)分成已生成矢量數(shù)據(jù)節(jié)點(diǎn)和未生成矢量數(shù)據(jù)節(jié)點(diǎn)并生成各自的列表,所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)包括建筑物節(jié)點(diǎn),所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)包括城市功能單元節(jié)點(diǎn)。
在所述將地址樹中所有的節(jié)點(diǎn)分成已生成矢量數(shù)據(jù)節(jié)點(diǎn)和未生成矢量數(shù)據(jù)節(jié)點(diǎn)并生成各自的列表之前還包括:
利用文本地址構(gòu)建地址樹,所述文本地址是利用文本的形式表示的地址。
具體地,如圖3所示,地址樹是通過海量標(biāo)準(zhǔn)地址數(shù)據(jù)庫(kù)中的文本地址數(shù)據(jù),通過自動(dòng)分詞技術(shù)將文本地址切分成若干地理實(shí)體概念,并根據(jù)地理實(shí)體所表示的空間尺度大小形成地址樹結(jié)構(gòu)。在地址樹中,空間尺度越大的地理實(shí)體位于地址樹的上層節(jié)點(diǎn)(如:深圳市、福田區(qū)、南山區(qū)、寶安區(qū)等);空間尺度越小的地理實(shí)體(一般是各類建筑物)位于地址樹的底層節(jié)點(diǎn)。
在S202中,遍歷所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表,利用所述建筑物節(jié)點(diǎn)的矢量數(shù)據(jù),生成所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù)。
如圖4所示,所有的建筑物節(jié)點(diǎn)位于葉子節(jié)點(diǎn),由它們來生成各自父節(jié)點(diǎn)(城市功能單元節(jié)點(diǎn))的空間矢量數(shù)據(jù),即父節(jié)點(diǎn)約束子節(jié)點(diǎn),S父>=S子1+S子2+…S子n;而地址樹中上層的節(jié)點(diǎn)(行政區(qū)劃節(jié)點(diǎn))將對(duì)生成的矢量數(shù)據(jù)進(jìn)行約束,即該行政區(qū)劃節(jié)點(diǎn)下的所有城市功能單元節(jié)點(diǎn)應(yīng)被包含其中。
具體地,79棟和82棟建筑物節(jié)點(diǎn)形成鵲山工業(yè)區(qū)城市功能單元節(jié)點(diǎn),鵲山工業(yè)區(qū)城市功能單元節(jié)點(diǎn)約束79棟和82棟建筑物節(jié)點(diǎn),同時(shí)鵲山工業(yè)區(qū)城市功能單元節(jié)點(diǎn)受到大浪街道行政區(qū)劃節(jié)點(diǎn)的約束;172棟、173棟和174棟建筑物節(jié)點(diǎn)形成金盈新村城市功能單元節(jié)點(diǎn),金盈新村城市功能單元節(jié)點(diǎn)約束172棟、173棟和174棟建筑物節(jié)點(diǎn),同時(shí)金盈新村城市功能單元節(jié)點(diǎn)受到大浪街道行政區(qū)劃節(jié)點(diǎn)的約束。
若所述建筑物節(jié)點(diǎn)所形成的城市功能單元節(jié)點(diǎn)隸屬于單一的城市規(guī)劃圖斑或土地利用圖斑,那么所述單一的城市規(guī)劃圖斑或土地利用圖斑為生成的城市功能單元面狀矢量數(shù)據(jù)。
所述圖斑指的是:以1:10000地形圖作為工作底圖,將地貌、土地利用類型基本相同,水土流失類型基本一致的土地單元(地塊)分為一類,以其為基礎(chǔ)調(diào)查單元,然后將單元勾繪到地形圖上成為圖斑。圖像分割或者矢量圖套合,將整個(gè)影像劃分成若干個(gè)小的區(qū)域,這樣的區(qū)域一般叫做圖斑或者像斑?;蛘邌我坏仡惖貕K,以及被行政界線、土地權(quán)屬界線或線狀地物分割的單一地類地塊稱為圖斑。
若所述建筑物所形成的城市功能單元有明確的邊界數(shù)據(jù)信息,所述邊界數(shù)據(jù)為生成的城市功能單元面狀矢量數(shù)據(jù)。
若所述建筑物所形成的城市功能單元既不隸屬于單一的城市規(guī)劃圖斑或土地利用圖斑,也沒有明確的邊界數(shù)據(jù)信息,那么采用最小距離合并法生成城市功能單元的面狀矢量數(shù)據(jù)。
如圖5所示,所述采用最小距離合并法生成城市功能單元的面狀矢量數(shù)據(jù)包括:
S501:從建筑物圖形中,任意選出一個(gè)作為起始拼接圖形;
S502:計(jì)算所述起始拼接圖形與其余建筑物圖形的距離并定位出與所述起始拼接圖形最鄰近的另一個(gè)建筑物圖形;
S503:拼接這兩個(gè)最鄰近的建筑物圖形,生成一個(gè)過渡的面狀矢量數(shù)據(jù);
將所述過渡的面狀矢量數(shù)據(jù)作為新的起始拼接圖形,返回執(zhí)行所述計(jì)算所述起始拼接圖形與其余建筑物圖形的距離并定位出與所述起始拼接圖形最鄰近的另一個(gè)建筑物圖形的操作,直到屬于同一個(gè)城市功能單元的建筑物全部拼接完成。
圖6提供了本發(fā)明實(shí)施例最小距離合并法的算法流程圖。
其中,UnMergeList<IPolygon>表示待拼接的若干建筑物矢量圖形;
UnMergeList.Count>0表示待拼接的若干建筑物矢量圖形數(shù)量大于0;
UnMergeList[i]表示從若干建筑物矢量圖形中任選一個(gè)圖形;
MergePolygon==null表示已拼接的建筑物矢量圖形未形成,即所述過渡的面狀矢量數(shù)據(jù)還未形成;
MergePolygon=UnMergeList[i]表示將未拼接的建筑物矢量圖形拼接到已拼接的建筑物矢量圖形上;
MergePolygon=Combine(UnMergeList[i],MergePolygon)表示拼接兩個(gè)最近距離的建筑物矢量圖形;
UnMergeList.Remove(UnMergeList[i])表示移除未拼接的建筑物矢量圖形進(jìn)行拼接后將其移除未拼接建筑物矢量圖形。
在S203中,將生成了所述面狀矢量數(shù)據(jù)的城市功能單元節(jié)點(diǎn)從所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表中移除,并添加到所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)的列表中。
在S204中,在所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表結(jié)束一次遍歷后,創(chuàng)建一個(gè)矢量圖層來存儲(chǔ)所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù)。
重復(fù)上述遍歷過程,直到所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表為空。
本發(fā)明實(shí)施例還包括:
建立城市功能單元面狀矢量數(shù)據(jù)的空間拓?fù)潢P(guān)系,從而形成完整的城市功能體系結(jié)構(gòu)數(shù)據(jù)集。
所述建立城市功能單元面狀矢量數(shù)據(jù)的空間拓?fù)潢P(guān)系需滿足條件:
1)同一層次的城市功能單元面狀矢量數(shù)據(jù)不能重疊;
2)各層次城市功能單元面狀矢量數(shù)據(jù)應(yīng)包含于行政區(qū)劃節(jié)點(diǎn)內(nèi)部。
圖7提供了本發(fā)明實(shí)施例城市功能單元空間矢量數(shù)據(jù)自動(dòng)生成的算法流程圖。
其中DoList<ITreeNode>表示已生成矢量數(shù)據(jù)節(jié)點(diǎn);
UndoDoList<ITreeNode>表示未生成矢量數(shù)據(jù)節(jié)點(diǎn);
i=0表示將i賦值0;
i<UndoDoList.Count表示i小于未生成數(shù)量數(shù)據(jù)節(jié)點(diǎn)數(shù)量;
DoList.Add(ITreeNode[i])UndoList.Remove(ITreeNode[i])表示生成城市功能單元后將未生成矢量數(shù)據(jù)節(jié)點(diǎn)從未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表移除并添加到已生成矢量數(shù)據(jù)節(jié)點(diǎn)列表;
i++表示i+1;
UndoList.Count==0表示未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表為空。
對(duì)應(yīng)于該發(fā)明實(shí)施例提供的空間矢量數(shù)據(jù)生成方法,圖8示出了本發(fā)明實(shí)施例提供的空間矢量數(shù)據(jù)生成裝置的結(jié)構(gòu)框圖,為了便于說明,僅示出了與本實(shí)施例相關(guān)的部分。
參照?qǐng)D8,該裝置包括:
分類單元81,用于將地址樹中所有的節(jié)點(diǎn)分成已生成矢量數(shù)據(jù)節(jié)點(diǎn)和未生成矢量數(shù)據(jù)節(jié)點(diǎn)并生成各自的列表,所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)包括建筑物節(jié)點(diǎn),所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)包括城市功能單元節(jié)點(diǎn);
生成單元82,用于遍歷所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表,利用所述建筑物節(jié)點(diǎn)的矢量數(shù)據(jù),生成所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
更換單元83,用于將生成了所述面狀矢量數(shù)據(jù)的城市功能單元節(jié)點(diǎn)從所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表中移除,并添加到所述已生成矢量數(shù)據(jù)節(jié)點(diǎn)的列表中;
存儲(chǔ)單元84,用于在所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表結(jié)束一次遍歷后,創(chuàng)建一個(gè)矢量圖層來存儲(chǔ)所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
重復(fù)上述遍歷過程,直到所述未生成矢量數(shù)據(jù)節(jié)點(diǎn)列表為空。
在所述分類單元81之前還包括:
構(gòu)建單元,用于利用文本地址構(gòu)建地址樹,所述文本地址是利用文本的形式表示的地址。
所述生成單元82包括:
利用所述建筑物節(jié)點(diǎn)的矢量數(shù)據(jù)生成城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
將所述城市功能單元所隸屬的單一的城市規(guī)劃圖斑或土地利用圖斑確定為所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù)。
所述生成單元82包括:
利用所述建筑物節(jié)點(diǎn)的矢量數(shù)據(jù)生成城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù);
將所述建筑物節(jié)點(diǎn)生成的城市功能單元的邊界數(shù)據(jù)信息確定為所述城市功能單元節(jié)點(diǎn)的面狀矢量數(shù)據(jù)。
所述生成單元82包括采用最小距離合并法生成城市功能單元的面狀矢量數(shù)據(jù),所述采用最小距離合并法生成城市功能單元的面狀矢量數(shù)據(jù)包括:
選擇單元,用于從建筑物圖形中,任意選出一個(gè)作為起始拼接圖形;
計(jì)算單元,用于計(jì)算所述起始拼接圖形與其余建筑物圖形的距離并定位出與所述起始拼接圖形最鄰近的另一個(gè)建筑物圖形;
拼接單元,用于拼接這兩個(gè)最鄰近的建筑物圖形,生成一個(gè)過渡的面狀矢量數(shù)據(jù);
將所述過渡的面狀矢量數(shù)據(jù)作為新的起始拼接圖形,返回執(zhí)行所述計(jì)算單元的操作,直到屬于同一個(gè)城市功能單元的建筑物全部拼接完成。
在本發(fā)明實(shí)施例中,利用已有的建筑物矢量數(shù)據(jù)、行政區(qū)劃矢量數(shù)據(jù)和地址樹結(jié)構(gòu)來快速生成城市功能單元的面狀矢量數(shù)據(jù),該方法使得建筑物多邊形的合并過程效率提高,進(jìn)而提高了城市功能單元面狀矢量數(shù)據(jù)的生成效率,從而能夠準(zhǔn)確迅速地完善城市地理空間目標(biāo)體系數(shù)據(jù)集。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。