地理索引(Uber h3)

動(dòng)態(tài)空間劃分(R-tree)

靜態(tài)空間劃分(GeoHash景埃、S2、H3)

????空間劃分知識(shí):http://www.cocoachina.com/cms/wap.php?action=article&id=20309

????GeoHash

????????四叉樹

????????????????????經(jīng)度璧函、緯度的二分來分塊辱姨,邏輯最簡單。

????????Z-行空間遍歷

????????編碼方式

????????????????所在層級(jí)經(jīng)緯度二分下標(biāo)(0部凑、1),先經(jīng)后緯碧浊,逐層排列涂邀。

????Google S2

????????正方體投影

????????????以正方體投影作為基準(zhǔn),六個(gè)面逐級(jí)緯度二分箱锐。


????????希爾伯特曲線

????????????????相鄰相近

????????????????等距連續(xù)比勉?

????????編碼方式

????????????????六面ID+ 所在層級(jí)經(jīng)緯度二分下標(biāo)(0、1)驹止,受曲線旋轉(zhuǎn)影響浩聋,逐層排列。

????????映射修正

????????????????使面積差距小

????????????????線性變換:s = 0.5 * (1 + u)

????????????????tan變換:s = 2 / pi * (atan(u) + pi / 4) = 2 * atan(u) / pi + 0.5

? ??????????????二次變換(Uber選擇):u >= 0臊恋,s = 0.5 * sqrt(1 + 3*u)?

? ??????????????????????????????????????????????????????????u < 0, s = 1 - 0.5 * sqrt(1 - 3*u)

????Uber H3

????????官網(wǎng)

????????????????https://uber.github.io/h3/#/documentation/overview/introduction

????????怎么劃分空間

????????????????假設(shè)正x多邊形衣洁,y個(gè)頂點(diǎn)相接:360 / y = ((x-2)*180) / x?

y = 2x / (x-2)

????????????????????????正整數(shù)解只有(3,6、4,4抖仅、6,3)

????????????????正六多邊形優(yōu)點(diǎn)

? ? ? ? ? ? ? ? ? ? ? ? 相鄰單元距離相等

????????????????????????近似圓

????????????????????????????????自身近似圓形坊夫,貼合密度概念,很適合大多數(shù)的匯總分析場(chǎng)景撤卢。

????????????????????????????????周圍相近近似圓形且等距环凿,方便附近查找,階梯分析等

????????????????Uber怎么做放吩?

? ? ? ? ? ? ? ? ? ? ? ? ?想要的一個(gè)優(yōu)點(diǎn)智听,分割后面積相同。

????????????????????????面積相同的正六邊形不能構(gòu)建成球形屎慢。

????????????????????????正二十面體

?正二十面體

????????????????????????基本單元

H3基本塊

????????????????????????????????正二十面體瞭稼,交點(diǎn)有五個(gè)邊。每一個(gè)基本單元做上圖圖示的分割腻惠。

? ??????????????????????????????全球被劃分為12個(gè)正五邊形和110個(gè)正六邊形的基本單元环肘。

? ??????????????????????Dymaxion map

? ??????????????????????????????戴美克森氏地圖(Dymaxion map)或稱富勒地圖(Fuller map),Richard Buckminster Fuller發(fā)明。建筑師集灌。

????????????????????????????????dymaxion(最大限度利用能源的,以最少結(jié)構(gòu)提供最大強(qiáng)度的)悔雹,這個(gè)詞來源于三個(gè)單詞:Dynamic,意思是動(dòng)力欣喧,Maximum腌零,意思是最多、最大唆阿,還有ion益涧,是一個(gè)原子或是一個(gè)電極中一組原子。

????????????????????????????????選擇二十面體的頂點(diǎn)在水中驯鳖,盡量避免常規(guī)應(yīng)用中同時(shí)使用五邊形和六邊形闲询。

????????????????????????逐級(jí)等分

????????????????????????????????可支持16級(jí)拆分

????????????????????????????????第一層基礎(chǔ)單元格久免,15級(jí)(編碼方式?jīng)Q定)的等面積拆分。

????????基本元素

????????????單元格(cell)

????????????????????普通的各級(jí)分裂的結(jié)果

