最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2022年07月01日 10:53:46   作者:Leo_Franklin  
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium實(shí)現(xiàn)在 Geoserver批量發(fā)布來自Mongo中的矢量數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

首先,聲明一下,這里我完成的腳步屬于半自動化的,我戲稱它為“有監(jiān)督的半自動化”腳本。具體原因后面會詳細(xì)說明。

一、安裝 Selenium和ChromeDriver

安裝Selenium:

pip install selenium

安裝ChromeDriver

ChromeDriver下載地址: chromedirver.

注意:下載的版本號要和自己Chrome版本號一樣

二、安裝Geoserver必要插件

注意:安裝的geoserver插件版本要和安裝的geoserver版本號完全一致,否則會報(bào)錯(cuò)

1.安裝Mongodb插件:

以我的本地geoserver版本為例:

解壓后得到的jar文件

將得到的jar文件粘貼到這里,重啟tomcat服務(wù)器即可安裝

2.安裝矢量插件

這是從官網(wǎng)插件下載后的并且解壓后的樣子,安裝方式同Mongo插件一樣

三、關(guān)于Selenium中XPath的使用技巧

1.在要操作的網(wǎng)站按F12打開Chrome的調(diào)試工具,選擇元素選擇工具,如下圖所示:

2.選擇你要操作的元素,如下所示:在這里插入圖片描述

3.右鍵Copy,選擇復(fù)制完整的XPath路徑,這樣就可以精準(zhǔn)的引用到代碼中了。

四、腳本編寫

完整代碼如下:

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
count = 0 # 用于統(tǒng)計(jì)帶發(fā)布圖層個(gè)數(shù)

wd = webdriver.Chrome()
wd.implicitly_wait(5) # 隱藏式等待
wd.get('http://localhost:8080/geoserver/web/') # 鏈接本地的geoserver
wd.find_element_by_id("username").send_keys("admin") # 填入用戶名
wd.find_element_by_id("password").send_keys("geoserver") # 填入密碼
wd.find_element_by_css_selector(".positive").click()
time.sleep(1)
wd.find_element_by_xpath('//*[@id="navigation"]/li[2]/ul/li[4]/a/span').click() # 選擇圖層頁
time.sleep(1)
wd.find_element_by_xpath('//*[@id="page"]/div[1]/div[2]/ul/li[1]/a').click() # 新建圖層
time.sleep(1)
select = Select(wd.find_element_by_css_selector(".select2-hidden-accessible")) # 選擇工作區(qū)
time.sleep(1)
select.select_by_index(4) # 這里數(shù)字根據(jù)需求自行調(diào)整

elements = wd.find_elements_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div/div[2]/div/table/tbody/tr[*]/td[2]/span')

# 統(tǒng)計(jì)MongoDB中待發(fā)布的圖層個(gè)數(shù)
for element in elements:
    print(element.text)
    count = count + 1
print(count)

wd.find_element_by_xpath('//*[@id="navigation"]/li[2]/ul/li[4]/a/span').click() # 退回到圖層頁

for i in range(1, count): #這里的count可以不用,直接自己指定范圍
    wd.find_element_by_xpath('//*[@id="page"]/div[1]/div[2]/ul/li[1]/a').click() # 新建圖層
    time.sleep(1)
    select = Select(wd.find_element_by_css_selector(".select2-hidden-accessible")) # 選擇工作區(qū)
    time.sleep(1)
    select.select_by_index(14) # 這里數(shù)字根據(jù)需求自行調(diào)整
    time.sleep(1)
    wd.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div/div[2]/div/table/tbody/tr['+ str(i) + ']/td[3]/span/a/span').click() # 點(diǎn)擊進(jìn)入發(fā)布配置
    time.sleep(1)
    wd.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[1]/div/ul/div/li[2]/fieldset/ul/li[1]/div[2]/a[1]').click() # 選擇范圍
    time.sleep(6)
    wd.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[1]/div/ul/div/li[2]/fieldset/ul/li[2]/a').click()# 選擇范圍
    time.sleep(6)
    wd.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[1]/ul/li[4]/a/span').click() # 切換到title cacheing
    time.sleep(1)
    wd.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div/fieldset/ul/li[2]/div/ul/li[6]/div[1]/input").click() # 點(diǎn)擊需要添加的矢量切片
    # time.sleep(1)
    wd.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div/fieldset/ul/li[2]/div/ul/li[6]/div[2]/input").click() # 點(diǎn)擊需要添加的矢量切片
    # time.sleep(1)
    wd.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div/fieldset/ul/li[2]/div/ul/li[6]/div[3]/input").click() # 點(diǎn)擊需要添加的矢量切片
    # time.sleep(1)
    wd.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div/fieldset/ul/li[2]/div/ul/li[6]/div[4]/input").click() # 點(diǎn)擊需要添加的矢量切片
    # time.sleep(1)
    wd.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div/fieldset/ul/li[2]/div/ul/li[7]/input").send_keys(10) # 添加時(shí)長
    # time.sleep(1)
    wd.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div/fieldset/ul/li[2]/div/ul/li[8]/input").send_keys(10) # 添加時(shí)長
    # time.sleep(1)
    wd.find_element_by_css_selector("#page div.button-group.selfclear > a:nth-child(1)").click()
    time.sleep(1)

