ArcGIS Desktop

  • Dokumentation
  • Support

  • My Profile
  • Hilfe
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Die Mapping-Plattform für Ihre Organisation

ArcGIS Desktop

Ein vollständiges professionelles GIS

ArcGIS Enterprise

GIS in Ihrem Unternehmen

ArcGIS for Developers

Werkzeuge zum Erstellen standortbezogener Apps

ArcGIS Solutions

Kostenlose Karten- und App-Vorlagen für Ihre Branche

ArcGIS Marketplace

Rufen Sie Apps und Daten für Ihre Organisation ab.

  • Dokumentation
  • Support
Esri
  • Anmelden
user
  • Eigenes Profil
  • Abmelden

ArcMap

  • Startseite
  • Erste Schritte
  • Karte
  • Analysieren
  • Verwalten von Daten
  • Werkzeuge
  • Erweiterungen

Einzugsgebiet-Layer erstellen

  • Zusammenfassung
  • Verwendung
  • Syntax
  • Codebeispiel
  • Umgebungen
  • Lizenzinformationen

Zusammenfassung

Erstellt einen Netzwerkanalyse-Layer für Einzugsgebiete und legt seine Analyse-Eigenschaften fest. Ein Einzugsgebiet-Analyse-Layer ist nützlich, wenn Sie die Erreichbarkeitsfläche von einem Einrichtungsstandort aus innerhalb eines gegebenen Grenzkostenwerts bestimmen möchten.

Hinweis:

Die Werkzeuge Einzugsgebiete generieren und Einzugsgebiet-Layer erstellen sind ähnlich, jedoch für unterschiedliche Zwecke konzipiert. Verwenden Sie Einzugsgebiete generieren, wenn Sie einen Geoverarbeitungsservice einrichten. Der Prozess der Erstellung wird dadurch vereinfacht. Verwenden Sie anderenfalls Einzugsgebiet-Layer erstellen. Verwenden Sie Einzugsgebiet-Layer erstellen außerdem, wenn Sie Einzugsgebietslinien erstellen. Das Werkzeug Einzugsgebiete generieren stellt keine Option zum Erstellen von Linien bereit.

Zum Erstellen eines Geoverarbeitungs-Service für Einzugsgebiete mit Einzugsgebiete generieren müssen Sie lediglich ein Werkzeug einrichten. Zudem können Sie das Werkzeug direkt als Service veröffentlichen. Im Gegensatz dazu müssen Sie ein Modell mit Einzugsgebiet-Layer erstellen erstellen, es mit verschiedenen anderen Werkzeugen ordnungsgemäß verbinden und das Modell veröffentlichen, um einen Geoverarbeitungs-Service für Einzugsgebiete zu erstellen. Informationen zum Einrichten eines Fahrzeitpolygon-Service unter Verwendung von Lernprogrammdaten finden Sie unter Beispiel für Geoverarbeitungsservices: Reisezeitpolygone. Eine andere Möglichkeit stellt der ArcGIS OnlineGenerate Service Areas Services dar. Dieser Service wird wie ein Geoverarbeitungswerkzeug in ArcMap ausgeführt. Er enthält qualitativ hochwertige Straßendaten für weite Teile der Welt und man erhält aus anderen Anwendungen darauf Zugriff.

Verwendung

  • Nachdem Sie den Analyse-Layer mit diesem Werkzeug erstellt haben, können Sie ihm Netzwerkanalyse-Objekte mithilfe des Werkzeugs Standorte hinzufügen hinzufügen, die Analyse mit dem Werkzeug Berechnen berechnen und die Ergebnisse mit dem Werkzeug In Layer-Datei speichern auf der Festplatte speichern.

  • Bei Verwendung dieses Werkzeugs in Geoverarbeitungsmodellen, muss der Netzwerkanalyse-Layer in einen Modellparameter geändert werden, wenn das Modell als Werkzeug ausgeführt wird. Andernfalls wird der Ausgabe-Layer dem Inhalt der Karte nicht hinzugefügt.

Syntax

MakeServiceAreaLayer_na (in_network_dataset, out_network_analysis_layer, impedance_attribute, {travel_from_to}, {default_break_values}, {polygon_type}, {merge}, {nesting_type}, {line_type}, {overlap}, {split}, {excluded_source_name}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {polygon_trim}, {poly_trim_value}, {lines_source_fields}, {hierarchy}, {time_of_day})
ParameterErläuterungDatentyp
in_network_dataset