????????????有向格

????????????????????單元格增加一個(gè)以六條邊為基礎(chǔ)的維度扭弧,可以表示從一個(gè)單元格到另一個(gè)共邊單元格的意向阎姥,相當(dāng)于記錄兩個(gè)有共邊的單元格,當(dāng)需要時(shí)鸽捻,可以將邊緣轉(zhuǎn)換回原始索引或目標(biāo)索引呼巴。

????????????????????分為單向格(Unidirectional Edge)和雙向格(bidirectional edge)。

????????????IJK坐標(biāo)系

????????????????????一種平面六邊形網(wǎng)絡(luò)中的三軸坐標(biāo)系御蒲。為六邊形網(wǎng)絡(luò)中的每一個(gè)元素提供唯一路徑衣赶。

????????????FaceIJK坐標(biāo)系

????????????????????H3 核心運(yùn)算使用的坐標(biāo)系。

????????????????????由二十面體基本單元ID + IJK坐標(biāo)系構(gòu)成删咱。有兩種類型(R. Buckminster Fuller定義):

????????????????????0層使用ClassII屑埋;逐層搖擺,交替使用痰滋。

????????????其他坐標(biāo)系

????????????????????https://uber.github.io/h3/#/documentation/core-library/coordinate-systems

????????編碼方式

????????????????使用64位摘能,一個(gè)Long值的長度來記錄一個(gè)基本類型。

? ? ? ? ? ? ? ? ·· 前4位表示索引模式:0:無效敲街;1:單元格团搞;2:單向格;3:雙向格多艇。

? ? ? ? ? ? ? ? ·· 3位表示共邊ID(模式2和模式3有效)逻恐。

? ? ? ? ? ? ? ? ·· 4位表示當(dāng)前索引級(jí)別(0-15)。

? ? ? ? ? ? ? ? ·· 7位表示基本單元格ID(0-121)峻黍。

? ? ? ? ? ? ? ? ·· 每3位一個(gè)層級(jí)复隆,逐層排列(3*15)。

? ? ? ? ? ? ? ? ·· 隊(duì)尾未被使用的位置1姆涩。

????????????????拆分編碼:(?五邊形拆分中廢棄下標(biāo)1)

????????????應(yīng)用場(chǎng)景

????????????????????普通索引

????????????????????????????高精度的數(shù)據(jù)挽拂,模糊到選定的H3粒度,作為數(shù)據(jù)的索引使用骨饿。

????????????????????附近搜

????????????????????????????K環(huán)(kRing):

????????????????????????????????????根據(jù)指定中心點(diǎn)亏栈,得到指定單位距離內(nèi)(K)的其他單元格,非常方便的實(shí)現(xiàn)附近的需要宏赘。發(fā)揮近似圓的優(yōu)勢(shì)绒北。

????????????????????多邊形索引

? ? ? ? ? ? ? ? ? ? ? ? ? ? 指定粒度切分指定多邊形,得到多邊形覆蓋的單元格察署,并且提供壓縮功能闷游。

????????jar使用

????????????????groupId:com.uber

????????????????artifactId:h3

????????????????version:

? ??????????????H3Core h3 = H3Core.newInstance();

? ??????????????h3.xxx();

? ??? ??性能

????????????????普通應(yīng)用場(chǎng)景和geohash的使用場(chǎng)景并無實(shí)質(zhì)性的區(qū)別,但是等面積、近圓的特性脐往,在一些場(chǎng)景俱济,會(huì)降低實(shí)現(xiàn)算法的難度。

????????????????多邊形索引的場(chǎng)景钙勃,需要圍欄預(yù)處理工作,然后做兩個(gè)Btree的關(guān)聯(lián)運(yùn)算聂喇,具體性能對(duì)比辖源,待測(cè)試。

????????缺點(diǎn)

????????????????上下級(jí)的不完全覆蓋(藍(lán)色區(qū)域舉例)希太,一些應(yīng)用場(chǎng)景要注意克饶。

????????????編碼方式對(duì)普通索引不友好

如下:同一個(gè)經(jīng)緯度,在不同層級(jí)的索引值

000100000000011000111111111111111111111111111111111111111111111

