geoserver rest方式發布shp

2021-07-26 07:08:51 字數 2513 閱讀 8876

geoserver rest方式發布shp服務

工作需求,要在web端提供發布shp服務的功能,並且能夠使使用者對shp圖層的樣式進行編輯。樣式編輯屬於後話了,現在還沒到達這一步,只是把shp服務發布做完了(樣式採用預設的)

我們知道使用rest方式訪問geoserver,很多功能都需要認證(authorization)資訊,否則是獲取不到實際資料的。所以我們需要在請求頭裡面加上authorization,使得客戶端具有訪問的許可權。

如果是用jquery/webpack-zepto的話,那麼就

const

fetchlist = () => ,

headers:

})return results

}

注意ajax引數中的url,因為我用nginx做了**,使得訪問不像是跨域。由於在headers中加入了認證資訊,瀏覽器會先options方式請求,這樣就導致第一次請求的失敗,因為geoserver並沒有為options請求方式提供對應的介面,它會提示403,就是說它理解了這次請求並拒絕了你,感覺就像是女孩說的話。

至於這個認證資訊,就是base64對geoserver使用者名稱密碼的編碼。我的是admin:geoserver,注意這個格式,然後去base64加密,如果賬號資訊沒有修改過,跟我的一樣,ywrtaw46z2vvc2vydmvy就直接拿去用吧

為了方便,我把nginx配置檔案也亮出來吧

server 

location /

}

其中8040是系統應用的埠,將來向外網對映時也會用這乙個。

當訪問localhost:8040/geoserver/時,就會**至geoserver服務位址,其餘都會**至我的nodejs伺服器。

言歸正傳,前面只是舉例說明一下訪問geoserver的一些基本操作,下面進行shp發布

// 發布

$('#new_pubtn').on('click', function ()

utils.publish(option)

})

這段**很簡單,通過字面意思就很容易明白各項所代表的含義了,就不再展示html怎麼寫了。總之這幾項是我發布shp的幾個必須字段(除了那個type吧。。。)

下面看看發布方法

const

publish = (option) => ,

success: (data, textstatus, jqxhr) => }})

} return results

}

我發現如果不再url後面追加charset=gb2312這種編碼格式,服務中的字段值都是一些亂碼,至少我發布的幾個服務都是出現了亂碼(有中文的)。

上傳的shapefile必須要先打包成zip,這是官網說的,只能照做。注意打包時shapefile不能包含在資料夾中,就是說把shapefile的一系列檔案選中後右鍵「新增到壓縮檔案…」而不是把shapefile放到資料夾中再壓縮。

當伺服器返回201時,就表示建立成功了。

官網說就好了,表示「uploads files to the data store ds, creating it if necessary」,這個「if necessary」是什麼鬼?檢視geoserver發現datastore確實已經建立了,但是打不開。。。

而且這個圖層也沒有發布,預覽也是不可能的。

工作中一直用的是cgcs2000座標系,而geoserver預設的是4326,所以如果不是wgs84座標系的話,就需要這個「fix bug」

當我在geoserver中為發布失敗的圖層進行手動發布時,才發現shp之所以沒有發布時因為沒有定義srs,為什麼。。。翻出幾個月前自己寫的也是shp發布的**,原來配置檔案也要修改,一剎那感覺自己以前這麼厲害,簡直大神啊。

epsg:4490srs>

force_declaredprojectionpolicy>

trueenabled>

featuretype>

這幾行**是我很久之前通過比較兩者(手動shp發布和**提交發布)配置檔案featuretype.xml是發現的

於是

const

fixpublish = (option, index = 0) =>

$.ajax(,

success: (data, textstatus, jqxhr) =>

},error: (jqxhr, textstatus, errorthrown) => }}

})return results

}

至於這個index,當我們對乙個shp提交多次以後,哪怕datastore不同,shp後面中是會新增相應的數字以區分之前提交shp,比如我提交data.zip,裡面壓縮的是dahong.shp,第一次圖層的名稱是dahong,第二次提交就是dahong1,第三次dahong2…

因為名稱和datastore不同,又無法獲知你提交過相同的shp多少次,所以就這麼寫了,確實有點兒心機boy的感覺

AES CBC方式下補齊方式

aes一般是16個位元組為一塊,然後對這一整塊進行加密,如果輸入的字串不夠16個位元組,就需要補位,當然如果你使用nopadding就木辦法了 填充方式需要比較下 才更加清楚 pkcs5padding 填充的原則是,如果長度少於16個位元組,需要補滿16個位元組,補 16 len 個 16 len ...

Tensorboard開啟方式使用方式

第一步,首先在 裡面給神經網路的結構呀,權重呀,偏執呀等等都起好名字,分好類。然後把這個存到檔案裡面,給檔案起名叫logss,當然這些都是在 裡完成的 再執行 第二步,開啟。對於anaconda下的tensorboard,win系統,先開乙個anaconda prompt,然後acitvate te...

執行緒通訊方式同步方式和程序間通訊方式

1 執行緒間的通訊方式 2 執行緒間的同步方式 各個執行緒可以訪問程序中的公共變數,資源,所以使用多執行緒的過程中需要注意的問題是如何防止兩個或兩個以上的執行緒同時訪問同乙個資料,以免破壞資料的完整性。資料之間的相互制約包括 1 直接制約關係,即乙個執行緒的處理結果,為另乙個執行緒的輸入,因此執行緒...