Select to view content in your preferred language

Výpočet velikosti příloh na ArcGIS Online nebo Portal for ArcGIS

366
0
02-14-2024 01:39 AM
DavidDaveNovak
Esri Contributor
0 0 366

Přílohy lze do vrstev přidávat prostřednictvím mnoha aplikací. Charakteristické to je pro mobilní aplikace, kde jsou přílohami fotografie mapovaných prvků. Přílohy můžeme přidávat také přímo v aplikaci ArcGIS Pro (ArcGIS Pro: Add or remove file attachments) a upravit je tak ještě před publikováním na ArcGIS Online nebo ArcGIS Enterprise. Přidávat přílohy lze také přímo třeba na ArcGIS Online na kartě Data ve vlastnostech vrstvy. 

DavidDaveNovak_0-1707490981851.png

To, kolik místa přílohy ve vrstvě zabírají, zjistíme nejsnadněji ve vlastnostech položky, v pravém sloupci s podrobnostmi:

DavidDaveNovak_4-1707494280350.png

Pokud potřebujeme zkontrolovat velikost příloh u většího množství vrstev nebo se na ni potřebujeme dotázat prostřednictvím pythonového skriptu (nebo obojí zároveň), můžeme pomocí rozhraní ArcGIS API for Python nebo v sešitech ArcGIS Notebooks vypočítat celkovou velikost příloh. V neposlední řadě se tento postup může hodit při různých automatických kontrolách obsahu na ArcGIS Online.

1. Importujte potřebné moduly.

 

import arcgis
from arcgis import GIS
import pandas as pd

 

 

2. Připojte se k ArcGIS Online nebo Portal for ArcGIS.

 

#For ArcGIS Online
gis = GIS('https://arcgis.com', 'username', 'password')
print("Connected")

#For Portal for ArcGIS
gis = GIS('https://<machine>.<domain>/<web adaptor name>', 'username', 'password', verify_cert=False)
print("Connected")

 

 

3. Zadejte ID zpracovávané vrstvy (<item_ID>) a název pole s unikátním ID v této vrstvě (<FID>) – to bývá na ArcGIS Online obvykle FID a v ArcGIS Enterprise OBJECTID, ale nemusí to být pravidlem.

 

item = '<item_ID>'
layer = gis.content.get(item)
ids = layer.layers[0]
fs = ids.query(where="1=1")
oids = [f.attributes["FID"] for f in fs.features]

 

 

V případě použití Notebooku je možné vrstvu přidat i pomocí interaktivní možnosti „Přidat“ výběrem z obsahu.

Pokud položka obsahuje více vrstev, upravte hodnotu indexu v 'ids = item.layers[0]' podle vrstvy, ve které se nacházejí přílohy. Chcete-li například vypočítat celkovou velikost přílohy ve druhé vrstvě, nahraďte v kódu hodnotu 0 hodnotou 1.

 

4. Vypíšeme pole všech záznamů. Tam, kde přílohy existují, budou záznamy v poli obsahovat i vlastnosti příloh, jako je název, ID objektu, typ souboru – a zejména to, co nás zajímá nejvíce, velikost.

 

attached = [ids.attachments.get_list(oid=oid) for oid in oids]
print(attached)

 

 

DavidDaveNovak_1-1707491803439.png

 

5. Poslední krok vypočítá celkovou velikost příloh, zobrazí výsledek v KB a také v bajtech, což se nám někdy může hodit pro další zpracování.

print("Total size: " + str(ids.attachments.search(as_df=True)['SIZE'].sum()))

#If additional word is unnecessary, the following line can be used:
print(ids.attachments.search(as_df=True)['SIZE'].sum())

DavidDaveNovak_3-1707491909905.png