Das Netzwerk-Dataset, für das die Einzugsgebiet-Analyse ausgeführt wird.

Network Dataset Layer
out_network_analysis_layer

Name des zu erstellenden Netzwerkanalyse-Layers für das Einzugsgebiet.

String
impedance_attribute

Das Kostenattribut, das in der Analyse als Widerstand verwendet wird.

String
travel_from_to
(optional)

Gibt die Fahrtrichtung zu oder von den Einrichtungen an.

  • TRAVEL_FROM —Das Einzugsgebiet wird in der Fahrtrichtung weg von den Einrichtungen erstellt.
  • TRAVEL_TO —Das Einzugsgebiet wird in der Fahrtrichtung hin zu den Einrichtungen erstellt.

Mithilfe dieser Option können in einem Netzwerk mit Beschränkungen für Einbahnstraßen und unterschiedlichen Impedanzen basierend auf der Fahrtrichtung unterschiedliche Einzugsgebiete ermittelt werden. Das Einzugsgebiet für einen Pizza-Lieferservice sollte beispielsweise von der Einrichtung weg erstellt werden, wobei das Einzugsgebiet für ein Krankenhaus zur Einrichtung hin erstellt werden sollte.

String
default_break_values
(optional)

Standardimpedanzwerte, die die Ausdehnung des Einzugsgebiets angeben, das berechnet werden soll. Der Standardwert kann durch Angabe des Unterbrechungswertes für die Einrichtungen überschrieben werden.

Es können mehrere Polygonunterbrechungen festgelegt werden, um konzentrische Einzugsgebiete zu erstellen. Wenn Sie zum Beispiel 2-, 3- und 5-Minuten-Einzugsgebiete für dieselbe Einrichtung ermitteln möchten, geben Sie für den Parameter "Standard-Unterbrechungswerte" Folgendes ein: "2 3 5". (Die Zahlen 2, 3 und 5 müssen dabei durch Leerzeichen getrennt werden.)

String
polygon_type
(optional)

Gibt den Polygontyp an, der generiert werden soll.

  • SIMPLE_POLYS —Erstellt generalisierte Polygone. Diese können schnell erstellt werden und sind mit Ausnahme der Randbereiche recht genau. Dies ist die Standardeinstellung.
  • DETAILED_POLYS —Erstellt detaillierte Polygone, die die Einzugsgebietslinien genau darstellen. Außerdem können sie Inseln enthalten, die nicht abgedeckte Bereiche darstellen. Diese Option ist langsamer als das Generieren allgemeiner Polygone.
  • NO_POLYS —Deaktiviert die Polygonerstellung in Fällen, in denen nur Linien für das Einzugsgebiet gewünscht werden.

Wenn sich die verwendeten Daten auf ein Stadtgebiet mit einem gitterähnlichen Netzwerk beziehen, ist der Unterschied zwischen generalisierten und detaillierten Polygonen minimal. Bei Gebirgs- und Landstraßen zeigen detaillierte Polygone jedoch weitaus genauere Ergebnisse als generalisierte Polygone.

String
merge
(optional)

Gibt die Optionen an, um Polygone zusammenzuführen, für die ähnliche Unterbrechungswerte angegeben sind. Diese Option ist nur beim Generieren von Polygonen für mehrere Einrichtungen anwendbar.

  • NO_MERGE —Erstellt für jede Einrichtung ein eigenes Polygon. Die Polygone können dabei überlappen.
  • NO_OVERLAP —Erstellt für jede Einrichtung ein eigenes, jeweils am nächsten gelegenes Polygon. Die Polygone überlappen sich dabei nicht.
  • MERGE — Verbindet die Polygone mehrerer Einrichtungen, die über den gleichen Unterbrechungswert verfügen.
String
nesting_type
(optional)

