成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于Python實(shí)現(xiàn)GeoServer矢量文件批量發(fā)布

89542767 / 676人閱讀

  小編寫這篇文章的主要目的,主要是來給大家做個(gè)詳細(xì)的解答,解答的內(nèi)容主要是Python的相關(guān)內(nèi)容,包括利用Python實(shí)現(xiàn)GeoServer矢量文件的批量發(fā)布,具體是怎么樣進(jìn)行操作呢?下面就給大家詳細(xì)解答下。


  0.前言


  由于矢量圖層文件較多,手動(dòng)發(fā)布費(fèi)時(shí)費(fèi)力,python支持的關(guān)于geoserver包(geoserver-restconfig)又由于年久失修,無法在較新的geoserver版本中正常使用。


  查閱了很多資料,參考了下面這篇博客,我簡(jiǎn)單寫了一個(gè)自動(dòng)化發(fā)布矢量文件的代碼。


  基本流程:獲取指定文件夾下所有的.shp文件,在通過模擬正常發(fā)布的流程逐個(gè)發(fā)布。


  Python+Selenium實(shí)現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)


  1.環(huán)境


  1.1基礎(chǔ)環(huán)境


  首先你的電腦要有python環(huán)境、谷歌瀏覽器和geoserver2.19左右的版本


  接著在命令行中通過如下指令,安裝Web自動(dòng)化測(cè)試工具selenium

  pip install selenium


  1.2谷歌瀏覽器驅(qū)動(dòng)


  此外,還需要谷歌瀏覽器的對(duì)應(yīng)驅(qū)動(dòng)。


  首先需要查詢你的谷歌瀏覽器的版本,在谷歌瀏覽器的網(wǎng)址欄輸入chrome://version/,第一行就是版本號(hào)

01.png

  在這個(gè)網(wǎng)址中找到對(duì)應(yīng)版本號(hào)的驅(qū)動(dòng)


  這里和我的谷歌瀏覽器最匹配的驅(qū)動(dòng)是

02.png

  下載windows版本的驅(qū)動(dòng)

03.png

  解壓后將exe文件放置在main.py文件所在的目錄下。


  2.基本流程


  2.1初始化


  運(yùn)行代碼后,程序會(huì)自動(dòng)開啟一個(gè)google瀏覽器窗口,接著進(jìn)入geoserver。

04.png

  2.2登錄


  自動(dòng)輸入用戶名和密碼,并點(diǎn)擊登錄

05.png

  2.3新建數(shù)據(jù)源


  進(jìn)入新建數(shù)據(jù)源發(fā)布頁面


  http://localhost:8080/geoserver/web/wicket/bookmarkable/org.geoserver.web.data.store.NewDataPage


  選擇shapefile文件格式


  2.4保存數(shù)據(jù)存儲(chǔ)


  選擇工作區(qū),數(shù)據(jù)源名稱,shapefile文件的位置,設(shè)置DBF字符集,點(diǎn)擊保存

06.png

  2.5發(fā)布圖層


  首先點(diǎn)擊發(fā)布

07.png

  接著設(shè)置源坐標(biāo)系,目標(biāo)坐標(biāo)系,原始邊界和目標(biāo)邊界

08.png

  最后點(diǎn)擊保存完成發(fā)布


  3.完整代碼


  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)
  #發(fā)布一個(gè)圖層服務(wù)
  def publish_a_layer(workplace,path,file,defined_srs="EPSG:3857"):
  ##------------存儲(chǔ)數(shù)據(jù)----------------
  #進(jìn)入數(shù)據(jù)存儲(chǔ)
  driver.get(baseUrl+"web/wicket/bookmarkable/org.geoserver.web.data.store.NewDataPage")
  #選擇shapefile格式
  driver.find_element_by_link_text("Shapefile").click()
  sleep(0.8)
  #選擇工作區(qū)
  driver.find_element_by_xpath("//fieldset/div[1]/div/select").send_keys(workplace)
  #輸入數(shù)據(jù)源名稱
  driver.find_element_by_xpath("//fieldset/div[2]/div/input").send_keys(file)
  #清空原有的連接參數(shù)
  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")
  #點(diǎn)擊保存
  driver.find_element_by_link_text("保存").click()
  ##----------------發(fā)布圖層--------------
  sleep(0.8)
  #點(diǎn)擊發(fā)布
  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)
  #輸入圖層標(biāo)題
  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)
  #設(shè)置邊界
  driver.find_element_by_link_text("從數(shù)據(jù)中計(jì)算").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("從數(shù)據(jù)中計(jì)算").click()
  driver.find_element_by_link_text("Compute from native bounds").click()
  sleep(0.8)
  #發(fā)布圖層
  driver.find_element_by_link_text("保存").click()
  sleep(1)
  #查找dir目錄中文件后綴為suffix的文件
  def getFiles(dir,suffix):
  res=[]
  for root,directory,files in os.walk(dir):#=>當(dāng)前根,根下目錄,目錄下的文件
  for filename in files:
  name,suf=os.path.splitext(filename)#=>文件名,文件后綴
  if suf==suffix:
  res.append(name)#=>把一串字符串組合成路徑
  return res
  #配置參數(shù)
  username="admin"#用戶名
  password="geoserver"#密碼
  workplace="test"#工作區(qū)名
  #geoserver根網(wǎng)址
  baseUrl="http://localhost:8080/geoserver/"
  #發(fā)布文件所在文件夾的絕對(duì)路徑
  absolutePath="D:geoserver-2.19.1-bindata_dirtest_res"
  files=getFiles(absolutePath,".shp")
  #啟動(dòng)瀏覽器
  driver=webdriver.Chrome()
  login()
  for file in files:
  publish_a_layer(workplace,absolutePath,file)

  綜上所述,這篇內(nèi)容就給大家介紹到這里了,希望可以給各位讀者帶來幫助。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128441.html

