Instrução
A fonte de dados de uma camada em um projeto faz referência à classe de feição do local físico do geodatabase em uma máquina. O conjunto de dados também pode fazer referência a uma URL se o conjunto de dados for publicado como um serviço do ArcGIS Server ou um serviço do ArcGIS Online. No módulo ArcPy, a fonte de dados é representada no dicionário 'connectionProperties' conforme mostrado abaixo.
No geodatabase
{'connection_info': {'database': 'E:\\ArcGIS\\Project\\Database.gdb'}, 'dataset': 'layerXYZ', 'workspace_factory': 'Arquivo Geodatabase'}
No Serviço do ArcGIS Server
{'connection_info': {'url': 'http://sampleserver6.arcgisonline.com/arcgis/rest/services/911CallsHotspot/MapServer'}, 'dataset': '1', 'workspace_factory': 'FeatureService'}
Para usar o dicionário 'connectionProperties', importe os módulos ArcPy e 'pprint'.
As etapas a seguir descrevem como alterar a fonte de dados de uma camada de referência a um geodatabase para uma URL de serviço.
import arcpy, pprint
aprx=arcpy.mp.ArcGISProject('current') map=aprx.listMaps()[0] l=map.listLayers()[0]
pprint.pprint(l.connectionProperties)
Find_dic = {'connection_info':{'database': 'C:\\arcgis\\TEST\\Editing\\Test.gdb'},'dataset': 'Springs','workspace_factory': 'Arquivo Geodatabase'}
replace_dic = {'connection_info':{'url':r'https://services.arcgis.com/Wl7Y1m92PbjtJs5n/arcgis/rest/services/None/FeatureServer'},'dataset': '0','workspace_factory': 'FeatureService'}
l.updateConnectionProperties(Find_dic,replace_dic,True,False,False) aprx.save()
O seguinte mostra o script completo.
import arcpy, pprint aprx=arcpy.mp.ArcGISProject('current') map=aprx.listMaps()[0] l=map.listLayers()[0] pprint.pprint(l.connectionProperties) Find_dic = {'connection_info':{'database': 'C:\\arcgis\\TEST\\Editing\\Test.gdb'},'dataset': 'Springs','workspace_factory': 'File Geodatabase'} replace_dic = {'connection_info':{'url':r'https://services.arcgis.com/Wl7Y1m92PbjtJs5n/arcgis/rest/services/None/FeatureServer'},'dataset': '0','workspace_factory': 'FeatureService'} l.updateConnectionProperties(Find_dic,replace_dic,True,False,False) aprx.save()
O dicionário connectionProperties também pode atualizar a URL do serviço. As etapas abaixo descrevem como fazer isso.
conProp = l.connectionProperties
conProp['connection_info']['url'] = r'https://sampleserver6.arcgisonline.com/arcgis/rest/services/EmergencyFacilities/FeatureServer'
l.updateConnectionProperties(l.connectionProperties,conProp) aprx.save()
O seguinte mostra o script completo.
import arcpy, pprint p = arcpy.mp.ArcGISProject(r'C:\Projects\YosemiteNP\Yosemite.aprx') m = p.listMaps()[0] l = m.listLayers()[0] pprint.pprint(l.connectionProperties) conProp = l.connectionProperties conProp['connection_info']['url'] = r'https://sampleserver6.arcgisonline.com/arcgis/rest/services/EmergencyFacilities/FeatureServer' l.updateConnectionProperties(l.connectionProperties,conProp) aprx.save()
ID do Artigo: 000021613
Obtenha ajuda de especialistas do ArcGIS
Comece a conversar agora