本發(fā)明涉及地理信息技術(shù)領(lǐng)域,尤其涉及基于多源地圖整合的地圖生成方法以及裝置。
背景技術(shù):
目前基于網(wǎng)絡(luò)的視頻監(jiān)控技術(shù)的發(fā)展使得大量的視頻監(jiān)控資源能夠被整合起來,各個攝像機的監(jiān)控錄像能夠在監(jiān)控平臺中被調(diào)取,同時應(yīng)用電子地圖可以使各個攝像機的空間位置能夠以一種十分直觀的方式顯現(xiàn),相比傳統(tǒng)的監(jiān)控平臺,基于電子地圖的監(jiān)控平臺能夠提供更好的用戶體驗,更加直觀的顯示,以及更好的功能。
由于視頻監(jiān)控行業(yè)用戶需求的多樣性,使得用戶對私有地圖接入的需求十分強烈,用戶所提供的地圖形式有遙感圖、CAD圖以及圖片等,區(qū)域范圍從園區(qū)到省市不等。由于用戶所提供的地圖具有十分強的針對性,即只在其關(guān)心的部分詳細,其不關(guān)心的方面往往存在較大瑕疵,在用戶體驗上往往不是很好。小區(qū)域地圖例如地鐵CAD圖,一般只在站點處詳細標注,而非地鐵區(qū)域則是空白;大區(qū)域地圖如遙感圖,用戶提供的遙感圖無標注信息,對于不熟悉當?shù)氐挠脩羰褂檬植环奖恪H绻軌驅(qū)AD圖與互聯(lián)網(wǎng)地圖進行整合,在地鐵區(qū)域展示CAD圖,其他區(qū)域展示互聯(lián)網(wǎng)地圖,對遙感圖疊加標注信息,這對用戶體驗的提升是十分有意義的。
開放地理信息系統(tǒng)聯(lián)盟(Open Geospatial Consortium,縮寫為OGC)制定了一套與空間信息、基于位置服務(wù)相關(guān)的標準(即OGC標準),在這套標準中包含了定義地圖發(fā)布的相應(yīng)規(guī)范,稱為Web地圖服務(wù)(Web map service,縮寫為WMS)規(guī)范。該規(guī)范利用具有地理空間位置信息的數(shù)據(jù)制作地圖,其中將地圖定義為地理數(shù)據(jù)可視的表現(xiàn)。這個規(guī)范定義了三個操作:GetCapabitities操作,用于返回服務(wù)級元數(shù)據(jù),它是對服務(wù)信息內(nèi)容和要求參數(shù)的一種描述;GetMap操作,用于返回一個地圖影像,其地理空間 參考和大小參數(shù)是明確定義了的;GetFeatureInfo操作,用于返回顯示在地圖上的某些特殊要素的信息。其中,前兩個操作為必要操作,最后一者為可選操作。
在目前的地圖服務(wù)中,如果按照WMS規(guī)范發(fā)布地圖,則這種發(fā)布方式屏蔽了底層的像素坐標與經(jīng)緯度坐標計算,通過接口的方式返回地圖,系統(tǒng)通過調(diào)用接口的方式與地圖提供方的服務(wù)器進行交互,不斷地向服務(wù)器發(fā)送請求獲取指定區(qū)域的圖片,系統(tǒng)的客戶端根據(jù)所獲取的圖片以及相應(yīng)的參數(shù)將地圖顯示在界面中。理論上而言,這種方式屏蔽了不同投影坐標系之間的換算,在實現(xiàn)上只需要完成圖像的重采樣即可實現(xiàn)不同源地圖的整合顯示。
但是,這種地圖的發(fā)布方式要求地圖提供方必須按照WMS方案提供服務(wù),而實際上互聯(lián)網(wǎng)地圖大部分并未嚴格執(zhí)行OGC標準,使得這一技術(shù)方案無從執(zhí)行。因此,用戶所提供的不同來源的地圖,由于存在地圖發(fā)布不規(guī)范,尤其是切片方案不統(tǒng)一的問題,無法通過簡單的重采樣來生成理想的地圖。
另外,當具備WMS規(guī)范所定義的服務(wù)時,客戶端需要根據(jù)對方服務(wù)器返回的地圖實時進行重采樣、圖像處理等工作,這對系統(tǒng)的客戶端產(chǎn)生一定的負荷,很容易造成用戶使用地圖時不流暢。
在地圖編繪過程中,地圖投影變換是一個重要組成部分,它主要研究從一種地圖投影變換成另一種地圖投影的理論和方法,其實質(zhì)是建立兩平面場之間及鄰域雙向連續(xù)點的一一對應(yīng)關(guān)系。
地圖的投影變換包括兩個部分,一個是不同投影坐標系之間的換算,另一個則是圖像的重采樣,其中前部分是整個地圖投影變換的核心。不同投影坐標系之間的換算包括數(shù)值變換法和解析變換法。目前中小區(qū)域地圖坐標系與地理坐標系之間的換算效率較高的是數(shù)值變換法,而全球范圍的地圖,特別是商業(yè)地圖,使用數(shù)值變換法很容易使地圖精度產(chǎn)生偏差(方程擬合較差),即便在瓦片的每一層加入偏移參數(shù)也很難保證精度在全球范圍內(nèi)精度不損失,分區(qū)域擬合成本十分高,同時這種地圖在地圖投影時在部分參數(shù)的選擇上并未采用已知公開參數(shù),并且人為地對地圖數(shù)據(jù)進行加偏處理,這對于這種地圖的解算都產(chǎn)生了十分大的困難。解析變換法又包括正解變換法以及反解變換法。如圖1所示正解變換法直接建立兩個坐 標系之間的轉(zhuǎn)換關(guān)系,在視頻監(jiān)控行業(yè),由于接入地圖的多樣性,使用正解變換法成本較高;而反解變換法如圖2所示,則是分別計算出兩個地圖的像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系,通過經(jīng)緯度坐標系作為中間轉(zhuǎn)換坐標系完成兩個坐標系之間的互轉(zhuǎn),這種變換法可以在保證精度的前提下降低成本,其中將一個地圖的像素坐標系向經(jīng)緯度坐標系轉(zhuǎn)換的這一過程稱為地圖的接入。
技術(shù)實現(xiàn)要素:
為了能夠為用戶提供具有詳細信息的私人定制地圖,針對已知投影方式的地圖,本發(fā)明提供了一種地圖的生成方法,將不同來源的地圖整合顯示。
一種基于多源地圖整合的地圖生成方法,包括對瓦片進行重采樣生成地圖的最終步驟,所述地圖生成方法在最終步驟之前還包括步驟:
對于待整合的至少兩個地圖,指定用于接入地圖的經(jīng)緯度坐標系,判斷每個待整合地圖的像素坐標系和經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系是否已知,對于轉(zhuǎn)換關(guān)系未知的地圖,建立地圖像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系,再接入該地圖;
選擇其中一個地圖的切片方案作為目標切片方案,對所有非目標切片方案的地圖重投影,生成采用目標切片方案的瓦片。
本發(fā)明針對的待整合地圖是已知投影方式的地圖。由于地圖在整合顯示時需要以同樣的切片方案進行顯示,不同來源的多個地圖所采用的切片方案可能存在不同,且切片方案可能已知也可能未知。一些地圖采用了谷歌Online切片方案,這些地圖的像素坐標系到投影坐標系以及經(jīng)緯度坐標系之間存在精確的轉(zhuǎn)換公式,且轉(zhuǎn)換公式公開。而另一些地圖例如百度地圖,其像素坐標到經(jīng)緯度坐標之間沒有公開的轉(zhuǎn)換公式。如果各地圖像素坐標系到經(jīng)緯度坐標系之間的關(guān)系均已知,即使切片方案不同,也可以利用已知的轉(zhuǎn)換公式接入地圖并精確地轉(zhuǎn)換至目標切片方案;而對于轉(zhuǎn)換關(guān)系未知的,則要通過經(jīng)緯度坐標系建立起轉(zhuǎn)換關(guān)系。
進一步而言,地圖像素坐標系與經(jīng)緯度坐標之間轉(zhuǎn)換關(guān)系的建立包括如下步驟:
根據(jù)地圖的投影方式獲得經(jīng)緯度坐標系與投影坐標系之間的轉(zhuǎn)換公式,以進行經(jīng)緯度坐標系與投影坐標系之間的互轉(zhuǎn);
利用地圖上采集的樣本點建立地圖的像素坐標系與投影坐標系之間的轉(zhuǎn)換方程式,以進行像素坐標系與投影坐標系之間的互轉(zhuǎn)。
其中,地理坐標系(Geographic Coordinate System),也稱為經(jīng)緯度坐標系,是使用三維球面來定義地球表面位置,以實現(xiàn)通過經(jīng)緯度對地球表面點位引用的坐標系。一個地理坐標系包括角度測量單位、本初子午線和參考橢球體三部分。
投影坐標系(Projected Coordinate Systems)使用基于X,Y值的坐標系統(tǒng)來描述地球上某個點所處的位置。這個坐標系是從地球的近似橢球體投影得到的,它對應(yīng)于某個地理坐標系。
像素坐標系是指地圖經(jīng)渲染之后生成的地圖圖像像素構(gòu)成的坐標系,通常該坐標系以左上角為原點。
在實現(xiàn)地圖的像素坐標與經(jīng)緯度坐標系之間的互轉(zhuǎn)過程中,由于地圖的投影方式已知,因此可以通過查詢得到投影坐標系與經(jīng)緯度坐標系之間存在明確的轉(zhuǎn)換公式,但是地圖的像素坐標系與投影坐標系之間的轉(zhuǎn)換關(guān)系是未知的,需要采集樣本點來建立兩者之間滿足一定精度要求的轉(zhuǎn)換方程式。其中,樣本點個數(shù)為若干個,為了提高精度,樣本點個數(shù)為多個。視需要可以求取樣本點坐標值的平均值進行方程式的建立。
為了保證精度滿足要求,作為一種優(yōu)選方式,投影坐標系與像素坐標系之間轉(zhuǎn)換方程式的建立包括如下步驟:
設(shè)(x,y)為投影坐標系中任意一點,則該點在像素坐標系的坐標為(px,py),建立投影坐標系與像素坐標系之間的二元一次方程組:
x=px*C1+C2
y=py*C3+C4
其中,方程系數(shù)C1,C2,C3及C4通過代入樣本點的投影坐標值及像素坐標值來確定;
利用二元一次方程組接入地圖,驗證接入后的地圖是否滿足精度要求:如果是,將所述二元一次方程組作為所述的坐標轉(zhuǎn)換方程式;否則,選取多個樣本點,對樣本點采用最小二乘法擬合回歸方程,所得二元二次 的回歸方程作為轉(zhuǎn)換方程式。
由于投影坐標系與像素坐標系之間的轉(zhuǎn)換關(guān)系滿足線性關(guān)系,出于效率方面考慮,首先建立投影坐標系與像素坐標系之間的二元一次方程組,利用二元一次方程組接入地圖后,通過現(xiàn)有手段比對地圖的經(jīng)緯度坐標值是否反映實際的地理坐標值來進行驗證。這一比對過程人工完成,比對方法包括選取地圖上若干位置的點,利用這些點的經(jīng)緯度坐標值在已知高精度地圖上查找對應(yīng)的位置,比較兩者是否為同一地理位置。在擬合回歸方程的過程中,為了提高精度,較佳而言,樣本點的個數(shù)多于三十個。
樣本點的投影坐標值及像素坐標值獲取方式為,在所述地圖中選取樣本點,得到樣本點在所述地圖中的像素坐標值,指定一個已知像素坐標系到經(jīng)緯度坐標系之間轉(zhuǎn)換關(guān)系的地圖,在該地圖中查找樣本點的經(jīng)緯度坐標值,并利用所述的已知切片方案將經(jīng)緯度坐標值轉(zhuǎn)換為所述投影坐標系中的投影坐標值。其中樣本點的選取以及在已知切片方案的地圖中經(jīng)緯度值的查找也是通過人工完成。
如果地圖的像素坐標系到經(jīng)緯度坐標系之間的關(guān)系不是已知,則該地圖還可能存在加密,其中加密是指對于地圖上的點基于一定的數(shù)學法則進行偏移。因此,進一步而言,對于像素坐標系和經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系未知的地圖,所述地圖生成方法還包括判斷地圖是否經(jīng)過加密的步驟,對于經(jīng)過加密的地圖,還包括通過加密和解密算法消除加密影響的步驟。對于現(xiàn)有的地圖而言,可以通過查詢相關(guān)資料判斷地圖是否經(jīng)過加密并確定相應(yīng)的加密函數(shù)。對于無法查詢得到加密函數(shù)的地圖,事實上不能夠進行接入,因此本發(fā)明針對的是加密函數(shù)可以獲得的地圖。
對于加密的地圖,需要消除其加密影響,使用戶在使用地圖時感知不到加密。進一步而言,通過加密和解密算法消除加密影響的方法包括如下步驟:
根據(jù)地圖的加密算法將經(jīng)緯度坐標系加密得到加密坐標系,并根據(jù)地圖的投影方式,獲得加密坐標系與投影坐標系之間的轉(zhuǎn)換公式,以進行加密坐標系與投影坐標系之間的互轉(zhuǎn);
調(diào)用解密算法將加密坐標系轉(zhuǎn)換至經(jīng)緯度坐標系。
其中加密坐標系至經(jīng)緯度坐標系之間方法有多種,但是考慮到效率問題,作為一種優(yōu)選,調(diào)用的解密算法為,對于加密坐標系中任意一點(x′,y′),迭代查找該點在經(jīng)緯度坐標系中的坐標值(x,y),使迭代得到的目標坐標值滿足g(x,y)小于預定精度值,其中g(shù)(x,y)=Abs(x′-x)+Abs(y′-y),其中迭代查找目標坐標值方法為,設(shè)定經(jīng)緯度坐標值x的初始值域區(qū)間為[x′-c,x′+c],y的初始值域區(qū)間為[y′-c,y′+c],其中c為指定值,在每次迭代中計算出各值域區(qū)間的中間值作為初始的目標坐標值代入g(x,y),并判斷所得g(x,y)是否滿足小于預定精度值:如果滿足,則將所得中間值作為最終的目標坐標值并結(jié)束迭代;否則,利用所得中間值縮小下一次迭代的值域區(qū)間范圍,進入下一次迭代。
其中,預設(shè)精度視需要設(shè)定,例如為0.00000001。
這種方法事實上是改進的二分法。二分法的核心在于,在對目標值查找的同時,縮小查找的范圍,一般將范圍縮小一半,從而達到高效找到目標值的效果。在一元二分法算法中需要確定一個區(qū)間[a,b],其中必須滿足f(a)*f(b)<0,而二元二分法則是確定一個區(qū)域,根據(jù)偏移程度,可以設(shè)區(qū)域為[x′-c,x′+c],[y′-c,y′+c],一般偏移不會超過0.5度。
在縮小區(qū)間范圍時,各個值域區(qū)間的上限或下限發(fā)生變化,由于x′與y,y′與x并非無關(guān),變量與因變量之間存在著十分弱的相關(guān)性,x的變化會對y′產(chǎn)生影響,y的變化也會對x′產(chǎn)生影響,這會使得二分法在迭代的過程中x,y區(qū)間可能不包含目標坐標值,在較低的概率下,算法無法退出循環(huán),所以算法需要在每次迭代計算中加入值域區(qū)間的回退機制,以使值域區(qū)間在每次迭代的過程中都能包含目標坐標值。
進一步而言,利用所得中間值縮小下一次迭代的值域區(qū)間范圍的方法包括:
對于經(jīng)緯度坐標值x的值域區(qū)間,設(shè)值域區(qū)間上限為x′上限,值域區(qū)間下限為x′下限,判斷中間值x′中間值與的x′關(guān)系:如果x′中間值>x′,則將區(qū)間中間值設(shè)置為下一次迭代的值域區(qū)間上限,并且在滿足Abs(x′上限-x′下限)小于第一預設(shè)值且Abs(x′中間值-x′)大于第二預設(shè)值時,對區(qū)間上限x′上限進 行回退,x′上限=x′上限+d;否則,將區(qū)間中間值設(shè)為下一次迭代的值域區(qū)間下限,并且在滿足Abs(x′上限-x′下限)小于第一預設(shè)值且Abs(x′中間值-x′)大于第二預設(shè)值時,對區(qū)間下限值x′下限進行回退,x′下限=x′下限-d;
對于經(jīng)緯度坐標值y的值域區(qū)間,設(shè)值域區(qū)間上限為y′上限,值域區(qū)間下限為y′下限,判斷中間值y′中間值與的y′關(guān)系:如果y′中間值>y′,則將區(qū)間中間值設(shè)置為下一次迭代的值域區(qū)間上限,并且在滿足Abs(y′上限-y′下限)小于第一預設(shè)值且Abs(y′中間值-y′)大于第二預設(shè)值時,對區(qū)間上限y′上限進行回退,y′上限=y(tǒng)′上限+d;否則,將區(qū)間中間值設(shè)為下一次迭代的值域區(qū)間下限,并且在滿足Abs(x′上限-x′下限)小于第一預設(shè)值且Abs(x′中間值-x′)大于第二預設(shè)值時,對區(qū)間下限值y′下限進行回退,y′下限=y(tǒng)′下限-d;
其中第一預設(shè)值小于第二預設(shè)值,d為指定常量。
第一預設(shè)值及第二預設(shè)值根據(jù)經(jīng)驗進行取值,通常第一預設(shè)值為預設(shè)精度值的五分之一,第二預設(shè)值為預設(shè)精度值的二分之一。d視需要設(shè)定,例如可以為0.01。
本發(fā)明還提供了一種地圖生成裝置,利用本發(fā)明的地圖生成方法將地圖不同來源的地圖進行接入和重投影,生成統(tǒng)一采用切片方案的瓦片,從而達到多源地圖的整合。
一種基于多源地圖整合的地圖生成裝置,包括對瓦片進行重采樣生成地圖的地圖生成單元,還包括如下單元:
地圖接入單元,對于待整合的至少兩個地圖,指定用于接入地圖的經(jīng)緯度坐標系,判斷每個待整合地圖的像素坐標系和經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系是否已知,對于轉(zhuǎn)換關(guān)系未知的地圖,建立地圖像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系,再接入該地圖;
瓦片切割單元,選擇其中一個地圖的切片方案作為目標切片方案,對所有非目標切片方案的地圖重投影,生成采用目標切片方案的瓦片。
進一步而言,地圖接入單元包括如下用于建立地圖像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系的模塊:
投影經(jīng)緯度坐標系轉(zhuǎn)換模塊,根據(jù)地圖的投影方式獲得經(jīng)緯度坐標系與投影坐標系之間的轉(zhuǎn)換公式,以進行經(jīng)緯度坐標系與投影坐標系之間的互轉(zhuǎn);
像素投影坐標系轉(zhuǎn)換模塊,利用地圖上采集的樣本點建立地圖的像素坐標系與投影坐標系之間的轉(zhuǎn)換方程式,以進行像素坐標系與投影坐標系之間的互轉(zhuǎn)。
作為一種優(yōu)選,所述地圖生成單元還包括:
加密判斷模塊,對于像素坐標系和經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系未知的地圖,判斷地圖是否經(jīng)過加密;
加密影響消除模塊,對于經(jīng)過加密的地圖,通過加密和解密算法消除加密影響。
進一步而言,加密影響消除模塊包括如下子模塊:
加密子模塊,根據(jù)地圖的加密算法將經(jīng)緯度坐標系加密得到加密坐標系,并根據(jù)地圖的投影方式,獲得加密坐標系與投影坐標系之間的轉(zhuǎn)換公式,以進行加密坐標系與投影坐標系之間的互轉(zhuǎn);
解密子模塊,調(diào)用解密算法將加密坐標系轉(zhuǎn)換至經(jīng)緯度坐標系。
通過本發(fā)明的地圖生成方法及裝置,能夠?qū)⒁阎队暗娜蚍秶貓D接入到監(jiān)控平臺中,并且保證地圖坐標的精度滿足監(jiān)控行業(yè)的應(yīng)用。能夠讓不同切片方案的地圖在平臺中聯(lián)合顯示,極大的增強了用戶體驗。對于加密地圖,使用二分法解算加密算法在效率和精度上能夠保證同一個坐標點多次加密解密精度不損失,這使得平臺能夠屏蔽地圖源的坐標加密問題。
附圖說明
圖1為地圖投影的正解變換法示意圖;
圖2為地圖投影的反解變換法示意圖;
圖3為本發(fā)明一個實施例的地圖接入方法流程圖;
圖4為圖3當前實施例的二分法示意圖;
圖5為圖3當前實施例生成地圖的方法流程圖。
具體實施方式
為了對本發(fā)明進行詳細的解釋,現(xiàn)結(jié)合附圖和實施例對本發(fā)明進行闡述。
本發(fā)明一個實施例以遙感圖地圖為例,對本發(fā)明技術(shù)方案進行一個詳細的闡述。本發(fā)明當前實施例以兩個來源的地圖為例,將用戶提供的遙感地圖與網(wǎng)絡(luò)地圖進行整合,其中網(wǎng)絡(luò)地圖為大區(qū)域范圍內(nèi)的地圖。本發(fā)明一個實施例利用本發(fā)明所提供的地圖生成裝置,如圖5所示,執(zhí)行地圖生成方法,包括如下步驟:
A,對于待整合的至少兩個地圖,指定用于接入地圖的經(jīng)緯度坐標系,判斷每個待整合地圖的像素坐標系和經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系是否已知,對于轉(zhuǎn)換關(guān)系未知的地圖,建立地圖像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系,再接入該地圖。
該步驟由地圖接入單元完成。其中,網(wǎng)絡(luò)地圖是瓦片形式。在當前實施例中,網(wǎng)絡(luò)地圖為POI瓦片地圖??蛻籼峁┑牡貓D可以是圖片,遙感圖或CAD圖。
目前市場占有率較高或者絕大部分地圖例如谷歌地圖,都是采用網(wǎng)絡(luò)墨卡托投影,而在進行像素坐標系與投影坐標系之間的換算時,如果區(qū)域范圍為全球范圍,采用回歸方程精度十分低,分區(qū)域擬合成本又十分高,因此已經(jīng)不適用于本發(fā)明中的計算,所以有必要針對墨卡托投影研究通用的換算方法。
地圖的接入如圖3所示。目前市場上地圖分為兩類,一類采用標準谷歌Online切片方案的地圖,如高德、谷歌、天地圖等,另一類為非谷歌Online切片方案地圖,如百度地圖。其中前者較為簡單,這種坐標換算的方法十分成熟,精度也十分高,對于這類地圖,本發(fā)明當前實施例通過像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換公式接入地圖;而后者則較難,同時由于加密算法等原因,算法也較為復雜,地圖的像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系未知。因此首先對地圖的像素坐標系與經(jīng)緯度坐標系是否已知進行判斷。
在本發(fā)明當前實施例中,轉(zhuǎn)換關(guān)系已知是以標準的谷歌Online切片方案為例,每張瓦片的大小為256個像素,切片的原點為-180,85.05112877980659,根據(jù)谷歌地圖所采用的網(wǎng)絡(luò)墨卡托投影的投影特征 和具體的切片方案,可以得出每個像素與經(jīng)緯度之間的轉(zhuǎn)換關(guān)系,具體如下:
像素坐標轉(zhuǎn)換至經(jīng)緯度坐標:
lng=360*xx
經(jīng)緯度坐標轉(zhuǎn)換至像素坐標公式為:
x=xx*mapSizeX+0.5
y=y(tǒng)y*mapSizeY+0.5
其中x,y為像素坐標,mapSizeX為當前層級的X方向上的像素總和,mapSizeY為Y方向上的像素總和,lat為緯度,lng為經(jīng)度。
如果地圖的切片方案不是谷歌Online切片方案(即地圖的像素坐標系與經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系未知),則需要考慮該切片方案是否經(jīng)過加密,因此在步驟A中,對于未知切片方案的地圖,將未知的地圖切片方案轉(zhuǎn)為已知的方法包括判斷地圖是否經(jīng)過加密的步驟以及建立地圖像素坐標系與經(jīng)緯度坐標系之間轉(zhuǎn)換關(guān)系的步驟,其中對于經(jīng)過加密的地圖,還包括通過加密和解密算法消除加密影響的步驟。
對于未加密的地圖,建立從經(jīng)緯度坐標系到像素坐標系之間的轉(zhuǎn)換方程式包括如下步驟:
a-1,根據(jù)地圖的投影方式獲得經(jīng)緯度坐標系與投影坐標系之間的轉(zhuǎn)換公式,以進行得經(jīng)緯度坐標系與投影坐標系之間的互轉(zhuǎn)。這一步驟由投 影經(jīng)緯度坐標系轉(zhuǎn)換模塊完成。由于經(jīng)緯度坐標系的投影方式已知,所以可以查詢到經(jīng)緯度坐標系與投影坐標系之間的關(guān)系,當前實施例中投影為網(wǎng)絡(luò)墨卡托投影,網(wǎng)絡(luò)墨卡托投影坐標系與經(jīng)緯度坐標系之間的換算為已知的公式,所以可以通過網(wǎng)絡(luò)墨卡托投影坐標系與像素坐標系之間的關(guān)系間接推算出經(jīng)緯度坐標系與像素坐標系之間的關(guān)系,經(jīng)緯度坐標系與網(wǎng)絡(luò)墨卡托投影坐標系的換算如下:
經(jīng)緯度至網(wǎng)絡(luò)墨卡托投影坐標系:
其中tm為中間計算結(jié)果值,x,y為網(wǎng)絡(luò)墨卡托投影坐標系的坐標。
網(wǎng)絡(luò)墨卡托投影坐標系至經(jīng)緯度坐標系:
步驟a-2,利用地圖上采集的樣本點建立地圖的像素坐標系與投影坐標系之間的轉(zhuǎn)換方程式,以進行像素坐標系與投影坐標系之間的互轉(zhuǎn)。
步驟a-2由像素投影坐標系轉(zhuǎn)換模塊完成。對于未經(jīng)加密的待整合地圖而言,建立像素坐標系與投影坐標系之間的方程式方法為,在待整合地圖上選取若干樣本點,計算出各個樣本點在已知切片方案的經(jīng)緯度坐標系中的坐標值,利用樣本點確定方程系數(shù)。
理論上網(wǎng)絡(luò)墨卡托坐標系與像素坐標系之間的關(guān)系是線性關(guān)系,因此首先建立網(wǎng)絡(luò)墨卡托坐標系與像素坐標系中坐標值的二元一次方程式。設(shè) x,y為網(wǎng)絡(luò)墨卡托坐標系中任意一點的坐標值,px,py為對應(yīng)的像素坐標值,則二元一次方程式表達如下,
x=px*C1+C2
y=py*C3+C4
其中C1,C3是與地圖縮放級數(shù)相關(guān)的常量,C2,C4則是與地圖中心點相關(guān)的常量,反算也存在類似公式,通過對谷歌Online切片方案中的坐標點與像素點之間的取值驗證發(fā)現(xiàn),以上公式基本成立,如果取固定常量計算兩個坐標系之間的關(guān)系,誤差在1個像素以內(nèi),所以在理論上對于任意的地圖,我們僅需知道其投影的方式即可測算出其相應(yīng)的切片方案所采用的參數(shù)。
在待整合地圖中選取樣本點,得到樣本點在待整合地圖中的像素坐標,再利用所得到的像素坐標在采用已知切片方案的地圖中查找對應(yīng)像素坐標的經(jīng)緯度坐標值,這一過程通過人工查找完成。之后使用步驟a-1中的公式將樣本點在經(jīng)緯度坐標系中的坐標值轉(zhuǎn)換至投影坐標系中的坐標值,然后代入到方程式中,算出C1,C2,C3,C4的值(可以取其中某一個樣本點的值或者取平均值),得到二元一次方程式。
在實際的應(yīng)用過程中,由于地圖投影計算的復雜性,以及各個地圖廠商算法的差異(尤其是地圖投影時未能嚴格按照地圖投影理論進行計算),會使得理論計算的值存在差異,這種誤差會具有隨參數(shù)計算樣本點越遠誤差越大的特性,且即便是非常遠的距離(3000公里左右)誤差也在300個像素點左右。因此上述的二元一次方程組不一定能夠滿足所需精度,此時就要對所得到的二元一次方程組進行精度驗證,如果應(yīng)用所得二元一次方程接入地圖后,地圖上各點經(jīng)緯度坐標的精度能夠滿足所需精度,則將所得到的二元一次方程式作為投影坐標系到像素坐標系之間的轉(zhuǎn)換方程式。否則,就需要進行線性擬合。
通過對誤差的分布情況進行分析,可以發(fā)現(xiàn)這種誤差通過回歸方程應(yīng)用最小二乘法是十分容易擬合的,由于上文中像素坐標與網(wǎng)絡(luò)墨卡托投影坐標之間的計算是通過線性方程計算,而二元二次方程可以包含線性方程,所以可以通過取較多(30個)的樣本點直接投影坐標系與像素坐標系之間的關(guān)系,最終得到像素坐標與投影坐標互轉(zhuǎn)的二元二次方程組,以百度地圖為例,對回歸方程采用最小二乘法擬合,可以建立如下的方程式:
pixely=7.35352340086685E-12*x2+9.39729146931851E-12*x
*y+8.12647141921724E-10*y2+1.98403678528303
*y-0.000212332608690639*x+3915.53854399894
pixelx=2.26599796724512E-12*x2+3.5001926984551E-12*x
*y+7.10391945293842E-13*y2
-0.0000551338363883895*y+1.99995201582597*x
+546.960811821871
x=-2.73297968370015E-13*pixelx2-4.3688646200802E-13
*pixelx*pixely-9.82000305954539E-14*pixely2
+0.0000139020525825477*pixely+0.500011499020342
*pixelx-267.697879080613
y=-9.0298913442894E-13*pixelx2-1.19856067495038E-12
*pixelx*pixely-1.03052329152388E-10*pixely2
+0.504016205195998*pixely+0.0000524246363084467
*pixelx-1943.29405470358
其中x,y為墨卡托投影坐標,pixelx,pixely為19級像素坐標。
當待整合的地圖未對數(shù)據(jù)進行加密時,利用上述轉(zhuǎn)換方程式能夠滿足需求。但是如果待整合的地圖基于一定的數(shù)學法則加密時,則上面方程式便很難收斂,因為無法使用一個二元二次方程來表示任意的函數(shù)。此時可通過加密判斷模塊對于像素坐標系和經(jīng)緯度坐標系之間的轉(zhuǎn)換關(guān)系未知的地圖,判斷地圖是否經(jīng)過加密,對于經(jīng)過加密的地圖,通過步驟a-1及步驟a-2算出經(jīng)緯度坐標系(加密坐標系)與像素坐標之間的計算關(guān)系,并通過加密影響消除模塊進行加密和解密算法消除加密影響。消除加密影響包括步驟:利用加密子模塊,根據(jù)地圖的加密算法將經(jīng)緯度坐標系加密得到加密坐標系,并根據(jù)地圖的投影方式,獲得加密坐標系與投影坐標系之間的轉(zhuǎn)換公式,以進行加密坐標系與投影坐標系之間的互轉(zhuǎn);利用解密子模塊,調(diào)用解密算法將加密坐標系轉(zhuǎn)換至經(jīng)緯度坐標系。
一般已知切片方案的經(jīng)緯度坐標系采用WGS84坐標系,而目前國內(nèi)市場占有率較高的地圖中都能夠找到一個函數(shù)使得WGS84坐標系中點的坐標值能夠計算到加密后得到的加密坐標系中的坐標值,而加密坐標系內(nèi)的點 換算到WGS84坐標系內(nèi)坐標值則較難,本發(fā)明則通過改進的二分法(二元二分法)來擬合這個過程,流程圖如圖4所示,具體如下:
設(shè)WGS84坐標轉(zhuǎn)換至加密后坐標的方法為f(x,y)→x′,y′,其中f(x,y)為轉(zhuǎn)換函數(shù),(x,y)為WGS84坐標系中的經(jīng)緯度坐標值,(x′,y′)為加密后的坐標中的坐標值。設(shè)二分法目標函數(shù)為g(x,y)=Abs(x′-x)+Abs(y′-y),算法的目的則是尋找一組解使得g(x,y)→0。
在實際的應(yīng)用中通常需要保證用戶對加密算法的不可感知性,所以加密函數(shù)一般為連續(xù)函數(shù),即(x,y)自變量變化較小時,引起的因變量(x′,y′)也很小,所以在連續(xù)性上是能夠滿足二分法的,算法可以使用二分法進行計算。
在一元二分法算法中需要確定一個區(qū)間[a,b],其中必須滿足f(a)*f(b)<0,而二元二分法則是確定一個區(qū)域。根據(jù)加密函數(shù)的偏移程度,可以設(shè)區(qū)域為[x′-c,x′+c],[y′-c,y′+c],此處(x,y)為WGS84坐標系中任意點的經(jīng)緯度坐標值,一般偏移不會超過0.5度,所以c設(shè)為0.5。假設(shè)x′與y方向取值無關(guān),y′與x方向取值無關(guān),則可以將二元二分法分解為x,y方向的兩個一元二分法。迭代運算二元二分法,x方向上初始的區(qū)間為[x′-c,x′+c],y方向上初始的區(qū)間為[y′-c,y′+c],在每次迭代中,取值域的區(qū)間中間值(區(qū)間上限和區(qū)間下限的平均值)代入到g(x,y)函數(shù)中進行計算,并判斷g(x,y)是否小于指定精度值Prec(在當前實施例中取0.00000001),如果小于則退出循環(huán),否則利用中間值縮小下一次迭代的值域區(qū)間,進入下一次迭代直至完成計算。區(qū)間的中間值為x′中間值,y方向上的中間值為y′中間值,以x方向上為例,在每一次迭代中如果x′中間值>x′,則將區(qū)間中間值設(shè)置為下一次迭代的區(qū)間上限x′上限,否則將區(qū)間中間值設(shè)置為下一次迭代中的區(qū)間下限x′下限;對y方向上,每次迭代的區(qū)間和中間值的計算方式相同。由于實際上x′與y,y′與x并非無關(guān),自變量與因變量之間存在著十分弱的相關(guān)性,x的變化會對y′產(chǎn)生影響,y′的變化也會對x產(chǎn)生影響,這會使得二分法在迭代的過程中x,y方向上區(qū)間可能不包含目標值,有較低的概率算法無法退出循環(huán),所以算法需要在每次迭代計算中加入?yún)^(qū)間回退機制,以使區(qū)間在每次迭代的過程中都能包含目標 值。因此,利用所得中間值縮小下一次迭代的值域區(qū)間范圍的方法具體包括:
對于經(jīng)緯度坐標值x的值域區(qū)間,設(shè)值域區(qū)間上限為x′上限,值域區(qū)間下限為x′下限,判斷中間值x′中間值與的x′關(guān)系:如果x′中間值>x′,則將區(qū)間中間值設(shè)置為下一次迭代的值域區(qū)間上限,并且在滿足Abs(x′上限-x′下限)小于第一預設(shè)值且Abs(x′中間值-x′)大于第二預設(shè)值時,對區(qū)間上限x′上限進行回退,x′上限=x′上限+d;否則,將區(qū)間中間值設(shè)為下一次迭代的值域區(qū)間下限,并且在滿足Abs(x′上限-x′下限)小于第一預設(shè)值且Abs(x′中間值-x′)大于第二預設(shè)值時,對區(qū)間下限值x′下限進行回退,x′下限=x′下限-d;
對于經(jīng)緯度坐標值y的值域區(qū)間,設(shè)值域區(qū)間上限為y′上限,值域區(qū)間下限為y′下限,判斷中間值y′中間值與的y′關(guān)系:如果y′中間值>y′,則將區(qū)間中間值設(shè)置為下一次迭代的值域區(qū)間上限,并且在滿足Abs(y′上限-y′下限)小于第一預設(shè)值且Abs(y′中間值-y′)大于第二預設(shè)值時,對區(qū)間上限y′上限進行回退,y′上限=y(tǒng)′上限+d;否則,將區(qū)間中間值設(shè)為下一次迭代的值域區(qū)間下限,并且在滿足Abs(x′上限-x′下限)小于第一預設(shè)值且Abs(x′中間值-x′)大于第二預設(shè)值時,對區(qū)間下限值y′下限進行回退,y′下限=y(tǒng)′下限-d;
其中第一預設(shè)值小于第二預設(shè)值,d為指定常量。
其中d為常量值,當前實施例中取0.01,根據(jù)不同的加密算法有所不同,Prec/5和Prec/2為經(jīng)驗取值。
在本發(fā)明實施例中,待整合的地圖為用戶提供的遙感圖以及POI地圖,且用戶提供的遙感圖包含了坐標信息,所以無需做特殊處理。為了方便下文計算,將用戶提供的遙感圖(文件大小40GB左右)轉(zhuǎn)換為谷歌Online切片方案的瓦片。
在步驟A中已經(jīng)完成了不同坐標系之間的換算問題,利用坐標系之間的換算,可以將不同切片方案的地圖轉(zhuǎn)換到中間坐標系,從而將不同切片方案的地圖最終轉(zhuǎn)換為同一切片方案。此時可以利用同一切片方案進行地 圖的生成,即進行步驟B。
步驟B,選擇其中一個地圖的切片方案作為目標切片方案,對所有非目標切片方案的地圖重投影,生成采用目標切片方案的瓦片。
其中采用具體哪種切片方案需要根據(jù)實際情況確定,基本原則是文字類的圖像數(shù)據(jù)優(yōu)先于圖像類數(shù)據(jù),盡可能地采用標準的谷歌Online切片方案,因為文字類圖像在放大和縮小時都會對圖像的顯示效果產(chǎn)生影響,而谷歌Online切片方案市場占有率較高,采用這種切片方案能夠減少工作量。由于需要疊加的POI圖層中包含著字體,根據(jù)切片方案選擇原則,選擇POI地圖切片方案為投影變換后的切片方案,將用戶的地圖切片方案重投影,變換到POI地圖切片方案。
在實際的應(yīng)用中,地圖的顯示是基于瓦片的,平臺根據(jù)當前的視窗以及索引號來調(diào)取相應(yīng)的瓦片,當?shù)貓D之間的切片方案不同時就需要將其中一個地圖以另一種切片方案重繪,如果這個過程在用戶調(diào)取數(shù)據(jù)瀏覽數(shù)據(jù)時進行那么會對客戶端產(chǎn)生一定的負荷,所以本發(fā)明當前實施例采用了預緩存的方法,將不同切片方案的瓦片數(shù)據(jù)轉(zhuǎn)換為同一個瓦片方案并且存儲起來。
確定了目標切片方案的地圖之后,其余的地圖都通過重投影,變換為目標切片方案,確定需要投影變換的瓦片索引列表。將非目標切片方案的地圖稱為源地圖,目標切片方案的地圖稱為投影變換后的地圖,則根據(jù)源地圖瓦片與投影變換后的瓦片之間的關(guān)系,確定需要投影變換的瓦片的具體索引,并且加入到列表中。
根據(jù)地圖的像素坐標系與投影變換后的像素坐標系之間的轉(zhuǎn)換關(guān)系,確定地圖對應(yīng)的圖像區(qū)域,將相對應(yīng)的圖像區(qū)域生成目標切片方案的瓦片,然后以目標切片方案瓦片的命名方案保存。
目前系統(tǒng)中處理的圖像地圖包括兩種形式,一種以瓦片的形式存儲,另一種直接以圖片的形式存儲,前者不涉及內(nèi)存限制的問題,因為目前的計算機處理256*256的圖片不存在任何負荷問題,而后者則存在較大的內(nèi)存限制,例如當客戶將一個區(qū)域的地圖以圖片的形式提供的時候往往十分大,通常行列都過萬(完全加載需要內(nèi)存>10G),此時如果采用一般的圖像處理技術(shù)直接加載很容易導致系統(tǒng)崩潰等問題,所以本發(fā)明當前實施例中參考遙感圖像處理技術(shù),使用部分加載技術(shù)以解決超大圖像處理的問題, 即圖片不完全加載,每次根據(jù)需要提取圖片的部分加載到內(nèi)存中。
C,利用地圖生成單元,對瓦片進行重采樣生成地圖。
當完成圖片的加載之后,地圖的重繪主要是根據(jù)其中一幅地圖以及相應(yīng)的坐標換算公式和另一幅的切片方案進行重繪,在監(jiān)控領(lǐng)域,由于客戶并不關(guān)心圖像的科學計算,更多關(guān)心圖像的成像效果,在圖像重采樣算法的選擇中,通過試驗發(fā)現(xiàn)使用最鄰近法、二次雙卷積法等算法逐點計算對于圖像成像效果并不是十分好,且計算量十分巨大。因此,當前實施例以瓦片為單位,直接調(diào)用GDI+函數(shù)進行圖像重采樣,這種重采樣方法的效果以及速度都遠遠高于逐點計算,其算法的實現(xiàn)關(guān)鍵是建立目標切片方案的每一張瓦片與源地圖之間的對應(yīng)關(guān)系,對于源地圖在目標切片方案中的瓦片索引號為x,y的瓦片,取瓦片的左上角像素坐標(x*TitleSizeX,y*TitleSizeY)和右下角像素坐標((x+1)*TitleSizeX,(y+1)*TitleSizeY),將兩個像素坐標轉(zhuǎn)換為經(jīng)緯度坐標,之后再將經(jīng)緯度坐標轉(zhuǎn)換為源地圖像素坐標,取出兩個坐標點所對應(yīng)的源地圖的圖像區(qū)域的圖像,再將這部分圖片縮放到TitleSizeX,TitleSizeY大小,之后以目標切片方案的索引號保存相應(yīng)圖片,依次遍歷完成整幅地圖的重采樣。
整合完成的地圖地理坐標信息以及文字標注信息同時顯示,實現(xiàn)了讓不同切片方案的地圖在平臺中聯(lián)合顯示,極大的增強了用戶體驗。并且將已知投影的全球范圍地圖接入到監(jiān)控平臺中,同時保證地圖坐標的精度滿足監(jiān)控行業(yè)的應(yīng)用。