Gibt an, ob konzentrische Einzugsgebiet-Polygone als Scheiben oder als Ringe erstellt werden sollen. Diese Option ist nur anwendbar, wenn mehrere Unterbrechungswerte für die Einrichtungen angegeben werden.

  • RINGS —Die Fläche der kleineren Unterbrechungen wird nicht mit eingeschlossen. Dadurch werden Polygone erstellt, die durch aufeinander folgende Unterbrechungen verlaufen. Verwenden Sie diese Option, wenn Sie die Fläche zwischen zwei Unterbrechungen ermitteln möchten.
  • DISKS — Erstellt Polygone von der Einrichtung in Richtung der Unterbrechung. Beim Erstellen von 5- und 10-Minuten-Einzugsgebieten schließt das 10-Minuten-Einzugsgebiet-Polygon beispielsweise die Fläche des 5-Minuten-Einzugsgebiet-Polygons ein. Verwenden Sie diese Option, wenn Sie die gesamte Fläche von der Einrichtung bis zur Unterbrechung für jede einzelne Unterbrechung ermitteln möchten.
String
line_type
(optional)

Gibt den Linientyp an, der auf Grundlage der Einzugsgebiet-Analyse generiert werden soll. Wenn Sie die Option TRUE_LINES oder TRUE_LINES_WITH_MEASURES für große Einzugsgebiete auswählen, erhöht sich der entsprechende für die Analyse benötigte Arbeitsspeicherbedarf.

  • NO_LINES —Es werden keine Linien generiert. Dies ist die Standardeinstellung.
  • TRUE_LINES —Linien werden ohne Messwerte generiert.
  • TRUE_LINES_WITH_MEASURES —Linien werden mit Messwerten generiert. Die Messwerte werden auf der Grundlage des Impedanzwerts an jedem Ende der Kante mit den interpolierten Zwischenstützpunkten generiert. Es empfiehlt sich nicht, diese Option zu verwenden, wenn eine höhere Performance gewünscht wird.
String
overlap
(optional)

Legt fest, ob bei der Berechnung von Linien für das Einzugsgebiet Überschneidungslinien generiert werden.

  • OVERLAP — Es wird ein separates Linien-Feature für jede Einrichtung eingeschlossen, wenn die Einrichtungen Einzugsgebietslinien haben, die lagegleich sind.
  • NON_OVERLAP — Jede Einzugsgebietslinie wird höchstens einmal eingeschlossen und ist jeweils mit der am nächsten gelegenen Einrichtung (geringster Impedanzwert) verknüpft.
Boolean
split
(optional)
  • SPLIT —Linien zwischen zwei Unterbrechungen werden jeweils in zwei Linien geteilt, die dann in der jeweiligen Unterbrechung liegen. Dies ist nützlich, wenn Sie die Einzugsgebietslinien nach Unterbrechungen darstellen möchten. Für eine optimale Performance empfiehlt es sich, die Option "NO_SPLIT" zu verwenden.
  • NO_SPLIT —Die Linien werden an den Grenzen der Unterbrechungen nicht geteilt. Dies ist die Standardeinstellung.
Boolean
excluded_source_name
[excluded_source_name,...]
(optional)

Gibt die Liste der Netzwerkquellen an, die beim Generieren der Polygone ausgeschlossen werden sollen. Die Geometrie der durchlaufenen Elemente von den ausgeschlossenen Quellen wird aus allen Polygonen entfernt.

Dies ist nützlich, wenn Sie einige Netzwerkquellen haben, die Sie nicht in die Polygonerstellung einbinden möchten, da auf diese Weise weniger genaue Polygone erstellt werden oder diese Quellen für die Einzugsgebiet-Analyse belanglos sind. Wenn Sie beispielsweise in einem multimodalen Netzwerk mit Straßen- und Bahnstrecken ein Fahrzeit-Einzugsgebiet erstellen, sollten Sie die Bahnstrecken aus der Polygonerstellung ausschließen, um ein genaues Modell für die Fahrtstrecke eines Kraftfahrzeugs erstellen zu können.

Das Ausschließen einer Netzwerkquelle aus Einzugsgebiet-Polygonen bedeutet nicht, dass diese Quellen nicht durchlaufen werden. Durch das Ausschließen von Quellen aus Einzugsgebiet-Polygonen wird nur die Polygon-Form der Einzugsgebiete beeinflusst. Wenn Sie das Durchlaufen einer bestimmten Netzwerkquelle verhindern möchten, müssen Sie bei der Definition des Netzwerk-Datasets eine entsprechende Beschränkung anwenden.

String
accumulate_attribute_name
[accumulate_attribute_name,...]
(optional)

