Úvod
ArcGIS Online aArcGIS Enterprise Portal Pro široké využití itemů registrovaných v těchto prostředích je potřeba zadat podrobné informace jako název itemu, shrnutí, popis, tagy, licenční podmínky a další.
I když to tak zní, otevírání jednotlivých itemů a jejich postupné zadávání či aktualizace detailních informací je poměrně náročná práce.
Společnost GEO Jobe, partner Esri USAAdmin Tools placená verze umožňuje hromadnou aktualizaci z CSV, ale tentokrát představíme metodu hromadné aktualizace detailů itemů pomocí Excelu × Pythonu (ArcGIS API for Python). Pokud chcete ověřit ukázkový kód Excelu a Pythonu, jako obvykleje zveřejněn na GitHubu, prosím, podívejte se tam.Poznámka: Tento způsob byl zveřejněn v roce 2021 v souboru s názvemPříklady využití ArcGIS v 3D městském modelování
a obsahuje aktualizaci a zveřejnění detailů itemů ve formátu File Geodatabase (FGDB). Tento web pro využití je postaven naArcGIS Hub Basic, proto je v kódu specifikována skupina s ID skupiny vytvořené v ArcGIS Hub pro web s názvem"Ministerstvo pozemních komunikací 3D městský model „Project PLATEAU“ využití".ID skupiny lze ověřit na ArcGIS Online, ale ID lze určit i u libovolného uživatelem vlastněného objektu mimo skupinu vytvořenou v ArcGIS Hub.Poznámka: Metody vytváření a zpřístupnění webu v ArcGIS Hub naleznete v "ArcGIS Hub Start Guide" nebo "A quick start guide to ArcGIS Hub Basic".Příklad ID skupiny (skupina "Ministerstvo pozemních komunikací 3D městský model „Project PLATEAU“ využití")
1. Postup hromadné aktualizace detailů jednoho itemu1.1 Vlastnosti itemuNejprve ověříme API pro aktualizaci detailů itemu pomocí ArcGIS API for Python. Podle dokumentace API lze aktualizovat detaily itemu metodou arcgis.gis.Item třídyupdate(item_properties=None, data=None, thumbnail=None, metadata=None)
Metoda umožňuje zadat seznam klíčů dictionary pro item_properties. Dokumentace uvádí klíče jako type, typeKeywords, description, title, url, tags, text, snippet, extent, spatialReference, accessInformation, licenseInfo, culture, access a commentsEnabled.
V tomto příkladu budeme aktualizovat title, snippet, description, tags, licenseInfo a accessInformation. Pro lepší pochopení porovnáme klíče definované v item_properties s odpovídajícím zobrazením na obrazovce takto:
id : ID itemu
title : Název
snippet : Shrnutí
description : Popis (lze použít HTML)
tags : Tagy (více tagů oddělených čárkou)
licenseInfo : Licenční podmínky
- accessInformation : Autorská práva
- 1.2 Úprava detailů itemu v Excelu
- Po pochopení informací o detailech itemu provedeme úpravu v Excelu. V řádku 1 listu Sheet1 (v ukázkovém Excel souboru pojmenovaném "UpdateSheet1") zadáme jednotlivé klíče item_properties jako záhlaví sloupců. Od řádku 2 pak zadáme vlastnosti jednotlivých itemů (při převodu do dictionary pomocí .to_dict() musí být názvy sloupců přesně shodné s klíči item_properties).
- Poznámka: Sloupec description byl sjednocen do jednoduššího popisu bez HTML pomocí VBA makra. Protože distribuce Excel souboru s makry může být bezpečnostním rizikem, kód makra je přiložen jako "UpdateDescription_SampleVBA.txt" pro případ potřeby.
- Příklad úpravy v Excelu (ukázka vstupu do Excel souboru použitá ve vývojovém testovacím prostředí)
1.3 Vysvětlení kódu pro hromadnou aktualizaci detailů itemů
Po úpravě v Excelu stačí načíst kód uložený v notebooku a upravit jej podle svého prostředí. Konkrétně jde o změnu hodnot "your_xyz", "new_owner_name" a "share_group_id" uvnitř notebooku podle vašeho prostředí.
V notebooku jsou také komentáře vysvětlující kroky; níže uvedeme jejich popis znovu.
(1) Načtení dat z Excel do Pandas DataFrame
Nejprve načteme Excel do Pandas DataFrame.
import pandas as pd
excel_file = r"your_folder_path\3D_mestsky_model_AGOL_item_detail_vyvoj_test.xlsx"
df = pd.read_excel(excel_file)
Poznámka: Od verze xlrd 2.0.0 je podporován pouze formát "xls", proto při čtení "xlsx" je nutné specifikovat engine=openpyxl. V prostředí ArcGIS Pro s verzí xlrd 1.2.0 není specifikace engine nutná (návod pro vytvoření prostředí v ArcGIS Pro najdete na [ArcGIS Developer Resources] - [Upgrade arcgis package] - [Prostředí ArcGIS Pro 2.3 a vyšší]).
import pandas as pd
excel_file = r"your_folder_path\3D_mestsky_model_AGOL_item_detail_vyvoj_test.xlsx"
df = pd.read_excel(excel_file,engine='openpyxl')
(2) Připojení k organizačnímu účtu ArcGIS Online a aktualizace informací o itemech a sdílení ve specifické skupiněNásledující kód připojí organizaci ArcGIS Online a pro každý řádek získá id z Excel sloupce 'id', poté získá odpovídající item a aktualizuje jeho 'title', 'snippet', 'description', 'tags', 'licenseInfo' a 'accessInformation' pomocí metody item.update(). Dále nastaví ochranu proti odstranění pomocí my_item.protect(enable=True) a sdílí item se specifickou skupinou pomocí my_item.share(org=True, groups=['share_group_id']).Jak bylo vysvětleno výše, klíče dictionary použité v item_properties odpovídají popisu v části 1.1 Vlastnosti itemu.
from arcgis.gis import GIS
gis = GIS("https://www.arcgis.com/", "your_username", "your_password")
for index, row in df.iterrows():
item_id = row[0] # získání id položky
item_properties = row[1:7].to_dict() # získání slovníku vlastností title až accessInformation ze sloupců řádku
my_item = gis.content.get(item_id) # získání položky podle id
my_item.update(item_properties) # aktualizace informací title až accessInformation položky
my_item.protect(enable = True) # aktivace ochrany proti odstranění položky
my_item.share(org= True, groups=['share_group_id']) # sdílení položky s organizací a specifickou skupinou - testovací prostředí; „Open Data Shared Content“ (id:f862b4f5d32f435596795947df012042), produkční prostředí; „Ministerstvo pozemních komunikací 3D městský model „Project PLATEAU“ využití“ (id:d568e2190c4f456f8bd812c8e07c719a)
2 Vysvětlení kódu pro publikování katalogové stránky v ArcGIS Hub
Poznámka: Protože původní postup hromadné aktualizace informací o položkách výše a následující postup mohou mít různé uživatele nebo rozdílné pracovní procesy, může být vhodnější rozdělit je do samostatných notebooků. Tentokrát tedy popíšeme postup zaznamenaný ve stejném notebookovém souboru pro vaši informaci.
Pokud chcete rozdělit ukázkový notebookový soubor na části, před následujícím kódem je třeba provést kroky načtení dat z Excel do Pandas DataFrame podle bodu (1).
my_item.reassign_to("new_owner_name") # テスト環境;"kataya@dev3admin"、本番環境:"Esri_Japan"
Pro opětovné zobrazení obsahu zveřejněného na ArcGIS Hub je třeba po změně vlastníka znovu sdílet specifickou skupinu organizace.
my_item.share(everyone = True, org= True, groups=['your_share_group_id']) # Sdílení s organizací a specifickou skupinou - testovací prostředí; „Open Data sdílený obsah“ (id:f862b4f5d32f435596795947df012042), produkční prostředí; „Ministerstvo země a dopravy 3D městský model „Project PLATEAU“ využití obsahu“ (id:d568e2190c4f456f8bd812c8e07c719a)
Obrázek po aktualizaci
Po dokončení spuštění skriptu, pokud se na položku podíváte samostatně z ArcGIS Online, bude to vypadat následovně.
Mapa – příklad aktualizace samostatné položky (podrobnosti o položce ArcGIS Online: testovací prostředí „3D městský model (Project PLATEAU) Úřad metropole FDataBase“)
Také v katalogu ArcGIS Hub to vypadá následovně.
Mapa – příklad aktualizace samostatné položky (podrobnosti o položce katalogu ArcGIS Hub: testovací prostředí katalogu)
Pokud se zaměříte na střed obrazovky katalogu na „3D městský model Úřad metropole (Project PLATEAU) FDataBase“ a podíváte se na popis podrobností položky ArcGIS Online výše (v Excelu odpovídá sloupci description, 107 znaků), znamená to, že při zveřejnění dat na ArcGIS Hub je technikou ušetřit dvojí zadávání prioritou uvedení nezbytných informací na začátku textu popisu podrobností položky.
Shrnutí
V tomto článku jsme představili kombinaci Excel × Python (ArcGIS API for Python), která nejen hromadně aktualizuje informace o položkách v ArcGIS Online, ale také šetří čas při přihlašování do ArcGIS Hub a nakonec umožňuje zveřejnit105 položek (odkaz:katalog „3D městský model FDataBase“).
• Ukázkový soubor notebooku, • vzorek Excelu, • tři soubory VBA makra pro aktualizaci sloupce description jsou zveřejněny na GitHubu jako běžná praxe.Na GitHubu veřejně dostupné, prosím využijte je.
Také pokud chcete využít položky uvnitř organizace, doporučuji se podívat na předchozí článek „Úvod do správy položek – část první“ ačást druhá“, kde jsou uvedeny tipy pro efektivní využití tagů.
Reference
•GEO Jobe společnost Admin Tools
•Web využití příkladů aplikace 3D městského modelu v ArcGIS
【ArcGIS Hub】
•Přehled ArcGIS Hub Basic
•Startovací průvodce ArcGIS Hub Basic
•Rychlý startovní průvodce ArcGIS Hub Basic
【Blogový článek】
•Úvod do správy položek – část první: Efektivní využití tagů
•Úvod do správy položek – část druhá: Využití kategorií
【Kód, API】
•Skript pro aktualizaci přes REST API z CSV pomocí čistého Pythonu
•Průvodce ArcGIS API for Python
•API reference ArcGIS API for Python (třída arcgis.gis.Item)
Aktualizace informací o položce: update(item_properties=None, data=None, thumbnail=None, metadata=None)
Sdílení položky: share(everyone=False, org=False, groups=None, allow_members_to_edit=False)
Změna vlastníka: reassign_to(target_owner, target_folder=None)