Beschriftung | Erläuterung | Datentyp |
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.
| 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.
| String |
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
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})
Name | Erläuterung | Datentyp |
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.
| 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.
| String |
Codebeispiel
Im folgenden Beispiel 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)
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')