geotrellis使用(二十六)實(shí)現(xiàn)海量空間數(shù)據(jù)的搜索處理查看
目錄
一、前言
看到這個(gè)題目有人肯定會(huì)說(shuō)這有什么可寫的,最簡(jiǎn)單的我只要用文件系統(tǒng)一個(gè)個(gè)查找、打開就可以實(shí)現(xiàn),再高級(jí)一點(diǎn)我可以提取出所有數(shù)據(jù)的元數(shù)據(jù),做個(gè)元數(shù)據(jù)管理系統(tǒng)就可以實(shí)現(xiàn)查找功能,有必要用geotrellis用分布式嗎?這不是殺雞用牛刀嗎?理論上是這樣的,但是要看我們考慮問題的尺度,如果你只是一些簡(jiǎn)單的數(shù)據(jù)用傳統(tǒng)方法當(dāng)然好,省事、省時(shí)、簡(jiǎn)單、速度快,但是當(dāng)我們將數(shù)據(jù)的量放大到一個(gè)區(qū)域乃至全球的時(shí)候恐怕事情就不是那么簡(jiǎn)單了,比如我們有了全球Landsat數(shù)據(jù),如何查看某一地區(qū)此數(shù)據(jù)的情況,傳統(tǒng)方法可能要自己先計(jì)算出此區(qū)域的Landsat的帶號(hào),然后再找到此數(shù)據(jù)并打開之。如果覺得這海不麻煩,那么當(dāng)用戶需要考察Landsat的云量或者NDVI的時(shí)候是不是又要用戶自己打開數(shù)據(jù)并使用Arcgis等自行計(jì)算?是不是很麻煩,而本文介紹的方法是只需要用戶輸入有關(guān)此點(diǎn)的信息(帶號(hào)或者點(diǎn)位信息),系統(tǒng)能夠自動(dòng)呈現(xiàn)此區(qū)域的數(shù)據(jù)(或者云量、NDVI等結(jié)果),這樣是不是逼格立馬上去了呢?
二、前臺(tái)實(shí)現(xiàn)
此功能的前臺(tái)也不可謂不復(fù)雜,但是難不倒我這個(gè)全棧工程師(請(qǐng)忽略此話),費(fèi)了半天勁,基本實(shí)現(xiàn)了前臺(tái)的功能??傮w就是一個(gè)搜索框加一個(gè)按鈕,然后發(fā)送搜索關(guān)鍵詞到后臺(tái),后臺(tái)返回?cái)?shù)據(jù)列表,前臺(tái)逐條展示之,單機(jī)每條數(shù)據(jù)的時(shí)候在地圖中(地圖框架采用leaflet)呈現(xiàn)此數(shù)據(jù)的情況,類似Google、百度。這里面我主要介紹以下知識(shí)點(diǎn)。
2.1 在地圖中添加、刪除標(biāo)記
要給用戶呈現(xiàn)數(shù)據(jù)情況,最重要的就是數(shù)據(jù)的空間范圍,簡(jiǎn)單的說(shuō)就是將四個(gè)(或多個(gè))頂點(diǎn)逐一連成線在地圖中顯示出來(lái)。leaflet可以簡(jiǎn)單的使用如下語(yǔ)句實(shí)現(xiàn)該功能:
geoJsonOverlay = L.geoJson(geoJson); geoJsonOverlay.addTo(map);
其中map為L(zhǎng).map('map')對(duì)象,geoJson就是想