Inleiding
ArcGIS Online enArcGIS Enterprise Portal geregistreerde items breed inzetten binnen een organisatie vereist invoer van gedetailleerde informatie zoals titel, samenvatting, beschrijving, tags en gebruiksvoorwaarden van het item.
Dat gezegd hebbende, is het een behoorlijk tijdrovende taak om elk item één voor één te openen en die details in te voeren of bij te werken.
Bij de Amerikaanse Esri partnerGEO Jobe is er een betaalde versie vanAdmin Tools die bulkupdates vanuit CSV mogelijk maakt, maar deze keer introduceren we een methode om itemdetails in bulk bij te werken met Excel × Python (ArcGIS API for Python). Voor wie snel de voorbeeld Excel en Python code wil controleren, is het zoals gewoonlijkopen source op GitHub beschikbaar, dus bekijk dat gerust.
* Deze methode is gebaseerd op een bestand dat in 2021 werd gepubliceerd in de "3D stedelijk model ArcGIS gebruikscases verzameld op een gebruikssite" waarin FGDB (File Geodatabase) itemdetails werden bijgewerkt en openbaar gemaakt. Dit is de methode die werd toegepast toen dit gebruikssite werd gebouwd metArcGIS Hub Basic, waarbij binnen de code een specifieke groep als groep-id wordt opgegeven voor de site die met ArcGIS Hub was voorbereid.De groep "Ministerie van Landinfrastructuur, Transport en Toerisme 3D stedelijk model 'Project PLATEAU' gebruik content" wordt als group id opgegeven. De group id kan worden bevestigd op ArcGIS Online zoals hieronder weergegeven, maar id kan ook elke willekeurige groep zijn waartoe de gebruiker behoort buiten de groepen die met ArcGIS Hub zijn gemaakt.
Let op dat voor het maken en starten van een site in ArcGIS Hub u kunt verwijzen naar de "ArcGIS Hub startgids" of "A quick start guide to ArcGIS Hub Basic".
Afbeelding - Voorbeeld van group id (gebruikersgroep van onze organisatie voor het gebruik van het Ministerie van Landinfrastructuur, Transport en Toerisme 3D stedelijk model 'Project PLATEAU' content)
1 Procedure om itemdetails in bulk bij te werken
1.1 Eigenschappen van het item
Eerst bevestigen we de API om itemdetails bij te werken met ArcGIS API for Python. Volgens de API-referentie wordt het bijwerken van itemdetails uitgevoerd met de methode arcgis.gis.Item klasse's
update(item_properties=None, data=None, thumbnail=None, metadata=None)
methode. Met item_properties kunt u een lijst met toegestane dictionary keys specificeren; volgens Help zijn type, typeKeywords, description, title, url, tags, text, snippet, extent, spatialReference, accessInformation, licenseInfo, culture, access en commentsEnabled toegestaan.
In dit voorbeeld zullen we title, snippet, description, tags, licenseInfo en accessInformation bijwerken. Om het beter te begrijpen koppelen we hier de keys die aan item_properties worden doorgegeven aan hun daadwerkelijke schermweergave:
- id : item id
- title : titel
- snippet : samenvatting
- description : beschrijving (HTML toegestaan)
- tags : tags (meerdere gescheiden door komma's)
- licenseInfo : gebruiksvoorwaarden
- accessInformation : auteursrechteninformatie
1.2 Organiseren van itemdetails in Excel
Nu we weten welke informatie we moeten organiseren voor itemdetails, voeren we in rij 1 van Sheet1 (in het voorbeeld Excel-bestand heet dit "UpdateSheet1") elk key van item_properties in en vanaf rij 2 voeren we per rij de eigenschappen van elk item in (omdat .to_dict() wordt gebruikt om te converteren naar dictionary binnen de code moet rij 1 exact overeenkomen met key namen in item_properties).
Let op dat voor kolom description HTML vervangen is door een uniform leesbare beschrijving via VBA macro's. Omdat macro-beveiliging mogelijk problemen oplevert bij distributie van het Excel-bestand met macro's rond deze release, plaatsen we de macrocode als referentie in "UpdateDescription_SampleVBA.txt", raadpleeg dit indien nodig.
Afbeelding - Voorbeeld van organisatie in Excel (voorbeeldinvoer uit ontwikkeltestomgeving)
1.3 Uitleg over code om items in bulk bij te werken
Nadat u het hebt georganiseerd in Excel voert u alleen kleine aanpassingen uit aan de code die genoteerd staat in de notebook om deze aan uw eigen omgeving aan te passen en voert u deze uit. Concreet moet u delen binnen de notebook waar "your_xyz", "new_owner_name" en "share_group_id" staan aanpassen aan uw eigen omgeving.
Er staan ook commentaarregels in de notebook maar ik zal later uitleg geven over wat ze doen.
(1) Excel data lezen naar Pandas DataFrame
Eerst lezen we Excel in een Pandas DataFrame.
import pandas as pd
excel_file = r"your_folder_path\3D_stedelijk_model_AGOL_itemdetails_devtest.xlsx"
df = pd.read_excel(excel_file)
'xlrd' bibliotheek versie 2.0.0 ondersteunt alleen nog 'xls' formaat waardoor u afhankelijk van uw omgeving bij het lezen van 'xlsx' met pd.read_excel expliciet engine='openpyxl' moet specificeren. In ArcGIS Pro-omgeving is xlrd versie 1.2.0 dus engine specificatie meestal niet nodig (hoe u een ArcGIS Pro-omgeving maakt leest u hier: '[ArcGIS Developer Resources] - [arcgis package upgraden] - [ArcGIS Pro 2.3+ omgevingen]' ).
import pandas as pd
excel_file = r"your_folder_path\3D_stedelijk_model_AGOL_itemdetails_devtest.xlsx"
df = pd.read_excel(excel_file,engine='openpyxl')
(2) Verbinden met organisatie site op ArcGIS Online en updaten + delen met specifieke groep
Vervolgens verbinden we met onze organisatie site op ArcGIS Online en halen per rij het item op gebaseerd op 'id' uit Excel en updaten vervolgens 'title', 'snippet', 'description', 'tags', 'licenseInfo' en 'accessInformation' via item.update(). Daarna zetten we protect() aan om verwijderen tegen te gaan en delen we het item met organisatie en specifieke groep via share().
Zoals eerder uitgelegd vindt u toegestane keys voor item_properties en hun schermweergave onder 1.1 Eigenschappen van het item.
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] # id ophalen
item_properties = row[1:7].to_dict() # title t/m accessInformation als dictionary ophalen
my_item = gis.content.get(item_id) # item ophalen
my_item.update(item_properties) # update title t/m accessInformation info via item.update()
my_item.protect(enable = True) # verwijderbeveiliging inschakelen voor het item
my_item.share(org= True, groups=['share_group_id']) # delen met organisatie en specifieke groep - testomgeving; "Open Data gedeelde content"(id:f862b4f5d32f435596795947df012042), productieomgeving; "Ministerie van Landinfrastructuur Transport 3D stedelijk model 'Project PLATEAU' content"(id:d568e2190c4f456f8bd812c8e07c719a)
2 Uitleg over procedure om catalogusites te publiceren via ArcGIS Hub
* Oorspronkelijk waren de procedures tot nu toe gericht op bulkupdates van items maar omdat verschillende mensen ermee werken en er verschillen kunnen zijn in operationele processen kan het handig zijn om aparte notebooks te gebruiken. Deze keer leggen we uit hoe u hetzelfde notebookbestand gebruikt als nu dus bedankt voor uw begrip.
Als u bijvoorbeeld notebooks wilt splitsen dan moet u voorafgaand aan onderstaande code eerst (1) Excel data lezen naar Pandas DataFrame uitvoeren zoals hierboven beschreven.
import pandas as pd
excel_file = r"your_folder_path\3D_stedelijk_model_AGOL_itemdetails_devtest.xlsx"
df = pd.read_excel(excel_file)
2.1 Uitleg over code om catalogusites te publiceren via ArcGIS Hub
(3) Verbinden als beheerder met organisatie site op ArcGIS Online en wijzigen eigenaar + delen met specifieke groep + publicatie als publiek
Als laatste stap wijzigen we eerst eigenaar met reassign_to() (wijziging eigenaar is niet altijd verplicht maar hier veranderen we eigenaar van persoonlijk naar ons bedrijfsaccount), daarna delen we opnieuw met share() naar organisatie + specifieke groep en voeren publicatie als publiek uit.
gisadmin = GIS("https://www.arcgis.com/", "your_admin_username", "your_admin_password") # beheerder
for index, row in df.iterrows():
item_id = row[0] # id ophalen
my_item = gisadmin.content.get(item_id)
# eerst wijziging eigenaar
my_item.reassign_to("new_owner_name") # テスト環境;"kataya@dev3admin"、本番環境:"Esri_Japan"
# Om inhoud te publiceren en weer te geven in ArcGIS Hub, deel de specifieke groep opnieuw nadat de eigenaar is gewijzigd
my_item.share(everyone = True, org= True, groups=['your_share_group_id']) # Delen met organisatie en specifieke groep - testomgeving; "Open Data gedeelde inhoud" (id:f862b4f5d32f435596795947df012042), productieomgeving; "Ministerie van Land, Infrastructuur, Transport en Toerisme 3D-stadsmodel "Project PLATEAU" gebruiksinformatie" (id:d568e2190c4f456f8bd812c8e07c719a)
Afbeelding na update
Na het uitvoeren van het script ziet het er als volgt uit wanneer u het item afzonderlijk bekijkt vanuit ArcGIS Online.
Afbeelding - Voorbeeld na update van een afzonderlijk item (details van het ArcGIS Online-item: ontwikkeltestomgeving "3D-stadsmodel (Project PLATEAU) Utsunomiya City Bestandsdatabase")
Ook in de catalogusweergave van ArcGIS Hub ziet het er als volgt uit.
Afbeelding - Voorbeeld na update van een afzonderlijk item (details van het catalogusitem in ArcGIS Hub: ontwikkeltestomgeving)
Als u hier op het midden van het catalogusscherm richt op "3D-stadsmodel Utsunomiya City (Project PLATEAU) Bestandsdatabase" en kijkt naar de uitleg van het ArcGIS Online-item hierboven (in Excel is dit de beschrijving-kolom met 107 tekens), betekent dit dat wanneer u gegevens openbaar maakt via ArcGIS Hub, het prioriteit geven aan noodzakelijke informatie aan het begin van de beschrijvingstekst van het item een techniek is om dubbele invoer te besparen.
Samenvatting
Met de combinatie van Excel × Python (ArcGIS API for Python) geïntroduceerd in dit artikel kunt u niet alleen informatie over items in ArcGIS Online in bulk bijwerken, maar ook tijd besparen bij registratie aan de kant van ArcGIS Hub, en uiteindelijk105 items openbaar maken (referentie:catalogus van "3D-stadsmodel Bestandsdatabase").
- Notebook-bestand, - Excel-sjabloon, - VBA-macro-sjabloon voor het bijwerken van de beschrijving-kolom worden altijd gepubliceerd op GitHub, dus maak er gebruik van.Openbaar op GitHubMaak er alstublieft gebruik van.
Ook als een punt voor gebruik binnen de organisatie bij het gebruiken van items is er een artikel over "Introductie tot itembeheerpunten (deel 1, deel 2)" uit het verleden, raadpleeg dat alstublieft.deel 1,deel 2).
Referentiemateriaal
-GEO Jobe bedrijf Admin Tools
-Gebruikssite met voorbeelden van toepassing van 3D-stadsmodellen in ArcGIS
[ArcGIS Hub]
-Overzicht van ArcGIS Hub Basic-
ArcGIS Hub startgids-
Een snelle startgids voor ArcGIS Hub Basic
[Blogartikel]
-
Introductie tot itembeheerpunten - deel 1 -: Laten we tags effectief gebruiken-
Introductie tot itembeheerpunten - deel 2 -: Laten we categorieën gebruiken
[Code, API]
Script om bij te werken via REST API vanuit CSV met Pure Python
Gids voor ArcGIS API for Python
API-referentie voor ArcGIS API for Python (class arcgis.gis.Item)
Bijwerken van iteminformatie: update(item_properties=None, data=None, thumbnail=None, metadata=None)
Delen van item: share(everyone=False, org=False, groups=None, allow_members_to_edit=False)
Wijziging eigenaar: reassign_to(target_owner, target_folder=None)