ArcGIS Notebook Server permite transferir de shapefiles e arquivos geodatabase que podem ser acessados em seus notebooks para usar com ArcPy.
Transferir conjuntos de dados para usar em um notebook
Para transferir de shapefiles ou arquivos geodatabase para usar com ArcPy em seu notebook, faça o seguinte:
- Compacte o conjunto de dados que deseja enviar em um arquivo .zip.
- No editor de notebook, clique na guia Arquivos.
- Na guia Arquivos, navegue até /arcgis/home.
- Clique em Escolher arquivo e selecione o arquivo .zip do seu conjunto de dados.
- Clique em Transferir.
- Em seu notebook, use um dos seguintes métodos para descompactar seu arquivo:
- Use declarações mágicas do IPython de dentro de uma célula do notebook.
!unzip /arcgis/home/watersheds.zip -d /arcgis/home
- Use o módulo Zip do Python para descompactar o arquivo.
import zipfile with zipfile.ZipFile("/arcgis/home/watersheds.zip", "r") as zip_ref: zip_ref.extractall("/arcgis/home")
- Use declarações mágicas do IPython de dentro de uma célula do notebook.
Para saber mais sobre como usar ArcPy em seu notebook, consulte Usar ArcPy em um notebook.
Usar conjuntos de dados carregados com ArcPy em um notebook
Após carregar seu shapefile ou arquivo geodatabase, você poderá acessá-lo do seu notebook.
Usar um shapefile carregado com ArcPy
As seguintes etapas descrevem um exemplo do fluxo de trabalho de uso da ferramenta Buffer do ArcPycom um shapefile carregado:
- Baixe o conjunto de dados de amostra na página de item do conjunto de dados inicial do Python.
- Transfira o arquivo .zip em sua área de trabalho do notebook usando as etapas listadas na seção Transferir conjuntos de dados para usar em um notebook acima.
- Importe ArcGIS API for Python e ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Descompacte o conjunto de dados que você carregou no diretório da sua área de trabalho.
!unzip /arcgis/home/PythonStart.zip -d /arcgis/home
- Defina a área de trabalho do ArcPy para o caminho de diretório do arquivo extraído.
arcpy.env.workspace = "/arcgis/home/PythonStart"
- Crie um buffer de 500 metros em torno de cada corpo de bombeiros no arquivo fire_stations.shp.
result = arcpy.analysis.Buffer("fire_stations.shp", "fire_stations_500m", "500 METERS")
- Gere e imprima uma descrição do conjunto de dados de shapefile do buffer resultante.
# Describe the resulting shapefile dataset desc = arcpy.Describe("fire_stations_500m.shp") # Print dataset properties print(f"Dataset Type: {desc.datasetType}") print(f"Shape Type: {desc.shapeType}") print(f"Feature Type: {desc.featureType}") print(f"Spatial Index: {desc.hasSpatialIndex}") print(f"Spatial reference name: {desc.spatialReference.name}") print(f"Extent:\n\tXMin: {desc.extent.XMin}\n\tXMax: {desc.extent.XMax}") print(f"\tYMin: {desc.extent.YMin}\n\tYMax: {desc.extent.YMax}")
- Imprima os nomes e tipos de campos no arquivo shapefile do buffer.
for field in desc.fields: print("%-22s %s %s" % (field.name, ":", field.type))
- Crie um arquivo .zip do conjunto de dados de shapefile do buffer.
import os import fnmatch import zipfile # The path for listing items path = '/arcgis/home/PythonStart/' os.chdir(path) # List of files in complete directory file_list = [] # Loop to extract files containing word "fire_stations_500m" for path, folders, files in os.walk(path): for file in files: if fnmatch.fnmatch(file, '*fire_stations_500m*'): file_list.append(file) with zipfile.ZipFile('/arcgis/home/fire_stations_500m.zip', 'w') as zipF: for file in file_list: zipF.write(file, compress_type=zipfile.ZIP_DEFLATED)
- Publique o shapefile do buffer como uma camada de feição hospedada.
item = gis.content.add({}, '/arcgis/home/fire_stations_500m.zip') published_item = item.publish() published_item.share(everyone=True) display(published_item)
- Exclua o shapefile do buffer.
arcpy.management.Delete("fire_stations_500m.shp")
Por este fluxo de trabalho de exemplo, você terá criado e publicado um novo shapefile do buffer usando ArcPy com um conjunto de dados carregado.
Usar um arquivo geodatabase carregado com ArcPy
As seguintes etapas descrevem um exemplo do fluxo de trabalho de transferência de um arquivo geodatabase para usar com ArcPy.
- Baixe o conjunto de dados de amostra da página de itens do geodatabase dos dados de Cingapura.
- Transfira o arquivo .zip que contém o arquivo geodatabase em seu notebook usando as etapas listadas na seção Transferir conjuntos de dados para usar em um notebook acima.
- Importe ArcGIS API for Python e ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Descompacte o conjunto de dados carregado no diretório da sua área de trabalho.
!unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home
- Defina a área de trabalho do ArcPy para o caminho de diretório do arquivo extraído.
arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"
- Liste os nomes das classes de feição contidas no arquivo geodatabase.
singapore_data = arcpy.ListFeatureClasses() singapore_data
- Liste os campos contidos em uma das classes de feição.
singapore_tourist_attractions = singapore_data[2] singapore_tourist_attractions_fields = [] fields = arcpy.ListFields(singapore_tourist_attractions) for field in fields: if (field.name != 'Shape'): singapore_tourist_attractions_fields.append(field.name) singapore_tourist_attractions_fields
- Para cada linha do conjunto de dados, imprima os valores do objectid, do nome de local e do campo de endereço.
with arcpy.da.SearchCursor(singapore_tourist_attractions, singapore_tourist_attractions_fields) as cursor: for row in cursor: print(f'{row[0]}. {row[1]}, {row[2]}')