海量數(shù)據(jù)展示

背景

????現(xiàn)在我們的數(shù)據(jù)量越來越來越大挽霉,往往會有短時間渲染大量數(shù)據(jù)的要求,但是往往這些數(shù)據(jù)過大難以實(shí)時處理琼富,整體切片花費(fèi)時間又過長判没。在這里提出一種緩存加實(shí)時處理的方案蜓萄。

準(zhǔn)備

????軟件環(huán)境,PostGIS(3.0.0rc2 r17909)和 PostgreSQL( 12.0, compiled by Visual C++ build 1914, 64-bit)哆致,數(shù)據(jù)是微軟開源的房屋數(shù)據(jù)绕德。PostGIS3.0相對與PostGIS 2.5大幅度提升矢量切片性能患膛,并行環(huán)境表現(xiàn)更好摊阀。

預(yù)處理

????預(yù)處理就是將3級到12級的矢量切片事先切好。首先獲取數(shù)據(jù)12級的最大最小xyz踪蹬,通過這個范圍生成網(wǎng)格胞此,然后和數(shù)據(jù)相交得到一一對應(yīng)的關(guān)系表a。
????接下來就是使用四叉樹鍵(quadkey)跃捣,四叉樹有一些有意思的特性漱牵。第一,四叉樹鍵的長度等于該瓦片所對應(yīng)的圖像級別疚漆;第二酣胀,每個瓦片的四叉樹鍵的前幾位和其父瓦片(上一圖像級別所對應(yīng)的瓦片)的四叉樹鍵相同刁赦,下圖中,第1級的 '瓦片2' 是第2級的 '瓦片20' 至 '瓦片23' 的父瓦片闻镶,第2級的 '瓦片13' 是 第3級的 '瓦片130' 至 '瓦片133' 的父瓦片甚脉。通過四叉樹的這個特性把3到11級的xyz和11級的xyz建立對應(yīng)關(guān)系表b,最終a和b關(guān)聯(lián)可以得到三到十一級和數(shù)據(jù)的對應(yīng)關(guān)系铆农。

????根據(jù)上述內(nèi)容牺氨,我們就可以生成行矢量切片了,借助golang并發(fā),千萬級面數(shù)據(jù)預(yù)處理(加上gzip壓縮)大概需要16分鐘墩剖。

后臺服務(wù)

????預(yù)處理矢量切片生成完以后猴凹,使用golang把矢量切片全部加載進(jìn)程序中,并且建立鍵值對岭皂,能夠快速的判斷請求的xyz在3-11級是否有數(shù)據(jù)并且存在數(shù)據(jù)時能快速獲取郊霎。當(dāng)數(shù)據(jù)請求大于十一級時候,我們使用數(shù)據(jù)庫查詢方式獲取矢量切片爷绘。后臺編寫時候遇到問題歹篓,后端向前端傳輸大的矢量切片速度過慢。我通過數(shù)據(jù)切割方式解決這個問題揉阎。打個比方庄撮,吃一個西瓜,你一口吃不下毙籽。那我們是不是切成塊吃就可以洞斯?切塊就是數(shù)據(jù)分割這樣能較快的傳輸又不影響數(shù)據(jù)完整性。

渲染

????前臺渲染使用mapbox gl加載自定義矢量切片


image

image

總結(jié)

????本文方案中使用緩存少量層級提升整體渲染速度坑赡,實(shí)際前端瀏覽中能較為流暢烙如。由于數(shù)據(jù)限制,方案的測試數(shù)據(jù)較為單一毅否,可能不具有代表性亚铁。本方案預(yù)處理切片層級不宜過大,超過12級預(yù)處理性能會急劇降低螟加。

image

參考資料:

