Sonnenschattenvolumen (3D Analyst)

Zusammenfassung

Erstellt geschlossene Volumen, die Schatten modellieren, die von den einzelnen Features geworfen werden. Dabei wird Sonnenlicht für ein bestimmtes Datum und eine bestimmte Uhrzeit verwendet.

Verwendung

  • Alle Eingabe-Features sollten sich im gleichen Gebietsschema befinden, da Berechnungen der relativen Sonnenposition auf der Position des ersten Features in der ersten Feature-Class basieren.

  • Schatten, die die Bedingungen von Sonnenaufgang und Sonnenuntergang modellieren, können erstellt werden, indem in den Parametern Startdatum und -uhrzeit bzw. Enddatum und -uhrzeit nur ein Datum angegeben wird. Schattenvolumen werden nicht erzeugt, wenn die Sonne für eine bestimmte Angabe von Datum und Uhrzeit nicht sichtbar ist oder wenn die relative Position der Sonne in einem vertikalen Winkel von 90 Grad zu den Eingabe-Features liegt.

  • Schatten werden als geschlossene Multipatches modelliert, die durch Extrudieren der Eingabe-Features in Richtung des Sonnenlichts erstellt werden. Lichtstrahlen werden als parallel angesehen und bewegen sich in die Richtung, die für die relative Position der Sonne berechnet wird. Jedes Schattenvolumen beginnt und endet auf einer vertikalen Ebene, die rechtwinklig zur horizontalen Projektion der Sonnenstrahlen liegt.

  • Die folgenden Felder enthalten Attribute für die Schattenvolumen-Features:

    • SOURCE: Name der Feature-Class, die das Schattenvolumen wirft.
    • SOURCE_ID: Eindeutige ID des Features, das das Schattenvolumen wirft.
    • DATE_TIME: Zur Berechnung der Sonnenposition verwendete lokale Datums- und Uhrzeitangabe.
    • AZIMUTH: Winkel in Grad zwischen geographisch Nord und der rechtwinkligen Projektion der relativen Position der Sonne auf den Horizont der Erde. Die Werte liegen zwischen 0 und 360.
    • SOURCE_ID – Winkel in Grad zwischen dem Horizont der Erde und der relativen Sonnenposition, wobei der Horizont 0 Grad festlegt und 90 Grad direkt darüber ist.
    Hinweis:

    In der Regel liegen Schattenvolumen eng an den Features, zu denen sie gehören. Wenn ein Schatten nicht auf diese Weise generiert werden kann, wird er an der Grenze der äußeren Ausdehnung des Features erstellt. Wenn mindestens ein Schatten auf diese Weise erstellt wird, wird das Feld HUGS_FEATR aufgenommen, um die Schatten zu kennzeichnen, die eng an den entsprechenden Features liegen.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Features

Die Multipatch-Features, die zum Modellieren von Schatten verwendet werden.

Feature Layer
Startdatum und -uhrzeit

Datums- und Uhrzeitangaben, für die die Trajektorie von Sonnenlicht zum Modellieren der Schatten berechnet wird.

Date
Ausgabe-Feature-Class

Die Multipatch-Feature-Class, die die resultierenden Schattenvolumen speichert.

Feature Class
Für Sommerzeit angepasst
(optional)

Gibt an, ob der Zeitwert automatisch für Sommerzeit angepasst wird.

  • Deaktiviert: Sommerzeit wird nicht beachtet. Dies ist die Standardeinstellung.
  • Aktiviert: Sommerzeit wird beachtet.
Boolean
Zeitzone
(optional)

Die Zeitzone, in der sich die beteiligte Eingabe befindet. Die Standardeinstellung ist die Zeitzone, auf die das Betriebssystem festgelegt ist.

String
Enddatum und -zeit
(optional)

Enddatum und -zeit für die Berechnung der Sonnenposition. Wenn nur ein Datum angegeben wird, wird als Enduhrzeit der Sonnenuntergang angenommen.

Date
Iterationsintervall
(optional)

Der Wert, mit dem die Iteration der Zeit ab dem Startdatum definiert wird.

Double
Iterationseinheit
(optional)

Die Einheit, die den auf Startdatum und -uhrzeit angewendeten Iterationswert definiert.

  • TageDer Iterationswert stellt Tage dar. Dies ist die Standardeinstellung.
  • StundenDer Iterationswert stellt eine oder mehrere Stunden dar.
  • MinutenDer Iterationswert stellt eine oder mehrere Minuten dar.
String

arcpy.ddd.SunShadowVolume(in_features, start_date_and_time, out_feature_class, {adjusted_for_dst}, {time_zone}, {end_date_and_time}, {iteration_interval}, {iteration_unit})
NameErläuterungDatentyp
in_features
[in_features,...]

Die Multipatch-Features, die zum Modellieren von Schatten verwendet werden.

Feature Layer
start_date_and_time

Datums- und Uhrzeitangaben, für die die Trajektorie von Sonnenlicht zum Modellieren der Schatten berechnet wird.

Date
out_feature_class

Die Multipatch-Feature-Class, die die resultierenden Schattenvolumen speichert.

Feature Class
adjusted_for_dst
(optional)

