ArcGIS API for Python jako pomocník při správě obsahu na ArcGIS Online

505
0
09-12-2023 02:36 AM
Labels (3)
DavidDaveNovak
Esri Contributor
1 0 505

Hromadný úklid na ArcGIS Online

V případě, že patříte mezi ty, kteří mají ve svém obsahu na ArcGIS Online perfektní pořádek a uklizeno, tak pro Vás následující článek pravděpodobně nebude příliš vhodný. Nicméně i když sám aktivně používám složky pro organizaci obsahu, někdy se stane, že se mi začnou hromadit složky v kořenovém adresáři a ztrácím v nich rychle přehled. 

Díky následujícímu skriptu můžete roztřídit obsah na základě toho, v jakém měsíci byla provedena poslední změna, vytvořit složky s názvy měsíců v roce a obsah do nich automaticky přesunout. 

Skript je možné spustit buď jako samostatný soubor s příponou .py nebo přímo v rámci ArcGIS Notebooks. 

Krok 1 

Přihlášení a import modulů.

 

from arcgis.gis import GIS, ContentManager
import datetime

 

Krok 2

Přihlášení do ArcGIS Online.

 

gis=GIS('https://arcgis.com','Username','Password')

 

Krok 3

Nadefinování uživatele, kořenového adresáře s omezením množství prvků (počítáno od minulosti) a názvů složek, do kterých budeme obsah chtít následně uložit.

 

me=gis.users.me
rootitems=me.items(folder=None,max_items=6)
year=['01_Leden','02_Unor','03_Brezen','04_Duben','05_Kveten','06_Cerven','07_Cervenec','08_Srpen','09_Zari','10_Rijen','11_Listopad','12_Prosinec']

 

Krok 4

Ve čtvrtém kroku složky rovnou vytvoříme.

 

year1=['01_Leden','02_Unor','03_Brezen','04_Duben','05_Kveten','06_Cerven','07_Cervenec','08_Srpen','09_Zari','10_Rijen','11_Listopad','12_Prosinec']
for month in year1:
    gis.content.create_folder(month)

 

Nemusíte se bát, že se složky vytvoří znovu, když skript spustíte vícekrát. Skript pouze zahlásí, že adresář již existuje.

DavidDaveNovak_0-1694102169537.png

Krok 5

Vytvoření seznamu prvků z kořenového adresáře spolu s daty, kdy byly naposledy upraveny.

 

DatemodifiedList=[]

for i in rootitems:
    d=(i.modified/1000)
    dt = datetime.datetime.fromtimestamp(d)
    tempstring=str(dt.date())+'-'+i.title
    DatemodifiedList.append(tempstring)

 

Krok 6

V posledním sedmém kroku již přesuneme všechny položky, které odpovídají nadefinovaným měsícům, do složek se stejným názvem.

 

for item in rootitems:
    epochtime=(item.modified/1000)
    date_time = datetime.datetime.fromtimestamp(epochtime)
    itemYear=date_time.year
    Month=date_time.month
    item.move(year[Month-1])

DatemodifiedList
print ("Položky jsou přesunuty")

 

Závěr

Závěrem bych rád upozornil, že skript takto rozděluje opravdu pouze na základě měsíců, a nikoliv let. Proto doporučuji při prvním úklidu za delší období omezit pomocí vstupního limitu počet položek odzadu za určité období a vytvořit složky s označením příslušného roku. 

Následně můžete každý nový rok skript a názvy složek aktualizovat a spouštět pravidelně, když budete chtít mít rychle uklizeno.