Liste der Kostenattribute, die während der Analyse akkumuliert werden sollen. Diese Akkumulationsattribute dienen ausschließlich zu Referenzzwecken. Der Solver verwendet nur das vom Parameter Impedanzattribut angegebene Kostenattribut zum Berechnen der Route.

Für jedes akkumulierte Kostenattribut wird den vom Solver ausgegebenen Routen eine Total_[Impedance]-Eigenschaft hinzugefügt.

String
UTurn_policy
(optional)

Die Wendenregel an Knoten. Das Zulassen von Wenden bedeutet, dass der Solver an einem Knoten wenden und auf der gleichen Straße wieder zurückführen kann. Da diese Knoten Straßenkreuzungen und Sackgassen darstellen können, kann es sein, dass verschiedene Fahrzeuge an manchen Knoten wenden können und an anderen wiederum nicht. Dies hängt davon ab, ob der Knoten eine Kreuzung oder eine Sackgasse darstellt. Zu diesem Zweck wird der Wendenregel-Parameter implizit angegeben, indem die Anzahl der mit der Kreuzung verbundenen Kanten angegeben wird, was als Valenz der Knoten bezeichnet wird. Die zulässigen Werte für diesen Parameter sowie eine Beschreibung der jeweiligen Bedeutung in Bezug auf die Valenz der Knoten sind unten aufgelistet.

  • ALLOW_UTURNS —Wenden sind an Knoten mit einer beliebigen Anzahl verbundener Kanten erlaubt. Dies ist der Standardwert.
  • NO_UTURNS —Wenden sind an allen Knoten verboten, unabhängig von der Valenz der Knoten. Beachten Sie jedoch, dass selbst bei Auswahl dieser Einstellung Wenden an Netzwerkpositionen weiterhin erlaubt sind; allerdings können Sie für die Eigenschaft CurbApproach der jeweiligen Netzwerkposition auch ein Verbot von Wenden festlegen.
  • ALLOW_DEAD_ENDS_ONLY —Wenden sind an allen Knoten verboten, außer es ist nur eine angrenzende Kante vorhanden (Sackgasse).
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY —Wenden sind an Knoten verboten, an denen genau zwei angrenzende Kanten aufeinander treffen, jedoch an Kreuzungen (Knoten mit drei oder mehr angrenzenden Kanten) und in Sackgassen (Knoten mit genau einer angrenzenden Kante) erlaubt. Oftmals verfügen Netzwerke über unwesentliche Knoten in der Mitte von Straßensegmenten. Durch diese Option wird verhindert, dass Fahrzeuge an diesen Punkten wenden.

Falls Sie eine Wendenregel benötigen, die genauer definiert ist, können Sie einem Netzwerkkostenattribut einen globalen Evaluator für Verzögerung bei Kantenübergängen hinzufügen oder dessen Einstellungen anpassen, sofern dieser vorhanden ist, und der Konfiguration von U-förmigen Kantenübergängen einen besonderen Stellenwert einräumen. Ziehen Sie auch die Einstellung der CurbApproach-Eigenschaft Ihrer Netzwerkstandorte in Erwägung.

String
restriction_attribute_name
[restriction_attribute_name,...]
(optional)

Liste von Beschränkungsattributen, die während der Analyse angewendet werden sollen.

String
polygon_trim
(optional)
  • TRIM_POLYS —Kürzt die Polygone mit den Kanten an den Grenzen des Einzugsgebiets so weit, dass sie sich innerhalb der angegebenen Entfernung dieser äußeren Kanten befinden. Dies ist nützlich, wenn die Feature-Dichte im Netzwerk sehr gering ist und das Einzugsgebiet keine große Flächen ohne Features abdecken soll.
  • NO_TRIM_POLYS —Polygone werden nicht gekürzt.
Boolean
poly_trim_value
(optional)

Gibt die Entfernung an, innerhalb der die Einzugsgebiet-Polygone gekürzt werden. Der Parameter umfasst einen Wert und die Einheiten für die Entfernung. Der Standardwert beträgt 100 Meter.

Linear unit
lines_source_fields
(optional)
  • LINES_SOURCE_FIELDS — Fügen Sie den Einzugsgebietslinien die Felder "SourceID", "SourceOID", "FromPosition" und "ToPosition" hinzu, um Informationen zu den zugrunde liegenden Quell-Features bereitzustellen, die während der Analyse durchlaufen werden. Dies kann hilfreich sein, um die Ergebnisse der Einzugsgebietslinien problemlos mit den ursprünglichen Quelldaten zusammenzuführen.
  • NO_LINES_SOURCE_FIELDS —Fügen Sie den Einzugsgebietslinien keine Quellenfelder (SourceID, SourceOID, FromPosition und ToPosition) hinzu.
