Skip to content

Shadow Cast

ESM:
Use dark colors for code blocksCopy
1
import "@arcgis/map-components/components/arcgis-shadow-cast";
CDN:
No specific import is needed for this component.
Since:ArcGIS Maps SDK for JavaScript 4.28

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.

threshold mode

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.

duration mode

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.

discrete mode

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. This influences the results when the start time of the range is before sunrise or when the end time is after the sunset.
  • 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

PropertyAttributeType
autoDestroyDisabledauto-destroy-disabledboolean
datedateDate | number | string
discreteOptionsDiscreteOptions
durationOptionsDurationOptions
endTimeOfDayend-time-of-daynumber
headingLevelheading-levelnumber
hideColorPickerhide-color-pickerboolean
hideDatePickerhide-date-pickerboolean
hideThresholdContexthide-threshold-contextboolean
hideThresholdContextColorhide-threshold-context-colorboolean
hideThresholdContextTimeIntervalhide-threshold-context-time-intervalboolean
hideThresholdContextTogglehide-threshold-context-toggleboolean
hideTimeRangeSliderhide-time-range-sliderboolean
hideTimezonehide-timezoneboolean
hideTooltiphide-tooltipboolean
hideVisualizationOptionshide-visualization-optionsboolean
iconiconstring
labellabelstring
position
deprecated
position"bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing"
referenceElementreference-elementHTMLArcgisLinkChartElement | HTMLArcgisMapElement | HTMLArcgisSceneElement | string
startTimeOfDaystart-time-of-daynumber
state
readonlyreflected
state"disabled" | "ready"
thresholdOptionsThresholdOptions
utcOffsetutc-offsetnumber
viewSceneView
visualizationTypevisualization-type"discrete" | "duration" | "threshold"

autoDestroyDisabled

Property
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

Property
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

Property
discreteOptions: DiscreteOptions

The configuration used when the component's visualizationType is set to "discrete".

Read more

durationOptions

Property
durationOptions: DurationOptions

The configuration used when the component's visualizationType is set to "duration".

Read more

endTimeOfDay

Property
endTimeOfDay: number

Time (in milliseconds from midnight of the date) when the shadow cast computation should stop.

Read more

Attribute
end-time-of-day
Default value
16 * 3600 * 1000

headingLevel

Property
headingLevel: number

Indicates the heading level to use for the titles "Time range" and "Visualization".

Attribute
heading-level
Default value
4

hideColorPicker

Property
hideColorPicker: boolean
Attribute
hide-color-picker
Default value
false

hideDatePicker

Property
hideDatePicker: boolean
Attribute
hide-date-picker
Default value
false

hideThresholdContext

Property
hideThresholdContext: boolean
Attribute
hide-threshold-context
Default value
false

hideThresholdContextColor

Property
hideThresholdContextColor: boolean
Attribute
hide-threshold-context-color
Default value
false

hideThresholdContextTimeInterval

Property
hideThresholdContextTimeInterval: boolean
Attribute
hide-threshold-context-time-interval
Default value
false

hideThresholdContextToggle

Property
hideThresholdContextToggle: boolean
Attribute
hide-threshold-context-toggle
Default value
false

hideTimeRangeSlider

Property
hideTimeRangeSlider: boolean
Attribute
hide-time-range-slider
Default value
false

hideTimezone

Property
hideTimezone: boolean
Attribute
hide-timezone
Default value
false

hideTooltip

Property
hideTooltip: boolean
Attribute
hide-tooltip
Default value
false

hideVisualizationOptions

Property
hideVisualizationOptions: boolean
Attribute
hide-visualization-options
Default value
false

icon

Property
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
Attribute
icon
Default value
"measure-building-height-shadow"

label

Property
label: string

The component's default label.

Attribute
label

position

deprecatedProperty
position: "bottom-leading" | "bottom-left" | "bottom-right" | "bottom-trailing" | "manual" | "top-leading" | "top-left" | "top-right" | "top-trailing"
Deprecatedsince 4.34, use slot instead.
Attribute
position

referenceElement

Property

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.

See also
Attribute
reference-element

startTimeOfDay

Property
startTimeOfDay: number

Time (in milliseconds from midnight of the date) when the shadow cast computation should start.

Read more

Attribute
start-time-of-day
Default value
10 * 3600 * 1000

state

readonlyreflected
Property
state: "disabled" | "ready"

The component's state. The values mean the following:

  • disabled - component is being created
  • ready - component is ready
Attribute
state
Default value
"disabled"

thresholdOptions

Property
thresholdOptions: ThresholdOptions

The configuration used when the component's visualizationType is set to "threshold".

Read more

utcOffset

Property
utcOffset: number

The difference in hours between UTC time and the times displayed in the component.

Attribute
utc-offset

view

Property
view: SceneView

The view associated with the component.

Note: The recommended approach is to fully migrate applications to use map and scene components and avoid using MapView and SceneView directly. However, if you are migrating a large application from widgets to components, you might prefer a more gradual transition. To support this use case, the SDK includes this view property which connects a component to a MapView or SceneView. Ultimately, once migration is complete, the Shadow Cast component will be associated with a map or scene component rather than using the view property.

visualizationType

Property
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 value
  • duration - displays all areas that receive shadows either in a continuous mode or in 1 hour time intervals
  • discrete - displays individual shadows cast at a given time interval
Attribute
visualization-type
Default value
"threshold"

Methods

MethodSignature
componentOnReadycomponentOnReady(): Promise<void>
destroydestroy(): Promise<void>
getDurationgetDuration(point: __esri.Point): Promise<number>
startstart(): Promise<void>
stopstop(): Promise<void>

componentOnReady

Method
componentOnReady(): Promise<void>

Create a promise that resolves once component is fully loaded.

Example
Use dark colors for code blocksCopy
1
2
3
4
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>

destroy

Method
destroy(): Promise<void>

Permanently destroy the component.

Returns
Promise<void>

getDuration

Method
getDuration(point: __esri.Point): Promise<number>

Returns the time (in milliseconds) spent in shadow for a certain point on the screen.

Read more

Parameters
ParameterTypeOptional?
pointPoint
Returns
Promise<number>

start

Method
start(): Promise<void>

Starts the component. While running, it will automatically perform shadow accumulation.

Returns
Promise<void>

stop

Method
stop(): Promise<void>

Stops the component.

Returns
Promise<void>

Events

arcgisPropertyChange

Event
arcgisPropertyChange: CustomEvent<{ name: "state"; }>

Emitted when the value of a property is changed. Use this to listen to changes to properties.

bubbles
composed
cancelable

arcgisReady

Event
arcgisReady: CustomEvent<void>

Emitted when the component associated with a map or scene view is ready to be interacted with.

bubbles
composed
cancelable

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.