<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
由於向量圖層檔案較多,手動釋出費時費力,python支援的關於geoserver包(geoserver-restconfig)又由於年久失修,無法在較新的geoserver版本中正常使用。
查閱了很多資料,參考了下面這篇部落格,我簡單寫了一個自動化釋出向量檔案的程式碼。
基本流程:獲取指定資料夾下所有的.shp檔案,在通過模擬正常釋出的流程逐個釋出。
Python+Selenium實現在Geoserver批次釋出Mongo向量資料
首先你的電腦要有python環境、谷歌瀏覽器和geoserver2.19左右的版本
接著在命令列中通過如下指令,安裝Web自動化測試工具selenium
pip install selenium
此外,還需要谷歌瀏覽器的對應驅動。
首先需要查詢你的谷歌瀏覽器的版本,在谷歌瀏覽器的網址欄輸入chrome://version/,第一行就是版本號
在這個網址中找到對應版本號的驅動
這裡和我的谷歌瀏覽器最匹配的驅動是
下載windows版本的驅動
解壓後將exe檔案放置在main.py檔案所在的目錄下。
執行程式碼後,程式會自動開啟一個google瀏覽器視窗,接著進入geoserver。
自動輸入使用者名稱和密碼,並點選登入
進入新建資料來源釋出頁面
http://localhost:8080/geoserver/web/wicket/bookmarkable/org.geoserver.web.data.store.NewDataPage
選擇shapefile檔案格式
選擇工作區,資料來源名稱,shapefile檔案的位置,設定DBF字元集,點選儲存
首先點選釋出
接著設定源座標系,目標座標系,原始邊界和目標邊界
最後點選儲存完成釋出
main.py
from time import sleep from selenium import webdriver import os # 登入 def login(): driver.get(baseUrl) driver.find_element_by_id("username").send_keys(username) # 填入使用者名稱 driver.find_element_by_id("password").send_keys(password) # 填入密碼 driver.find_element_by_css_selector(".positive").click() sleep(0.8) # 釋出一個圖層服務 def publish_a_layer(workplace, path, file, defined_srs="EPSG:3857"): ## ------------ 儲存資料---------------- # 進入資料儲存 driver.get(baseUrl+"web/wicket/bookmarkable/org.geoserver.web.data.store.NewDataPage") # 選擇shapefile格式 driver.find_element_by_link_text("Shapefile").click() sleep(0.8) # 選擇工作區 driver.find_element_by_xpath("//fieldset/div[1]/div/select").send_keys(workplace) # 輸入資料來源名稱 driver.find_element_by_xpath("//fieldset/div[2]/div/input").send_keys(file) # 清空原有的連線引數 driver.find_element_by_css_selector(".longtext").clear() # 輸入Shapefile檔案的位置 driver.find_element_by_css_selector(".longtext").send_keys("file:" + path + file + ".shp") # 選擇DBF的字元集 driver.find_element_by_xpath("//fieldset/div[2]/div/select").send_keys("GB2312") # 點選儲存 driver.find_element_by_link_text("儲存").click() ## ----------------釋出圖層-------------- sleep(0.8) # 點選釋出 driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/div/div[2]/div/table/tbody/tr/td[3]/span/a").click() sleep(0.8) # 輸入圖層命名 driver.find_element_by_css_selector("input#name").clear() driver.find_element_by_css_selector("input#name").send_keys(file) # 輸入圖層標題 driver.find_element_by_css_selector("input#title").clear() driver.find_element_by_css_selector("input#title").send_keys(file) # 輸入定義SRS driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[1]/div/ul/div/li[1]/fieldset/ul/li[2]/span/input").clear() driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[1]/div/ul/div/li[1]/fieldset/ul/li[2]/span/input").send_keys(defined_srs) # 設定邊界 driver.find_element_by_link_text("從資料中計算").click() driver.find_element_by_link_text("Compute from native bounds").click() driver.find_element_by_id("srsHandling").send_keys("Reproject native to declared") driver.find_element_by_link_text("從資料中計算").click() driver.find_element_by_link_text("Compute from native bounds").click() sleep(0.8) # 釋出圖層 driver.find_element_by_link_text("儲存").click() sleep(1) # 查詢dir目錄中檔案字尾為suffix的檔案 def getFiles(dir, suffix): res = [] for root, directory, files in os.walk(dir): # =>當前根,根下目錄,目錄下的檔案 for filename in files: name, suf = os.path.splitext(filename) # =>檔名,檔案字尾 if suf == suffix: res.append(name) # =>把一串字串組合成路徑 return res # 設定引數 username = "admin" # 使用者名稱 password = "geoserver" # 密碼 workplace = "test" # 工作區名 # geoserver根網址 baseUrl = "http://localhost:8080/geoserver/" # 釋出檔案所在資料夾的絕對路徑 absolutePath = "D:\geoserver-2.19.1-bin\data_dir\test_res\" files = getFiles(absolutePath, ".shp") # 啟動瀏覽器 driver = webdriver.Chrome() login() for file in files: publish_a_layer(workplace, absolutePath, file)
以上就是基於Python實現GeoServer向量檔案批次釋出的詳細內容,更多關於Python GeoServer向量檔案發布的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45