婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Sqlview動(dòng)態(tài)發(fā)布地圖圖層的方法

Sqlview動(dòng)態(tài)發(fā)布地圖圖層的方法

熱門(mén)標(biāo)簽:安卡拉地圖標(biāo)注app 我要地圖標(biāo)注數(shù)量有限制嗎 400電話辦理泰安 電話機(jī)器人怎么代理商 零成本地圖標(biāo)注賺錢(qián) 家庭農(nóng)場(chǎng)地圖標(biāo)注名稱怎樣起名 千呼電話機(jī)器人可以試用嗎 互聯(lián)網(wǎng)電話外呼系統(tǒng) 電銷需要外呼系統(tǒng)嗎

1.SQL Views簡(jiǎn)介

Geoserver+postgresql+openlayers(leaflet)是目前主流的gis開(kāi)發(fā)工具。Postgresql用于存儲(chǔ)地圖數(shù)據(jù),geoserver用于發(fā)布地圖數(shù)據(jù),openlayers或者leaflet用于訪問(wèn)發(fā)布地圖。正常情況下當(dāng)shapefile格式的數(shù)據(jù)導(dǎo)入postgresql數(shù)據(jù)庫(kù)中之后,我們需要通過(guò)geoserver把所有的數(shù)據(jù)發(fā)布出去,這樣才能訪問(wèn)。常規(guī)情況下這種操作方式是沒(méi)有問(wèn)題的,因?yàn)榈貓D作為基礎(chǔ)服務(wù),一旦發(fā)布出去是不會(huì)變化的。但是對(duì)于室內(nèi)地圖來(lái)說(shuō)就不行了,假如一個(gè)商場(chǎng)有5層,每一樓層又層有5個(gè)地圖圖層,對(duì)于這樣一個(gè)商場(chǎng)需要把這25個(gè)地圖圖層在geoserver中全部發(fā)布出來(lái)才能訪問(wèn)該商場(chǎng)的全部地圖。假如發(fā)布這一個(gè)商場(chǎng)的25個(gè)圖層你還能忍受的話,那發(fā)布成千上萬(wàn)個(gè)商場(chǎng)的地圖你還能忍受嗎?既然忍受不了那就要想辦法解決。由于發(fā)布地圖是機(jī)械的重復(fù)的工作,我們是否能想一些辦法來(lái)幫我們完成這些工作呢。這時(shí)候就是我們的sqlView出場(chǎng)了。

首先介紹一下sql View,通過(guò)SQLViews可以做如下事情:

(1)數(shù)據(jù)庫(kù)view可以在geoserver中當(dāng)作表完全一樣的發(fā)布,而geoserver的SQLViews不僅能實(shí)現(xiàn)簡(jiǎn)單的查詢發(fā)布,還能輸入?yún)?shù)作為查詢視圖的條件。

(2)SQLViews可以發(fā)布數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程或者function,執(zhí)行更加復(fù)雜的邏輯操作與查詢。

(3)SQL Views查詢可以通過(guò)字符串替換的方式進(jìn)行參數(shù)化,參數(shù)值可以在wms和wfs請(qǐng)求總使用,輸入值可以通過(guò)設(shè)置的正則表達(dá)式進(jìn)行驗(yàn)證從而消除SQL 注入攻擊的風(fēng)險(xiǎn)。

(4)SQLViews是對(duì)數(shù)據(jù)庫(kù)操作與查詢的一個(gè)結(jié)果,不能使用wfs_t去操作它,但是wfs,wms都可以正常請(qǐng)求或者查詢。

2.創(chuàng)建帶查詢條件的SQL Views視圖:

(1)登錄geoserver,點(diǎn)擊圖層,選擇工作空間,新建圖層。

(2)新建SQL Views視圖圖層,并發(fā)布。


這里創(chuàng)建了一個(gè)視圖,發(fā)布傳入的表名數(shù)據(jù)。

tbl的默認(rèn)值設(shè)置為數(shù)據(jù)庫(kù)中一直會(huì)存在的表格,設(shè)置的正則表達(dá)式為只允許輸入字母數(shù)字和下劃線。


在屬性值對(duì)輸出結(jié)果的類型和坐標(biāo)系做了設(shè)置。

(3)圖層訪問(wèn)

在通過(guò)wms獲取地圖的時(shí)候只需要把tbl的值通過(guò)viewparams傳遞過(guò)去就行了