Boolean
hierarchy
(optional)
  • USE_HIERARCHY — Verwendet das Hierarchie-Attribut für die Analyse. Wenn eine Hierarchie verwendet wird, werden vom Solver Kanten einer höheren Rangstufe gegenüber Kanten niedrigerer Rangstufen bevorzugt. Hierarchische Berechnungen sind schneller und können verwendet werden, um zu simulieren, dass ein Fahrer es nach Möglichkeit vorzieht, auf Autobahnen statt auf Landstraßen zu fahren, selbst wenn die Fahrstrecke dann länger ist. Diese Option ist nur dann gültig, wenn das Eingabe-Netzwerk-Dataset ein Hierarchie-Attribut aufweist.
  • NO_HIERARCHY —Das Hierarchie-Attribut wird nicht für die Analyse verwendet. Wenn keine Hierarchie verwendet wird, dann wird, unabhängig von der Hierarchieebene, ein an allen Kanten des Netzwerk-Datasets gemessenes Einzugsgebiet zurückgegeben.

Der Parameter wird nicht verwendet, wenn ein Hierarchie-Attribut nicht für das Netzwerk-Dataset definiert ist, das zum Durchführen der Analyse verwendet wird. Verwenden Sie in solchen Fällen "#" als Parameterwert.

Boolean
time_of_day
(optional)

Die Abfahrtszeit von oder die Ankunftszeit bei den Einrichtungen des Einzugsgebiets-Layers. Ob der Wert als Abfahrts- oder Ankunftszeit interpretiert wird, hängt davon ab, ob die Fahrt zu der Einrichtung hin oder von der Einrichtung weg führt.

  • Wenn Reise von oder zur Einrichtung auf TRAVEL_FROM festgelegt ist, gibt dies die Abfahrtszeit an.
  • Wenn Reise von oder zur Einrichtung auf TRAVEL_TO festgelegt ist, gibt dies die Ankunftszeit an.

Wenn Sie ein verkehrsbasiertes Impedanzattribut ausgewählt haben, wird die Lösung auf Grundlage des dynamischen Verkehrsaufkommens zu der hier angegebenen Uhrzeit generiert. Sie können ein Datum und eine Uhrzeit als 5/14/2012 10:30 AM angeben.

Statt ein bestimmtes Datum zu verwenden, kann ein Wochentag mithilfe der folgenden Datumsangaben angegeben werden.

  • Heute – 30.12.1899
  • Sonntag – 31.12.1899
  • Montag – 1.1.1900
  • Dienstag – 2.1.1900
  • Mittwoch – 3.1.1900
  • Donnerstag – 4.1.1900
  • Freitag – 5.1.1900
  • Samstag – 06.01.1900
Wenn Sie beispielsweise angeben möchten, dass die Reise am Dienstag um 17:00 Uhr starten soll, geben Sie den Parameterwert wie folgt an: 1/2/1900 5:00 PM.

Durch wiederholtes Berechnen der gleichen Analyse mit unterschiedlichen Tageszeiten können Sie ermitteln, wie sich die Erreichbarkeit einer Einrichtung über die Zeit verändert. Beispiel: Das Einzugsgebiet von 5 MInuten um eine Feuerwache ist in den frühen Morgenstunden relativ groß, wird während der morgendlichen Hauptverkehrszeit kleiner, nimmt dann am späteren Vormittag wieder zu usw.

Date

Codebeispiel

MakeServiceAreaLayer – Beispiel 1 (Python-Fenster)

Ausführen des Werkzeugs, wenn nur die erforderlichen Parameter verwendet werden.

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeServiceAreaLayer(network, "FireStationCoverage", "TravelTime")
MakeServiceAreaLayer – Beispiel 2 (Python-Fenster)

Führen Sie das Werkzeug unter Verwendung aller Parameter aus.