https://www.runoob.com/python/python-func-memoryview.html
https://stackoverflow.com/questions/45455121/python-convert-memoryview-to-string
https://docs.objectrocket.com/redis_python_examples.html
https://stackoverflow.com/questions/18655648/what-exactly-is-the-point-of-memoryview-in-python
https://blog.csdn.net/why_not2007/article/details/79062351
http://www.reibang.com/p/443719f604a2
https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system?redirectedfrom=MSDN
https://github.com/Microsoft/USBuildingFootprints
https://github.com/buckhx/QuadKey/blob/master/quadkey/tile_system.py
https://github.com/CartoDB/python-quadkey
https://www.cnblogs.com/xwgli/archive/2013/04/12/3016345.html
https://stackoverflow.com/questions/415511/how-to-get-the-current-time-in-python
http://postgres.cn/docs/postgis-2.3/ST_SetSRID.html
https://postgis.net/docs/manual-dev/ST_TileEnvelope.html
https://postgis.net/docs/manual-dev/ST_AsMVTGeom.html
https://postgis.net/docs/ST_AsMVTGeom.html
https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
https://www.postgresql.org/docs/9.5/gist-builtin-opclasses.html
https://www.postgresql.org/docs/9.5/gist-intro.html
https://blog.csdn.net/xk_zhang/article/details/52014737
https://www.cnblogs.com/LCGIS/archive/2013/03/12/2954898.html
https://blog.csdn.net/Happy52Wang/article/details/90022686
https://blog.csdn.net/a624806998/article/details/87092890
http://www.dongcoder.com/detail-1195214.html
https://www.cnblogs.com/520zm/p/10743224.html
https://pynative.com/psycopg2-python-postgresql-connection-pooling/
http://initd.org/psycopg/docs/pool.html
https://www.v2ex.com/t/351734
https://www.cnblogs.com/kaituorensheng/p/4445418.html
https://blog.csdn.net/kanon122500000/article/details/61198902

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末徘溢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捆探,更是在濱河造成了極大的恐慌然爆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件黍图,死亡現(xiàn)場離奇詭異曾雕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)助被,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門剖张,熙熙樓的掌柜王于貴愁眉苦臉地迎上來切诀,“玉大人,你說我怎么就攤上這事搔弄≈耗粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵肯污,是天一觀的道長翘单。 經(jīng)常有香客問我,道長蹦渣,這世上最難降的妖魔是什么哄芜? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮柬唯,結(jié)果婚禮上认臊,老公的妹妹穿的比我還像新娘。我一直安慰自己锄奢,他們只是感情好失晴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拘央,像睡著了一般涂屁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灰伟,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天拆又,我揣著相機(jī)與錄音,去河邊找鬼栏账。 笑死帖族,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挡爵。 我是一名探鬼主播竖般,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼茶鹃!你這毒婦竟也來了涣雕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤前计,失蹤者是張志新(化名)和其女友劉穎胞谭,沒想到半個月后垃杖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體男杈,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年调俘,在試婚紗的時候發(fā)現(xiàn)自己被綠了伶棒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旺垒。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肤无,靈堂內(nèi)的尸體忽然破棺而出先蒋,到底是詐尸還是另有隱情,我是刑警寧澤宛渐,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布竞漾,位于F島的核電站,受9級特大地震影響窥翩,放射性物質(zhì)發(fā)生泄漏业岁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一寇蚊、第九天 我趴在偏房一處隱蔽的房頂上張望笔时。 院中可真熱鬧,春花似錦仗岸、人聲如沸允耿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽较锡。三九已至,卻和暖如春盗痒,著一層夾襖步出監(jiān)牢的瞬間念链,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工积糯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掂墓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓看成,卻偏偏與公主長得像君编,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子川慌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

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

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    小邁克閱讀 2,986評論 1 3
  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007閱讀 2,210評論 0 3
  • 原文鏈接 《Python數(shù)據(jù)分析》(Python for Data Analysis, 2nd Edition)第...
    李紹俊閱讀 8,250評論 0 5
  • 今天有點(diǎn)咸??想做一只沒有夢想的搬運(yùn)工 十六進(jìn)制編輯器 十六進(jìn)制編輯器(二進(jìn)制文件編輯器或字節(jié)編輯器)是一種允許操縱...
    Honny_Boo閱讀 2,448評論 0 7
  • 夢見了一起聯(lián)合murder 梦重。我同從前一樣兑燥,附屬品般被她帶在身邊,安安靜靜地參與了每一步琴拧。夢里沒有負(fù)罪感而奇怪降瞳,安...
    路邊的制杖閱讀 185評論 0 0