Struct google_api_proto::google::maps::solar::v1::DataLayers
source · pub struct DataLayers {
pub imagery_date: Option<Date>,
pub imagery_processed_date: Option<Date>,
pub dsm_url: String,
pub rgb_url: String,
pub mask_url: String,
pub annual_flux_url: String,
pub monthly_flux_url: String,
pub hourly_shade_urls: Vec<String>,
pub imagery_quality: i32,
}
Expand description
Information about the solar potential of a region. The actual data
are contained in a number of GeoTIFF files covering the requested
region, for which this message contains URLs: Each string in the
DataLayers
message contains a URL from which the
corresponding GeoTIFF can be fetched. These URLs are valid for a
few hours after they’ve been generated. Most of the GeoTIFF files
are at a resolution of 0.1m/pixel, but the monthly flux file is at
0.5m/pixel, and the hourly shade files are at 1m/pixel. If a
pixel_size_meters
value was specified in the
GetDataLayersRequest
, then the minimum resolution in the GeoTIFF
files will be that value.
Fields§
§imagery_date: Option<Date>
When the source imagery (from which all the other data are derived) in this region was taken. It is necessarily somewhat approximate, as the images may have been taken over more than one day.
imagery_processed_date: Option<Date>
When processing was completed on this imagery.
dsm_url: String
The URL for an image of the DSM (Digital Surface Model) of the region. Values are in meters above EGM96 geoid (i.e., sea level). Invalid locations (where we don’t have data) are stored as -9999.
rgb_url: String
The URL for an image of RGB data (aerial photo) of the region.
mask_url: String
The URL for the building mask image: one bit per pixel saying whether that pixel is considered to be part of a rooftop or not.
annual_flux_url: String
The URL for the annual flux map (annual sunlight on roofs) of the region. Values are kWh/kW/year. This is unmasked flux: flux is computed for every location, not just building rooftops. Invalid locations are stored as -9999: locations outside our coverage area will be invalid, and a few locations inside the coverage area, where we were unable to calculate flux, will also be invalid.
monthly_flux_url: String
The URL for the monthly flux map (sunlight on roofs, broken down by month) of the region. Values are kWh/kW/year. The GeoTIFF pointed to by this URL will contain twelve bands, corresponding to January…December, in order.
hourly_shade_urls: Vec<String>
Twelve URLs for hourly shade, corresponding to January…December, in order. Each GeoTIFF will contain 24 bands, corresponding to the 24 hours of the day. Each pixel is a 32 bit integer, corresponding to the (up to) 31 days of that month; a 1 bit means that the corresponding location is able to see the sun at that day, of that hour, of that month. Invalid locations are stored as -9999 (since this is negative, it has bit 31 set, and no valid value could have bit 31 set as that would correspond to the 32nd day of the month).
An example may be useful. If you want to know whether a point (at pixel location (x, y)) saw sun at 4pm on the 22nd of June you would:
- fetch the sixth URL in this list (corresponding to June).
- look up the 17th channel (corresponding to 4pm).
- read the 32-bit value at (x, y).
- read bit 21 of the value (corresponding to the 22nd of the month).
- if that bit is a 1, then that spot saw the sun at 4pm 22 June.
More formally:
Given month
(1-12), day
(1…month max; February has 28 days)
and hour
(0-23), the shade/sun for that month/day/hour at a
position (x, y)
is the bit
(hourly_shade\[month - 1\])(x, y)\[hour\] & (1 << (day - 1))
where (x, y)
is spatial indexing, \[month - 1\]
refers to
fetching the month - 1
st URL (indexing from zero), \[hour\]
is
indexing into the channels, and a final non-zero result means
“sunny”. There are no leap days, and DST doesn’t exist (all days
are 24 hours long; noon is always “standard time” noon).
imagery_quality: i32
The quality of the result’s imagery.
Implementations§
source§impl DataLayers
impl DataLayers
sourcepub fn imagery_quality(&self) -> ImageryQuality
pub fn imagery_quality(&self) -> ImageryQuality
Returns the enum value of imagery_quality
, or the default if the field is set to an invalid enum value.
sourcepub fn set_imagery_quality(&mut self, value: ImageryQuality)
pub fn set_imagery_quality(&mut self, value: ImageryQuality)
Sets imagery_quality
to the provided enum value.
Trait Implementations§
source§impl Clone for DataLayers
impl Clone for DataLayers
source§fn clone(&self) -> DataLayers
fn clone(&self) -> DataLayers
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for DataLayers
impl Debug for DataLayers
source§impl Default for DataLayers
impl Default for DataLayers
source§impl Message for DataLayers
impl Message for DataLayers
source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
source§fn encode_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8>where
Self: Sized,
source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
source§fn encode_length_delimited_to_vec(&self) -> Vec<u8>where
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8>where
Self: Sized,
source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moresource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.source§impl PartialEq for DataLayers
impl PartialEq for DataLayers
source§fn eq(&self, other: &DataLayers) -> bool
fn eq(&self, other: &DataLayers) -> bool
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for DataLayers
Auto Trait Implementations§
impl Freeze for DataLayers
impl RefUnwindSafe for DataLayers
impl Send for DataLayers
impl Sync for DataLayers
impl Unpin for DataLayers
impl UnwindSafe for DataLayers
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request