network = "C:/Data/Paris.gdb/Transportation/ParisMultimodal_ND"
arcpy.na.MakeServiceAreaLayer(network, "WarehouseCoverage", "DriveTime",
                                "TRAVEL_FROM", "5 10 15", "SIMPLE_POLYS", 
                                "NO_OVERLAP", "RINGS", "TRUE_LINES",
                                "NON_OVERLAP", "NO_SPLIT",
                                ["Metro_Lines", "Transfer_Stations",
                                "Transfer_Street_Station"],
                                ["Meters", "DriveTime"], "ALLOW_DEAD_ENDS_ONLY",
                                ["Oneway"], "NO_TRIM_POLYS", "",
                                "LINES_SOURCE_FIELDS")
MakeServiceAreaLayer – Beispiel 3 (Workflow)

Das folgende eigenständige Python-Skript veranschaulicht, wie Sie mit dem Werkzeug MakeServiceAreaLayer Einzugsgebiete von 1, 2 und 3 Minuten um eine Feuerwache generieren.

# Name: MakeServiceAreaLayer_Workflow.py
# Description: Generate 1-,2-,3- minute service area around fire stations and
#              save the results to a layer file on disk. The service area
#              polygons can be used to visualize the areas that do not have
#              adequate coverage from the fire stations
# Requirements: Network Analyst Extension

#Import system modules
import arcpy
from arcpy import env

try:
    #Check out the Network Analyst extension license
    arcpy.CheckOutExtension("Network")

    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    env.overwriteOutput = True

    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    outNALayerName = "FireStationCoverage"
    impedanceAttribute = "TravelTime"
    inFacilities = "Analysis/FireStations"
    outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"

    #Create a new service area layer. We wish to generate the service area
    #polygons as rings, so that we can easily visualize the coverage for any
    #given location. We also want overlapping polygons as we can determine the
    #number of fire stations that cover a given location. We use hierarchy to
    #speed up the time taken to create the polygons. We will specify these
    #options while creating the new service area layer.
    outNALayer = arcpy.na.MakeServiceAreaLayer(inNetworkDataset, outNALayerName,
                                  impedanceAttribute, "TRAVEL_FROM", "1 2 3",
                                  "SIMPLE_POLYS", "NO_MERGE", "RINGS",
                                  hierarchy = "USE_HIERARCHY")

    #Get the layer object from the result object. The service layer can now be
    #referenced using the layer object.
    outNALayer = outNALayer.getOutput(0)

    #Get the names of all the sublayers within the service area layer.
    subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
    #Stores the layer names that we will use later
    facilitiesLayerName = subLayerNames["Facilities"]

    #Load the fire stations as facilities using default field mappings and
    #default search tolerance
    arcpy.na.AddLocations(outNALayer, facilitiesLayerName, inFacilities, "", "")

    #Solve the service area layer
    arcpy.na.Solve(outNALayer)

    #Save the solved service area layer as a layer file on disk with relative
    #paths
    arcpy.management.SaveToLayerFile(outNALayer,outLayerFile,"RELATIVE")

    print "Script completed successfully"

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "An error occurred on line %i" % tb.tb_lineno
    print str(e)
MakeServiceAreaLayer – Beispiel 4 (Workflow)

Dieses Beispiel veranschaulicht das Erstellen von Einzugsgebieten um Einrichtungen für mehrere Uhrzeiten sowie zum Übertragen von Feldern aus den Eingabe-Features in die Ausgabe-Features und Anhängen von Ausgabe-Polygonen an eine vorhandene Feature-Class.

# Name: MakeServiceAreaLayer_Workflow2.py
# Description: Generate 3-minute service areas around fire stations at several
#               times of day to compare coverage differences due to varying
#               traffic conditions. Save the results to a feature class on disk.
# Requirements: Network Analyst Extension

import datetime

#Import system modules
import arcpy
from arcpy import env