Gibt an, ob der Zeitwert automatisch für Sommerzeit angepasst wird.

  • ADJUSTED_FOR_DSTSommerzeit wird beachtet.
  • NOT_ADJUSTED_FOR_DSTSommerzeit wird nicht beachtet. Dies ist die Standardeinstellung.
Boolean
time_zone
(optional)

Die Zeitzone, in der sich die beteiligte Eingabe befindet. Die Standardeinstellung ist die Zeitzone, auf die das Betriebssystem festgelegt ist.

String
end_date_and_time
(optional)

Enddatum und -zeit für die Berechnung der Sonnenposition. Wenn nur ein Datum angegeben wird, wird als Enduhrzeit der Sonnenuntergang angenommen.

Date
iteration_interval
(optional)

Der Wert, mit dem die Iteration der Zeit ab dem Startdatum definiert wird.

Double
iteration_unit
(optional)

Die Einheit, die den auf Startdatum und -uhrzeit angewendeten Iterationswert definiert.

  • DAYSDer Iterationswert stellt Tage dar. Dies ist die Standardeinstellung.
  • HOURSDer Iterationswert stellt eine oder mehrere Stunden dar.
  • MINUTESDer Iterationswert stellt eine oder mehrere Minuten dar.
String

Codebeispiel

SunShadowVolume: Beispiel 1 (Python-Fenster)

Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.

arcpy.env.workspace = 'C:/data'
arcpy.ddd.SunShadowVolume('sample.fgdb/buildings', 
                         start_date_and_time='12/25/2011 10:00 AM', 
                         out_feature_class='shadows_dec25.shp', 
                         adjusted_for_dst='ADJUSTED_FOR_DST', 
                         time_zone='Eastern_Standard_Time',
                         end_date_and_time='12/25/2011 3:00 PM', 
                         iteration_interval='HOURS', iteration_unit=1)
SunShadowVolume: Beispiel 2 (eigenständiges Skript)

Im folgenden Beispiel wird die Verwendung dieses Werkzeugs in einem eigenständigen Python-Skript veranschaulicht.

'''*********************************************************************
Name: Model Shadows For GeoVRML Models
Description: Creates a model of the shadows cast by GeoVRML models
             imported to a multipatch feature class for a range of dates
             and times. A range of times from the start time and end
             time can also be specified by setting the EnforceTimes
             Boolean to True. This sample is designed to be used in a
             script tool.
*********************************************************************'''
# Import system modules
import arcpy
from datetime import datetime, time, timedelta

#*************************  Script Variables  **************************
inFiles = arcpy.GetParameterAsText(0) # list of input features
spatialRef = arcpy.GetParameterAsText(1) # list of GeoVRML files
outFC = arcpy.GetParameterAsText(2) # multipatch from 3D files
inTimeZone = arcpy.GetParameterAsText(3) # time zone
startDate = arcpy.GetParameter(4) # starting date as datetime
endDate = arcpy.GetParameter(5) # ending date as datetime
dayInterval = arcpy.GetParameter(6) # day interval as long (0-365)
minInterval = arcpy.GetParameter(7) # minute interval as long (0-60)
enforceTime = arcpy.GetParameter(8) # minute interval as Boolean
outShadows = arcpy.GetParameterAsText(9) # output shadow models
outIntersection = arcpy.GetParameterAsText(10) # shadow & bldg intersection

# Function to find all possible date/time intervals for shadow modelling
def time_list():
    dt_result = [startDate]
    if dayInterval:
        if endDate: #Defines behavior when end date is supplied
            while startDate < endDate:
                startDate += timedelta(days=dayInterval)
                dt_result.append(startDate)
            dt_result.append(endDate)
        else: # Behavior when end date is not given
            daymonthyear = datetime.date(startDate)
            while startDate <= datetime(daymonthyear.year, 12, 31, 23, 59):
                startDate += timedelta(days=dayInterval)
                dt_result.append(startDate)
    return dt_result


importFC = arcpy.CreateUniqueName('geovrml_import', 'in_memory')

# Import GeoVRML files to in-memory feature
arcpy.ddd.Import3DFiles(inFiles, importFC, 'ONE_FILE_ONE_FEATURE',
                        spatialRef, 'Z_IS_UP', 'wrl')

# Ensure that building models are closed
arcpy.ddd.EncloseMultiPatch(importFC, outFC, 0.05)

# Discard in-memory feature
arcpy.management.Delete(importFC)
dt_result = time_list()
for dt in dt_result:
    if dt == dt_result[0]:
        shadows = outShadows
    else:
        shadows = arcpy.CreateUniqueName('shadow', 'in_memory')
    arcpy.ddd.SunShadowVolume(outFC, dt, shadows, 'ADJUST_FOR_DST',
                              inTimeZone, '', minInterval, 'MINUTES')
    if dt is not dt_result[0]:
        arcpy.management.Append(shadows, outShadows)
        arcpy.management.Delete(shadows)
arcpy.ddd.Intersect3D(outFC, outIntersection, outShadows, 'SOLID')

Lizenzinformationen

  • Basic: Erfordert 3D Analyst
  • Standard: Erfordert 3D Analyst
  • Advanced: Erfordert 3D Analyst

Verwandte Themen