Beschriftung | Erläuterung | Datentyp |
Eingabe-Features | Die Multipatch-Features, die zum Modellieren von Schatten verwendet werden. | Feature Layer |
Startdatum und -uhrzeit | Das Datum mit Uhrzeit, ab dem Sonnenpositionen bestimmt werden sollen. Es muss sowohl ein Datum als auch eine Uhrzeit angegeben werden. Ein Ausgabe-Schattenvolumen wird nur für die Zeitpunkte erzeugt, an denen sich die Sonne über dem Horizont befindet. | 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 an die Sommerzeit angepasst werden soll.
| 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) | Das Enddatum mit Uhrzeit, das für die Berechnung der Sonnenposition verwendet werden soll. Es kann auch eine Uhrzeit ohne Datum angegeben werden. In diesen Fall entspricht das Enddatum dem Startdatum. Wenn ein Datum angegeben wird, dann muss auch eine Uhrzeit angegeben werden. Ein Ausgabe-Schattenvolumen wird nur für die Zeitpunkte erzeugt, an denen sich die Sonne über dem Horizont befindet. | Date |
Iterationsintervall (optional) | Der Wert, mit dem die Iteration der Zeit ab dem Startdatum definiert werden soll. | Double |
Iterationseinheit (optional) | Gibt die Einheit an, die den auf den Wert des Parameters 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.
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: Der Name der Feature-Class, die das Schattenvolumen wirft.
- SOURCE_ID: Die eindeutige ID des Features, das das Schattenvolumen wirft.
- DATE_TIME: Die zur Berechnung der Sonnenposition verwendete lokale Datums- und Uhrzeitangabe.
- AZIMUTH: Der 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.
- VERT_ANGLE: Der Winkel in Grad zwischen dem Horizont der Erde und der relativen Position der Sonne, 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 | Das Datum mit Uhrzeit, ab dem Sonnenpositionen bestimmt werden sollen. Es muss sowohl ein Datum als auch eine Uhrzeit angegeben werden. Ein Ausgabe-Schattenvolumen wird nur für die Zeitpunkte erzeugt, an denen sich die Sonne über dem Horizont befindet. | Date |
out_feature_class | Die Multipatch-Feature-Class, die die resultierenden Schattenvolumen speichert. | Feature Class |
adjusted_for_dst (optional) | Gibt an, ob der Zeitwert an die Sommerzeit angepasst werden soll.
| 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) | Das Enddatum mit Uhrzeit, das für die Berechnung der Sonnenposition verwendet werden soll. Es kann auch eine Uhrzeit ohne Datum angegeben werden. In diesen Fall entspricht das Enddatum dem Startdatum. Wenn ein Datum angegeben wird, dann muss auch eine Uhrzeit angegeben werden. Ein Ausgabe-Schattenvolumen wird nur für die Zeitpunkte erzeugt, an denen sich die Sonne über dem Horizont befindet. | Date |
iteration_interval (optional) | Der Wert, mit dem die Iteration der Zeit ab dem Startdatum definiert werden soll. | Double |
iteration_unit (optional) | Gibt die Einheit an, die den auf den Wert des Parameters start_date_and_time 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')
Umgebungen
Lizenzinformationen
- Basic: Erfordert 3D Analyst
- Standard: Erfordert 3D Analyst
- Advanced: Erfordert 3D Analyst