try:
    #Check out the Network Analyst extension license
    arcpy.CheckOutExtension("Network")

    #Set environment settings
    env.workspace = "C:/Data/SanFrancisco.gdb"
    env.overwriteOutput = True

    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    outNALayerName = "FireStationCoverage"
    outSAFC = "Analysis/outSAPolys"
    impedanceAttribute = "TravelTime"
    inFacilities = "Analysis/FireStations"
    timelist = [datetime.datetime(2013, 8, 23, 7, 0, 0),
                datetime.datetime(2013, 8, 23, 12, 30, 0),
                datetime.datetime(2013, 8, 23, 17, 30, 0),
                datetime.datetime(2013, 8, 23, 21, 0, 0)]

    #Create a new service area layer.
    outSAResultObject = arcpy.na.MakeServiceAreaLayer(inNetworkDataset, outNALayerName,
                                  impedanceAttribute, "TRAVEL_FROM", "3",
                                  "DETAILED_POLYS", "NO_MERGE",
                                  hierarchy = "NO_HIERARCHY")

    #Get the layer object from the result object. The service area layer can
    #now be referenced using the layer object.
    outNALayer = outSAResultObject.getOutput(0)

    #Get the names of all the sublayers within the service area layer.
    subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
    #Store the layer names that we will use later
    facilitiesLayerName = subLayerNames["Facilities"]
    polygonsLayerName = subLayerNames["SAPolygons"]

    #The input data has a field for FireStationID that we want to transfer to
    #our analysis layer. Add the field, and then use field mapping to transfer
    #the values.
    arcpy.na.AddFieldToAnalysisLayer(outNALayer, facilitiesLayerName,
                                                    "FireStationID", "TEXT")
    fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer,
                                                    facilitiesLayerName)
    fieldMappings["FireStationID"].mappedFieldName = "FireStationID"

    #Load the fire stations as facilities.
    arcpy.na.AddLocations(outNALayer, facilitiesLayerName, inFacilities,
                            fieldMappings, "",
                            exclude_restricted_elements = "EXCLUDE")

    #Get sublayers we will want to work with later
    FacilitiesSubLayer = arcpy.mapping.ListLayers(outNALayer,
                                                    facilitiesLayerName)[0]
    PolygonsSubLayer = arcpy.mapping.ListLayers(outNALayer,
                                                    polygonsLayerName)[0]

    # Add fields to the output Polygons sublayer. We will fill the values later.
    arcpy.na.AddFieldToAnalysisLayer(outNALayer, polygonsLayerName,
                                        "FireStationID", "TEXT")
    arcpy.na.AddFieldToAnalysisLayer(outNALayer, polygonsLayerName,
                                        "TimeOfDay", "TEXT")

    #Get the Service Area Layer's solver properties. This will allow us to
    #set individual properties later without re-creating the layer.
    SA_SolverProperties = arcpy.na.GetSolverProperties(outNALayer)

    #Solve the Service Area for each time of day in our time list
    for t in timelist:

        print "Now solving for time of day: " + str(t)

        #Use the solver properties to set the time of day for the solve
        SA_SolverProperties.timeOfDay = t

        #Solve the service area layer
        arcpy.na.Solve(outNALayer)

        #Transfer the FireStationID field from the input Facilities to the
        #output Polygons
        arcpy.management.AddJoin(PolygonsSubLayer, "FacilityID",
                                        FacilitiesSubLayer, "ObjectID")
        arcpy.management.CalculateField(PolygonsSubLayer, "FireStationID",
                                        "!Facilities.FireStationID!", "PYTHON")
        arcpy.management.RemoveJoin(PolygonsSubLayer)

        #Populate the TimeOfDay field
        expression = '"' + str(t) + '"'
        arcpy.management.CalculateField(PolygonsSubLayer, "TimeOfDay",
                                            expression, "PYTHON")

        #Append the polygons to the output feature class. If this was the first
        #solve, create the feature class.
        if not arcpy.Exists(outSAFC):
            arcpy.management.CopyFeatures(PolygonsSubLayer, outSAFC)
        else:
            arcpy.management.Append(PolygonsSubLayer, outSAFC)

    print "Script completed successfully"

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "An error occurred on line %i" % tb.tb_lineno
    print str(e)

Umgebungen

  • Aktueller Workspace

Lizenzinformationen

  • ArcGIS Desktop Basic: Ja
  • ArcGIS Desktop Standard: Ja
  • ArcGIS Desktop Advanced: Ja

Verwandte Themen

  • Einzugsgebiet-Analyse
  • Überblick über das Toolset "Analyse"
  • Was sind Netzwerkanalyse-Layer?
  • Einzugsgebiete generieren

ArcGIS Desktop

  • Startseite
  • Dokumentation
  • Support

ArcGIS Plattform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Über Esri

  • Über uns
  • Karriere
  • Insider-Blog
  • User Conference
  • Developer Summit
Esri
Wir sind an Ihrer Meinung interessiert.
Copyright © 2018 Esri. | Datenschutz | Rechtliches