Carregar conjuntos de dados para usar com ArcPy

O ArcGIS Notebooks permite transferir de shapefiles e arquivos geodatabase que podem ser acessados ​​em 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 um notebook, faça o seguinte:

  1. Compacte o conjunto de dados que deseja enviar em um arquivo .zip.
  2. No editor de notebook, clique na guia Arquivos.
  3. Na guia Arquivos, navegue até /arcgis/home.
  4. Clique em Escolher arquivo e selecione o arquivo .zip do conjunto de dados.
  5. Clique em Transferir.
  6. No notebook, use um dos seguintes métodos para descompactar o arquivo:
    1. Use declarações mágicas do IPython de dentro de uma célula do notebook.
      !unzip /arcgis/home/watersheds.zip -d /arcgis/home
    2. 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")

Para saber mais sobre como usar ArcPy em um notebook, consulte Usar ArcPy em um notebook.

Usar conjuntos de dados carregados com ArcPy em um notebook

Após carregar um shapefile ou arquivo geodatabase, você poderá acessá-lo de um 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:

  1. Baixe o conjunto de dados de amostra da página de item do conjunto de dados inicial do Python .
  2. Transfira o arquivo .zip em uma área de trabalho do notebook usando as etapas listadas na seção Transferir conjuntos de dados para usar em um notebook acima.
  3. Importe ArcGIS API for Python e ArcPy.

    from arcgis.gis import GIS
    gis = GIS("home")
    import arcpy

  4. Descompacte o conjunto de dados que você carregou no diretório da sua área de trabalho.

    
    !unzip /arcgis/home/PythonStart.zip -d /arcgis/home

  5. Defina a área de trabalho do ArcPy para o caminho de diretório do arquivo extraído.

    arcpy.env.workspace = "/arcgis/home/PythonStart"

  6. 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")

  7. 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}")

  8. 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))

  9. 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)

  10. 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)

  11. Exclua o shapefile do buffer.

    arcpy.management.Delete("fire_stations_500m.shp")

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.

  1. Baixe o conjunto de dados de amostra da página de itens do geodatabase dos dados de Cingapura.
  2. Transfira o arquivo .zip que contém o arquivo geodatabase em um notebook usando as etapas listadas na seção Transferir conjuntos de dados para usar em um notebook acima.
  3. Importe ArcGIS API for Python e ArcPy.

    from arcgis.gis import GIS
    gis = GIS("home")
    import arcpy

  4. Descompacte o conjunto de dados carregado em um diretório da sua área de trabalho.

    !unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home

  5. 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"

  6. Liste os nomes das classes de feição contidas no arquivo geodatabase.

    singapore_data = arcpy.ListFeatureClasses()
    singapore_data

  7. 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

  8. Para cada linha do conjunto de dados, imprima os valores do object ID, 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]}')