8031fffffffffff

000100000010011000110111111111111111111111111111111111111111111

8131bffffffffff

000100000100011000110011111111111111111111111111111111111111111

82319ffffffffff

000100010010011000110011101101010101001110000111111111111111111

89319daa9c3ffff

000100011110011000110011101101010101001110000011101000000110011

8f319daa9c1d033

如果使用壓縮算法誊辉,上級(jí)(壓縮后)的索引值和下級(jí)(壓縮前)的索引值矾湃,沒有辦法命中普通數(shù)據(jù)庫之類的的普通索引,大大的限制了壓縮算法的使用場(chǎng)景堕澄。

解決方式:

擦除索引層級(jí)標(biāo)記

000100000100011000110011111111111111111111111111111111111111111&111111100001111111111111111111111111111111111111111111111111111

000100010010011000110011101101010101001110000111111111111111111&111111100001111111111111111111111111111111111111111111111111111

-->

000100000000011000110011111111111111111111111111111111111111111

000100000000011000110011101101010101001110000111111111111111111

截?cái)嗪竺鏌o效的1

000100000000011000110011111111111111111111111111111111111111111

000100000000011000110011101101010101001110000111111111111111111

-->

000100000000011000110011

000100000000011000110011101101010101001110000

base8編碼邀跃?

就可以在使用壓縮算法節(jié)省存儲(chǔ)空間的同時(shí),又可以命中普通Btree索引蛙紫。

跨Base區(qū)怎么辦拍屑?

????????分割(投影)算法不完美

不只有概念描述中的五邊形、六邊形坑傅;???

會(huì)有七邊形僵驰,甚至十邊形(出現(xiàn)在正二十面體的交線上);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唁毒,一起剝皮案震驚了整個(gè)濱河市蒜茴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浆西,老刑警劉巖粉私,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異室谚,居然都是意外死亡毡鉴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門秒赤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猪瞬,“玉大人,你說我怎么就攤上這事入篮〕率荩” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵潮售,是天一觀的道長痊项。 經(jīng)常有香客問我锅风,道長,這世上最難降的妖魔是什么鞍泉? 我笑而不...
    開封第一講書人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任皱埠,我火速辦了婚禮,結(jié)果婚禮上咖驮,老公的妹妹穿的比我還像新娘边器。我一直安慰自己,他們只是感情好托修,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開白布忘巧。 她就那樣靜靜地躺著,像睡著了一般睦刃。 火紅的嫁衣襯著肌膚如雪砚嘴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,821評(píng)論 1 314
  • 那天涩拙,我揣著相機(jī)與錄音际长,去河邊找鬼。 笑死吃环,一個(gè)胖子當(dāng)著我的面吹牛也颤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播郁轻,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼翅娶,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了好唯?” 一聲冷哼從身側(cè)響起竭沫,我...
    開封第一講書人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骑篙,沒想到半個(gè)月后蜕提,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靶端,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年谎势,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杨名。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脏榆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出台谍,到底是詐尸還是另有隱情须喂,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站坞生,受9級(jí)特大地震影響仔役,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜是己,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一又兵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卒废,春花似錦寒波、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绸栅。三九已至级野,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粹胯,已是汗流浹背蓖柔。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留风纠,地道東北人况鸣。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像竹观,于是被迫代替她去往敵國和親镐捧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)臭增,會(huì)觸發(fā)此異常懂酱。 O...
    我想起個(gè)好名字閱讀 5,343評(píng)論 0 9
  • ORA-13000: 維數(shù)超出范圍 ORA-13001: 維數(shù)不匹配錯(cuò)誤 ORA-13002: 指定的級(jí)別超出范圍...
    thinkact閱讀 19,300評(píng)論 1 5
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件誊抛、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,126評(píng)論 4 61
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的列牺,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,910評(píng)論 0 0
  • 泰國:不可錯(cuò)失的十大特色水果拗窃! 去泰國旅游除了欣賞美麗的風(fēng)景和古老的泰國寺廟泰國水果也是不可錯(cuò)過的瞎领,泰國有“水果王...
    環(huán)球美食盛宴閱讀 431評(píng)論 0 0