Aplikacja ArcGIS Notebook Server pozwala przesłać pliki shape i geobazy plikowe, które następnie mogą być dostępne w notatnikach, w celu użycia w pakiecie ArcPy.
Przesyłanie zestawów danych do użycia w notatniku
Aby przesłać pliki shape lub geobazy plikowe do użycia w pakiecie ArcPy w notatniku, wykonaj następujące czynności:
- Skompresuj zestaw danych, który chcesz przesłać, do pliku .zip.
- W edytorze notatników kliknij kartę Pliki.
- Na karcie Pliki przejdź do katalogu /arcgis/home.
- Kliknij opcję Wybierz plik i wybierz plik .zip zestawu danych.
- Kliknij Prześlij.
- W swoim notatniku skorzystaj z jednej z następujących metod, aby rozpakować plik:
- Użyj instrukcji magicznych IPython w komórce notatnika.
!unzip /arcgis/home/watersheds.zip -d /arcgis/home
- Użyj modułu Zip języka Python, aby rozpakować plik.
import zipfile with zipfile.ZipFile("/arcgis/home/watersheds.zip", "r") as zip_ref: zip_ref.extractall("/arcgis/home")
- Użyj instrukcji magicznych IPython w komórce notatnika.
Więcej informacji na temat korzystania z pakietu ArcPy w notatniku zawiera sekcja Korzystanie z pakietu ArcPy w notatniku.
Korzystanie z przesłanych zestawów danych za pomocą pakietu ArcPy w notatniku
Po przesłaniu pliku shape lub geobazy plikowej można uzyskać do nich dostęp z poziomu notatnika.
Korzystanie z przesłanego pliku shape za pomocą pakietu ArcPy
Poniższe czynności przedstawiają przykładową procedurę wykonywania zadań korzystania z narzędzia Bufor pakietu ArcPy z przesłanym plikiem shape:
- Pobierz przykładowy zestaw danych ze strony początkowych elementów zestawów danych języka Python.
- Prześlij plik .zip do przestrzeni roboczej notatnika, korzystając z czynności wymienionych w powyższej sekcji Przesyłanie zestawów danych do użycia w notatniku.
- Zaimportuj interfejs ArcGIS API for Python i pakiet ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Rozpakuj przesłany zestaw danych w katalogu przestrzeni roboczej.
!unzip /arcgis/home/PythonStart.zip -d /arcgis/home
- Skonfiguruj przestrzeń roboczą pakietu ArcPy na ścieżkę do katalogu rozpakowanego pliku.
arcpy.env.workspace = "/arcgis/home/PythonStart"
- Utwórz bufor o średnicy 500 metrów wokół każdej straży pożarnej w pliku fire_stations.shp.
result = arcpy.analysis.Buffer("fire_stations.shp", "fire_stations_500m", "500 METERS")
- Wygeneruj i wydrukuj opis wynikowego zestawu danych pliku shape bufora.
# 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}")
- Wydrukuj nazwy i typy pól w pliku shape bufora.
for field in desc.fields: print("%-22s %s %s" % (field.name, ":", field.type))
- Utwórz plik .zip zestawu danych pliku shape bufora.
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)
- Opublikuj plik shape bufora jako hostowaną warstwę obiektową.
item = gis.content.add({}, '/arcgis/home/fire_stations_500m.zip') published_item = item.publish() published_item.share(everyone=True) display(published_item)
- Usuń plik shape bufora.
arcpy.management.Delete("fire_stations_500m.shp")
W tej przykładowej procedurze wykonywania zadań został utworzony i opublikowany za pomocą pakietu ArcPy z przesłanym zestawem danych nowy plik shape bufora.
Korzystanie z przesłanej geobazy plikowej za pomocą pakietu ArcPy
Poniższe czynności przedstawiają przykładową procedurę wykonywania zadań przesyłania geobazy plikowej do użycia w pakiecie ArcPy.
- Pobierz przykładowy zestaw danych ze strony elementów geobazy danych o Singapurze.
- Prześlij plik .zip zawierający geobazę plikową do notatnika, korzystając z czynności wymienionych w powyższej sekcji Przesyłanie zestawów danych do użycia w notatniku.
- Zaimportuj interfejs ArcGIS API for Python i pakiet ArcPy.
from arcgis.gis import GIS gis = GIS("home") import arcpy
- Rozpakuj przesłany zestaw danych w katalogu przestrzeni roboczej.
!unzip /arcgis/home/Singapore_Data.gdb.zip -d /arcgis/home
- Skonfiguruj przestrzeń roboczą pakietu ArcPy na ścieżkę do katalogu rozpakowanego pliku.
arcpy.env.workspace = "/arcgis/home/Singapore_Data.gdb"
- Wyświetl listę nazw klas obiektów zawartych w geobazie plikowej.
singapore_data = arcpy.ListFeatureClasses() singapore_data
- Wyświetl pola zawarte w jednej z klas obiektów.
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
- Dla każdego wiersza w zestawie danych wydrukuj wartości identyfikatora obiektu, nazwy miejsca i pola adresu.
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]}')