相關(guān)文章

  • Python+Selenium實(shí)現(xiàn)Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)

      小編寫這篇文章的一個(gè)主要目的,主要是來給大家做一個(gè)解答,解答的內(nèi)容是Python+Selenium,具體的一個(gè)內(nèi)容解釋是什么呢?比如,我們可以實(shí)現(xiàn)Geoserver批量發(fā)布Mongo矢量數(shù)據(jù),具體的一個(gè)內(nèi)容,下面就給大家詳細(xì)解答下?! ∈紫龋暶饕幌?,這里我完成的腳步屬于半自動(dòng)化的,我戲稱它為有監(jiān)督的半自動(dòng)化腳本。具體原因后面會(huì)詳細(xì)說明?! ∫?、安裝Selenium和ChromeDriver ...

    89542767 評(píng)論0 收藏0
  • 還在抱怨pandas運(yùn)行速度慢?這幾個(gè)方法會(huì)顛覆你的看法

    摘要:它還使用執(zhí)行所謂的鏈?zhǔn)剿饕?,這通常會(huì)導(dǎo)致意外的結(jié)果。但這種方法的最大問題是計(jì)算的時(shí)間成本。這些都是一次產(chǎn)生一行的生成器方法,類似中使用的用法。在這種情況下,所花費(fèi)的時(shí)間大約是方法的一半。根據(jù)每小時(shí)所屬的應(yīng)用一組標(biāo)簽。 作者:xiaoyu 微信公眾號(hào):Python數(shù)據(jù)科學(xué) 知乎:python數(shù)據(jù)分析師 showImg(https://segmentfault.com/img/bVboe...

    keelii 評(píng)論0 收藏0
  • 慕課網(wǎng)_《如何使用高德云圖在線制作屬于你的地圖》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。用戶可以在服務(wù)器端調(diào)用云存儲(chǔ)云檢索從而構(gòu)建自己的存儲(chǔ)和檢索服務(wù),甚至可以制作自己的數(shù)據(jù)管理臺(tái)。 時(shí)間:2017年08月13日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:云圖產(chǎn)品介紹 1-1 云圖產(chǎn)品介紹...

    k00baa 評(píng)論0 收藏0
  • 慕課網(wǎng)_《如何使用高德云圖在線制作屬于你的地圖》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。用戶可以在服務(wù)器端調(diào)用云存儲(chǔ)云檢索從而構(gòu)建自己的存儲(chǔ)和檢索服務(wù),甚至可以制作自己的數(shù)據(jù)管理臺(tái)。 時(shí)間:2017年08月13日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:云圖產(chǎn)品介紹 1-1 云圖產(chǎn)品介紹...

    afishhhhh 評(píng)論0 收藏0
  • Vue下的cesium使用GeoServer的wms服務(wù)跨域問題

    摘要:兩種方案中間件我沒搞成功把文件放進(jìn)去之后改好了報(bào),這個(gè)我沒搞成功就不多說了,需要的可以自行搜索一波。需要監(jiān)聽的項(xiàng)目所在端口號(hào)就比如我的項(xiàng)目啟動(dòng)端口是,這里就寫地址,本地和都可以項(xiàng)目中的路徑這個(gè)意思就是在項(xiàng)目中訪問的時(shí)候把請(qǐng)求轉(zhuǎn)到是轉(zhuǎn)發(fā)地址 兩種方案 coess中間件(我沒搞成功) 把class文件放進(jìn)去之后改好了web.xml報(bào)504,這個(gè)我沒搞成功就不多說了,需要的可以自...

    Seay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<