Introdução
ArcGIS Online eArcGIS Enterprise Portal Para utilizar amplamente os itens registrados no Portal, é necessário inserir informações detalhadas como título do item, resumo, descrição, tags e termos de uso.
Dito isso, o trabalho de abrir cada item um por um para inserir e atualizar essas informações detalhadas é bastante trabalhoso.
Na parceira americana da EsriGEO Jobe da empresa Admin Tools versão paga permite atualização em lote a partir de CSV, mas desta vez apresentamos um método para atualizar em lote os detalhes dos itens usando a combinação Excel × Python (ArcGIS API for Python). Não é necessária explicação; para quem deseja verificar o código de exemplo em Excel e Python imediatamente, como de costume,disponibilizado no GitHub está disponível, por favor consulte-o.
※ Este método foi implementado quando atualizamos e disponibilizamos publicamente o arquivo 3D City Model Utilization Site Collection for ArcGIS contendo dados geodatabase (FGDB) dos detalhes dos itens. Este site de utilização está construído com ArcGIS Hub Basic, portanto, no código especificamos um grupo específico e o ID do grupo do site criado previamente no ArcGIS Hub."Ministério da Terra, Infraestrutura, Transporte e Turismo 3D City Model 'Project PLATEAU' Utilization Contents" O ID do grupo pode ser confirmado no ArcGIS Online conforme mostrado na figura abaixo, mas o ID pode ser qualquer um ao qual o usuário pertença além do grupo do site criado no ArcGIS Hub.
Além disso, para criação e início do uso do site no ArcGIS Hub, consulte o Guia rápido de início do ArcGIS Hub ou o A quick start guide to ArcGIS Hub Basic.
Figura - Exemplo de ID do grupo (grupo "Ministério da Terra, Infraestrutura, Transporte e Turismo 3D City Model 'Project PLATEAU' Utilization Contents" da nossa empresa)
1 Processo para atualizar em lote os detalhes dos itens
1.1 Propriedades do item
Primeiro, confirmamos a API para atualizar os detalhes dos itens com ArcGIS API for Python. Segundo a referência da API, a atualização dos detalhes do item é possível pelo método da classe arcgis.gis.Item chamado
update(item_properties=None, data=None, thumbnail=None, metadata=None)
, onde a lista das chaves que podem ser especificadas em item_properties está documentada na Ajuda como type, typeKeywords, description, title, url, tags, text, snippet, extent, spatialReference, accessInformation, licenseInfo, culture, access e commentsEnabled.
No exemplo atual atualizamos title, snippet, description, tags, licenseInfo e accessInformation. Para facilitar a compreensão visual relacionamos as chaves especificadas em item_properties com suas representações reais na tela conforme abaixo.
- id : id do item
- title : título
- snippet : resumo
- description : descrição (HTML permitido)
- tags : tags (se múltiplas use vírgula para separar)
- licenseInfo : termos de uso
- accessInformation : direitos autorais
1.2 Organizando as informações detalhadas dos itens no Excel
Como entendemos as informações detalhadas dos itens a organizar, inserimos na primeira linha da Sheet1 (no caso do arquivo Excel de exemplo chamado “Sheet1 para atualização”) as chaves correspondentes às propriedades do item e nas linhas seguintes inserimos as propriedades dos respectivos itens (para usar como chave quando converter para dicionário com .to_dict() dentro do código é necessário que os nomes das colunas na primeira linha coincidam exatamente com as chaves em item_properties).
Além disso, para uniformizar descrições mais legíveis que HTML na coluna description usamos VBA macro para atualizar. Como a distribuição do arquivo Excel com macro nesta publicação pode causar problemas de segurança recomendamos consultar o código da macro disponível como “UpdateDescription_SampleVBA.txt” para referência se necessário.
Figura - Exemplo de organização no Excel (exemplo de entrada no arquivo Excel usado no ambiente de teste de desenvolvimento)
1.3 Explicação do código para atualização em lote dos detalhes dos itens
Após organizar no Excel basta executar pequenas modificações no código anotado no notebook conforme seu ambiente. Especificamente é necessário alterar nos comentários dentro do notebook os locais marcados como "your_xyz", "new_owner_name" e "share_group_id" conforme seu ambiente.
Comentários também estão inseridos no notebook; explicaremos novamente o processo passo a passo.
(1) Ler dados Excel em DataFrame do Pandas
Primeiro lemos o Excel em DataFrame do Pandas.
import pandas as pd
excel_file = r"your_folder_path\3DCityModel_AGOL_ItemDetails_forDevTest.xlsx"
df = pd.read_excel(excel_file)
※ Devido à mudança na biblioteca xlrd versão 2.0.0 que passou a suportar apenas formato "xls", dependendo do ambiente ao ler arquivos "xlsx" com pd.read_excel é necessário especificar engine=openpyxl. No ambiente com ArcGIS Pro instalado a versão da xlrd é 1.2.0 então normalmente não precisa especificar engine (como método para criar ambiente com ArcGIS Pro consulte [ArcGIS Developer Resources] - [arcgis package upgrade] - [Ambiente ArcGIS Pro 2.3 ou superior]).
import pandas as pd
excel_file = r"your_folder_path\3DCityModel_AGOL_ItemDetails_forDevTest.xlsx"
df = pd.read_excel(excel_file,engine='openpyxl')
(2) Conectar ao site organizacional do ArcGIS Online e atualizar informações dos itens compartilhando com grupo específico
A seguir conectamos ao site organizacional do ArcGIS Online e para cada linha obtemos o item pelo 'id' presente no Excel e atualizamos seus 'title', 'snippet', 'description', 'tags', 'licenseInfo' e 'accessInformation' via item.update(). Além disso ativamos proteção contra exclusão com my_item.protect() e configuramos compartilhamento com organização e grupo específico via share().
Já explicamos acima que as chaves possíveis em item_properties e sua correspondência visual foram detalhadas em 1.1 Propriedades do 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] # obter id
item_properties = row[1:7].to_dict() # obter dicionário das colunas title até accessInformation
my_item = gis.content.get(item_id) # obter item
my_item.update(item_properties) # atualizar informações title até accessInformation via update()
my_item.protect(enable = True) # ativar proteção contra exclusão para o item
my_item.share(org= True, groups=['share_group_id']) # compartilhar com organização e grupo específico - ambiente teste; "Open Data Shared Contents"(id:f862b4f5d32f435596795947df012042), ambiente principal; "Ministério da Terra Infraestrutura Transporte 3D City Model 'Project PLATEAU' Utilization Contents"(id:d568e2190c4f456f8bd812c8e07c719a)
2 Explicação passo a passo para publicar catálogo no ArcGIS Hub
※ Originalmente os processos até 1 Atualização em lote das informações dos itens e daqui são separados porque podem haver pessoas diferentes operando ou diferentes processos profissionais; aqui usamos o mesmo notebook conveniente para explicar então agradecemos pela compreensão.
Se quiser dividir o notebook de exemplo em partes separadas aplique antes deste código o processo (1) Ler dados Excel em DataFrame do Pandas explicado anteriormente.
import pandas as pd
excel_file = r"your_folder_path\3DCityModel_AGOL_ItemDetails_forDevTest.xlsx"
df = pd.read_excel(excel_file)
2.1 Explicação passo a passo para publicar catálogo no ArcGIS Hub usando código
(3) Conectar ao site organizacional ArcGIS Online como administrador modificar proprietário dos itens específicos compartilhar com grupo específico e publicar publicamente via público geral.
'Último passo': inicialmente alteramos proprietário via reassign_to() (não obrigatório alterar proprietário mas neste caso alteramos conta pública da empresa individual), depois configuramos compartilhamento com organização e grupo específico via share() e publicamos publicamente via publish().
gisadmin = GIS("https://www.arcgis.com/", "your_admin_username", "your_admin_password") # administrador
for index, row in df.iterrows():
item_id = row[0] # obter id
my_item = gisadmin.content.get(item_id)
# alterar proprietário inicialmente
my_item.reassign_to("new_owner_name") # テスト環境;"kataya@dev3admin"、本番環境:"Esri_Japan"
Para publicar conteúdo no ArcGIS Hub e refletir as alterações, compartilhe novamente com o grupo específico da organização após modificar o proprietário
my_item.share(everyone = True, org= True, groups=['your_share_group_id']) # Compartilhar com a organização e grupo específico - Ambiente de teste; "Conteúdo compartilhado de Open Data" (id:f862b4f5d32f435596795947df012042), Ambiente principal; "Conteúdo de uso do Ministério da Terra, Infraestrutura, Transporte e Turismo 3D City Model 'Project PLATEAU'" (id:d568e2190c4f456f8bd812c8e07c719a)
Imagem após atualização
Após executar o script, ao visualizar como item independente no ArcGIS Online, fica assim:
Figura - Exemplo após atualização do item independente (Detalhes do item no ArcGIS Online: ambiente de teste para desenvolvimento "Banco de dados de arquivos do modelo 3D da cidade (Project PLATEAU) de Utsunomiya")
Além disso, no catálogo do ArcGIS Hub, aparece assim:
Figura - Exemplo após atualização do item independente (Detalhes do item no catálogo do ArcGIS Hub: ambiente de teste para desenvolvimento)
Aqui, ao focar no centro da tela do catálogo no "Banco de dados de arquivos do modelo 3D da cidade de Utsunomiya (Project PLATEAU)", a descrição dos detalhes do item no ArcGIS Online acima (coluna description em Excel) exibe 107 caracteres. Ou seja, ao publicar dados no ArcGIS Hub, é uma técnica para priorizar e registrar as informações necessárias na parte inicial do texto da descrição dos detalhes do item para economizar trabalho duplicado ao tornar os dados públicos.
Resumo
Com a combinação de Excel × Python (ArcGIS API for Python) apresentada neste artigo, não só atualizamos as informações dos itens no ArcGIS Online em lote, mas também economizamos tempo no registro no ArcGIS Hub e finalmente105 itens puderam ser publicados (referência:Catálogo "Banco de dados de arquivos do modelo 3D da cidade (Project PLATEAU)").
- Notebook file, - amostra Excel para atualizar a coluna description, - três arquivos VBA Macro para atualizar sempre que quiserDisponível no GitHubPortanto, por favor, utilize.
Além disso, como ponto para usar itens dentro da organização, há um artigo anterior sobre "Introdução ao ponto de gerenciamento de itens (Parte anterior)"Parte anterior,Parte posterior", então consulte também.
Referências
-GEO Jobe empresa Admin Tools
-Site de casos de uso do ArcGIS para o Modelo 3D da Cidade
[ArcGIS Hub]
-Resumo do ArcGIS Hub Basic-
ArcGIS Hub Startup Guide-
Um guia rápido para começar com o ArcGIS Hub Basic