解釋一下:代碼中出現(xiàn)了time.sleep(6),6秒,大家可能會覺得等待的時(shí)間有些長,但是這是博主在實(shí)踐中覺得可行的時(shí)間。因?yàn)橛械牡胤綌?shù)據(jù)量太大,geoserver計(jì)算邊框時(shí)會耗時(shí)較長,導(dǎo)致崩潰,如果大家的數(shù)據(jù)量較小,則可以把,這里的時(shí)間調(diào)小,或者沒有。

這里Mongon的鏈接之類的工作都是在,之前手動操作的,沒有做自動化,畢竟也沒有多少,這就是半自動化,而監(jiān)督是腳本執(zhí)行過程中如果還是避免不了,計(jì)算時(shí)間過長,則相應(yīng)圖層手動發(fā)布,之后的調(diào)整代碼for循環(huán)的range后再次執(zhí)行即可。

再給大家曬一下geoserver計(jì)算邊框時(shí)長超過的后果:

到此這篇關(guān)于Python+Selenium實(shí)現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python批量發(fā)布Mongo矢量數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python并發(fā)之多進(jìn)程的方法實(shí)例代碼

    Python并發(fā)之多進(jìn)程的方法實(shí)例代碼

    這篇文章主要介紹了Python并發(fā)之多進(jìn)程的方法實(shí)例代碼,文中也提到了進(jìn)程與線程的共同點(diǎn),需要的朋友跟隨腳本之家小編一起看看吧
    2018-08-08
  • Python的Django中django-userena組件的簡單使用教程

    Python的Django中django-userena組件的簡單使用教程

    這篇文章主要介紹了Python的Django中django-userena組件的簡單使用教程,包括用戶登陸和注冊等簡單功能的實(shí)現(xiàn),需要的朋友可以參考下
    2015-05-05
  • python try except返回異常的信息字符串代碼實(shí)例

    python try except返回異常的信息字符串代碼實(shí)例

    這篇文章主要介紹了python try except返回異常的信息字符串代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python實(shí)現(xiàn)圖片上添加圖片

    python實(shí)現(xiàn)圖片上添加圖片

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片上添加圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python與C++中梯度方向直方圖的實(shí)現(xiàn)

    Python與C++中梯度方向直方圖的實(shí)現(xiàn)

    在學(xué)習(xí)HOG特征的時(shí)候,發(fā)現(xiàn)一片英文文章講得淺顯易懂。因此翻譯在這里學(xué)習(xí),感興趣的朋友快來看看吧
    2022-03-03
  • Python循環(huán)結(jié)構(gòu)詳解

    Python循環(huán)結(jié)構(gòu)詳解

    這篇文章主要介紹了Python循環(huán)結(jié)構(gòu)詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Python干貨實(shí)戰(zhàn)之八音符醬小游戲全過程詳解

    Python干貨實(shí)戰(zhàn)之八音符醬小游戲全過程詳解

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)一個(gè)八音符醬小游戲,大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • 22個(gè)Python的萬用公式分享

    22個(gè)Python的萬用公式分享

    在大家的日常python程序的編寫過程中,都會有自己解決某個(gè)問題的解決辦法,或者是在程序的調(diào)試過程中,用來幫助調(diào)試的程序公式。小編通過幾十萬行代碼的總結(jié)處理,總結(jié)出了22個(gè)python萬用公式,可以幫助大家解決在日常的python編程中遇到的大多數(shù)問題,一起來看看吧
    2022-12-12
  • Python常用GUI框架原理解析匯總

    Python常用GUI框架原理解析匯總

    這篇文章主要介紹了Python常用GUI框架原理解析匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 使用Python實(shí)現(xiàn)大文件切片上傳及斷點(diǎn)續(xù)傳的方法

    使用Python實(shí)現(xiàn)大文件切片上傳及斷點(diǎn)續(xù)傳的方法

    本文介紹了使用 Python 實(shí)現(xiàn)大文件切片上傳及斷點(diǎn)續(xù)傳的方法,包括功能模塊劃分(獲取上傳文件接口狀態(tài)、臨時(shí)文件夾狀態(tài)信息、切片上傳、切片合并)、整體架構(gòu)流程、技術(shù)細(xì)節(jié)(相關(guān)接口和功能的代碼實(shí)現(xiàn)),最后進(jìn)行了小結(jié),需要的朋友可以參考下
    2025-01-01

最新評論

齐齐哈尔市| 新巴尔虎右旗| 永平县| 松滋市| 广平县| 巢湖市| 金溪县| 天峨县| 平原县| 兴和县| 佛冈县| 友谊县| 安阳市| 莎车县| 远安县| 太保市| 兴国县| 黑山县| 桂林市| 新晃| 谷城县| 金华市| 光山县| 简阳市| 手游| 阳山县| 太仓市| 伊通| 丰都县| 龙游县| 黄浦区| 营山县| 闽侯县| 阿荣旗| 芒康县| 乐至县| 衢州市| 汕头市| 呼和浩特市| 定西市| 无锡市|