import "@arcgis/map-components/components/arcgis-shadow-cast";
The Shadow Cast component displays the cumulative shadows of 3D features in a Scene. This type of analysis is helpful in urban development, where new projects have to satisfy certain shadow duration constraints.
The component calculates the cumulative shadows for a time range during a single day. The user can configure the time range and select a calendar date. This time range and calendar date are only used for the shadow analysis and are not connected to the lighting in the scene. To control the lighting in the scene, the Daylight component can be used. Changing the timezone in the component updates the visualization by interpreting the time range as being in that timezone. This behavior is different from the Daylight component, where selecting a timezone updates the environment lighting's date and time according to the camera position.
The component provides three visualization modes: threshold, duration, and discrete mode.
In the threshold mode, only the areas that receive shadows for more than a certain amount of time are displayed. In the image below, on May 1, 2021 the red areas receive shadow for more than 4 hours within the time interval of 10AM to 4PM.
Total shadow duration mode displays the duration of the cumulative shadow using opacity: areas that don't receive any shadow are fully transparent and areas that receive a maximum amount of shadow have a default opacity of 0.7. The values in between are interpolated. Hovering over the Scene will display a tooltip showing the amount of time that location is in shadow, rounded to 15-minute intervals. In this mode, the visualization can display shadow cast in a continuous way or in 1-hour intervals.
Discrete shadows is a third visualization mode which displays individual shadows at a given time interval. For example, setting the time range to 10AM-11AM and the visualization time interval to 30 minutes will display shadows for 10AM, 10:30AM and 11:00AM.
The defaults for the time range and visualization settings can be changed using the startTimeOfDay, endTimeOfDay, and visualizationType properties.
Known limitations
- Shadow Cast is only supported in a 3D Scene component.
- Terrain does not cast shadows and it is therefore not taken into account in this analysis.
- The component does not take into account the daylight savings. Use the timezone dropdown to adjust the offset from the Coordinated Universal Time (UTC) and account for the daylight saving time.
- The timezone is automatically detected by the component based on the camera location. In some situations, this might not be accurate. In case of an inaccurate timezone, users can set it manually using the timezone dropdown.
See also
Demo
Properties
Property | Attribute | Type |
---|---|---|
auto-destroy-disabled | boolean | |
date | Date | number | string | |
| ||
| ||
end-time-of-day | number | |
heading-level | number | |
hide-color-picker | boolean | |
hide-date-picker | boolean | |
hide-threshold-context | boolean | |
hide-threshold-context-color | boolean | |
hide-threshold-context-time-interval | boolean | |
hide-threshold-context-toggle | boolean | |
hide-time-range-slider | boolean | |
hide-timezone | boolean | |
hide-tooltip | boolean | |
hide-visualization-options | boolean | |
icon | string | |
label | string | |
position | "bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing" | |
reference-element | ||
start-time-of-day | number | |
state readonly | state | "disabled" | "ready" |
| ||
utc-offset | number | |
visualization-type | "discrete" | "duration" | "threshold" |
autoDestroyDisabled
autoDestroyDisabled: boolean
If true, the component will not be destroyed automatically when it is disconnected from the document. This is useful when you want to move the component to a different place on the page, or temporarily hide it. If this is set, make sure to call the destroy method when you are done to prevent memory leaks.
- Attribute
- auto-destroy-disabled
- Default value
- false
date
date: Date | number | string
The calendar date used to calculate the shadow cast. This date excludes the time. If a date with a time is set, the time value will be set to midnight (00:00:00
) of that date in local system time.
If no date is set, then it defaults to the current date in local system time.
See also
- Attribute
- date
discreteOptions
discreteOptions: DiscreteOptions
The configuration used when the component's visualizationType is set to "discrete".
durationOptions
durationOptions: DurationOptions
The configuration used when the component's visualizationType is set to "duration".
endTimeOfDay
endTimeOfDay: number
Time (in milliseconds from midnight of the date) when the shadow cast computation should stop.
- Attribute
- end-time-of-day
- Default value
- 16 * 3600 * 1000
headingLevel
headingLevel: number
Indicates the heading level to use for the titles "Time range" and "Visualization".
- Attribute
- heading-level
- Default value
- 4
hideThresholdContext
hideThresholdContext: boolean
- Attribute
- hide-threshold-context
- Default value
- false
hideThresholdContextColor
hideThresholdContextColor: boolean
- Attribute
- hide-threshold-context-color
- Default value
- false
hideThresholdContextTimeInterval
hideThresholdContextTimeInterval: boolean
- Attribute
- hide-threshold-context-time-interval
- Default value
- false
hideThresholdContextToggle
hideThresholdContextToggle: boolean
- Attribute
- hide-threshold-context-toggle
- Default value
- false
hideTimeRangeSlider
hideTimeRangeSlider: boolean
- Attribute
- hide-time-range-slider
- Default value
- false
hideVisualizationOptions
hideVisualizationOptions: boolean
- Attribute
- hide-visualization-options
- Default value
- false
icon
icon: string
Icon which represents the component. Typically used when the component is controlled by another component (e.g. by the Expand component).
See also: Calcite Icons
- Attribute
- icon
- Default value
- "measure-building-height-shadow"
position
position: "bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing"
- Attribute
- position
- Default value
- "bottom-left"
referenceElement
referenceElement: HTMLArcgisLinkChartElement | HTMLArcgisMapElement | HTMLArcgisSceneElement | string
By assigning the id
attribute of the Map or Scene component to this property, you can position a child component anywhere in the DOM while still maintaining a connection to the Map or Scene.
- Attribute
- reference-element
startTimeOfDay
startTimeOfDay: number
Time (in milliseconds from midnight of the date) when the shadow cast computation should start.
- Attribute
- start-time-of-day
- Default value
- 10 * 3600 * 1000
state
state: "disabled" | "ready"
The component's state. The values mean the following:
disabled
- component is being createdready
- component is ready
- Attribute
- state
- Default value
- "disabled"
thresholdOptions
thresholdOptions: ThresholdOptions
The configuration used when the component's visualizationType is set to "threshold".
utcOffset
utcOffset: number
The difference in hours between UTC time and the times displayed in the component.
- Attribute
- utc-offset
visualizationType
visualizationType: "discrete" | "duration" | "threshold"
Type of visualization to use when showing the shadows. There are 3 types of visualization:
threshold
- only displays areas that receive shadows for a period longer than a given threshold valueduration
- displays all areas that receive shadows either in a continuous mode or in 1 hour time intervalsdiscrete
- displays individual shadows cast at a given time interval
- Attribute
- visualization-type
- Default value
- "threshold"
Slots
Events
Event | Type |
---|---|
CustomEvent<{ name: "state"; }> | |
CustomEvent<void> |
arcgisPropertyChange
arcgisPropertyChange: CustomEvent<{ name: "state"; }>
Emitted when the value of a property is changed. Use this to listen to changes to properties.
Events triggered on this element will be propagated to their outermost elements.
The event is composable and will propagate across the shadow DOM into the standard DOM.
The event's default behavior can be canceled, allowing for custom behavior to be implemented instead.
arcgisReady
arcgisReady: CustomEvent<void>
Emitted when the component associated with a map or scene view is is ready to be interacted with.
Events triggered on this element will be propagated to their outermost elements.
The event is composable and will propagate across the shadow DOM into the standard DOM.
The event's default behavior can be canceled, allowing for custom behavior to be implemented instead.
Methods
Method | Signature |
---|---|
componentOnReady(): Promise<void> | |
destroy(): Promise<void> | |
getDuration(point: __esri.Point): Promise<number> | |
start(): Promise<void> | |
stop(): Promise<void> |
componentOnReady
componentOnReady(): Promise<void>
Create a promise that resolves once component is fully loaded.
Example
const arcgisShadowCast = document.querySelector("arcgis-shadow-cast");
document.body.append(arcgisShadowCast);
await arcgisShadowCast.componentOnReady();
console.log("arcgis-shadow-cast is ready to go!");
- Returns
- Promise<void>
getDuration
getDuration(point: __esri.Point): Promise<number>
Returns the time (in milliseconds) spent in shadow for a certain point on the screen.
Parameters
Parameter | Type | Optional? |
---|---|---|
point |
- Returns
- Promise<number>