http://10.20.135.14/geoserver/parking/wms?SERVICE=WMSVERSION=1.3.0REQUEST=GetMapFORMAT=image%2FpngTRANSPARENT=trueLAYERS=parking%3AvTingcheweiCRS=EPSG%3A4326STYLES=WIDTH=2700HEIGHT=1200BBOX=20.02708134918213%2C110.33805803565978%2C20.03351865081787%2C110.3525419643402viewparams=tbl%3Awanghaiguojia_b2_tingchewei

viewparams格式一般是viewparams=p1:v1;p2:v2;…可以加若干個(gè)參數(shù)。不同參數(shù)之間以;隔開(kāi),單個(gè)參數(shù)是鍵值對(duì),即p1是參數(shù)名稱,v1是參數(shù)值。

通過(guò)wms方式訪問(wèn)發(fā)布的視圖方法為:

var params = {
LAYERS:'parking:vTingchewei',
FORMAT:'image/png'
};
varviewparams = [
'tbl:wanghaiguojia_b2_tingchewei'
];
params.viewparams= viewparams;
varvTingchewei = new ol.layer.Image({
source:new ol.source.ImageWMS({
url:'http://10.20.135.14/geoserver/parking/wms', 
params:params,
serverType:'geoserver',
})
});

通過(guò)這種方式,再多的商場(chǎng)只需要在geoserver中發(fā)布5次視圖即可,而且該發(fā)布視圖的代碼可以預(yù)先寫(xiě)入geoserver中打包進(jìn)去。這樣該系統(tǒng)在任何商場(chǎng)使用都不需要發(fā)布地圖了。

3.創(chuàng)建包含function的SQL View視圖

解決了圖層發(fā)布的問(wèn)題,終于可以松一口氣了。但是,沒(méi)想到棘手的問(wèn)題還在后面。領(lǐng)導(dǎo)讓做室內(nèi)導(dǎo)航功能。做就做吧,誰(shuí)讓咱是苦逼的碼農(nóng)呢。那該怎么做室內(nèi)導(dǎo)航呢,做這個(gè)功能之前,咱還是要規(guī)劃一下的。首先要寫(xiě)最短路徑查詢算法;然后查詢路徑的時(shí)候只需要把起點(diǎn)和終點(diǎn)的位置輸入算法查詢即可;最后把查詢的結(jié)果通過(guò)wms或wfs方式獲取,顯示在地圖上。

編寫(xiě)最短路徑規(guī)劃算法的時(shí)候我們需要的輸入有:用戶所在樓層的道路名,起點(diǎn)和終點(diǎn)的位置,然后我們吭哧吭哧,大戰(zhàn)3天三夜,搞定。

接著查詢,好辦,直接按照上面的放吧,把該商場(chǎng)的5個(gè)樓層都發(fā)布一個(gè)基于對(duì)應(yīng)樓層的結(jié)果路徑視圖,機(jī)智吧?NO,NO,NO!簡(jiǎn)直遇事情不懂腦子啊。這個(gè)時(shí)候肯定需要換一個(gè)新的方法,把最短路徑規(guī)劃算法寫(xiě)成一個(gè)Function嵌入到postgresql數(shù)據(jù)庫(kù)中,該function的輸入?yún)?shù)為:用戶所在樓層,起點(diǎn)位置,終點(diǎn)位置;輸出參數(shù)為起點(diǎn)和終點(diǎn)直接經(jīng)過(guò)的點(diǎn)坐標(biāo)。

最后,通過(guò)wms或者wfs的方式獲取得到的最短路徑結(jié)果即可。

以上所述實(shí)現(xiàn)小編給大家介紹的Sqlview動(dòng)態(tài)發(fā)布地圖圖層的方法,希望對(duì)大家有所幫助!

標(biāo)簽:濱州 東營(yíng) 黃山 新鄉(xiāng) 大同 來(lái)賓 池州 文山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Sqlview動(dòng)態(tài)發(fā)布地圖圖層的方法》,本文關(guān)鍵詞  Sqlview,動(dòng)態(tài),發(fā)布,地圖,圖層,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Sqlview動(dòng)態(tài)發(fā)布地圖圖層的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Sqlview動(dòng)態(tài)發(fā)布地圖圖層的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 札达县| 庄浪县| 嘉义县| 邯郸县| 太白县| 石棉县| 平阳县| 阆中市| 临沭县| 渭南市| 河北省| 锦屏县| 开江县| 淄博市| 垦利县| 鲜城| 青川县| 东辽县| 巴青县| 西乌珠穆沁旗| 徐水县| 瑞昌市| 玉溪市| 芒康县| 宁津县| 淅川县| 南木林县| 安吉县| 玛沁县| 德令哈市| 大连市| 蒲江县| 江华| 仁寿县| 尤溪县| 陕西省| 平武县| 赣州市| 白朗县| 剑河县| 大关县|