blob: fd7eca37da33c055a14c1ca6a932a22e4a6efbf7 [file] [log] [blame] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
SedonaPyDeck offers a number of APIs which aid in quick and interactive visualization of a geospatial data in a Jupyter notebook/lab environment.
Inorder to start using SedonaPyDeck, simply import Sedona using:
```python
from sedona.spark import *
```
Alternatively it can also be imported using:
```python
from sedona.spark import SedonaPyDeck
```
!!!Note
For more information on the optional parameters please visit [PyDeck docs](https://deckgl.readthedocs.io/en/latest/deck.html).
SedonaPyDeck assumes the map provider to be Mapbox when user selects 'salellite' option for `map_style`.
Following are details on all the APIs exposed via SedonaPyDeck:
### **Geometry Map**
```python
def create_geometry_map(
df,
fill_color="[85, 183, 177, 255]",
line_color="[85, 183, 177, 255]",
elevation_col=0,
initial_view_state=None,
map_style=None,
map_provider=None,
api_keys=None,
stroked=True,
): ...
```
The parameter `fill_color` can be given a list of RGB/RGBA values, or a string that contains RGB/RGBA values based on a column, and is used to color polygons or point geometries in the map
The parameter `line_color` can be given a list of RGB/RGBA values, or a string that contains RGB/RGBA values based on a column, and is used to color the line geometries in the map.
The parameter `elevation_col` can be given a static elevation or elevation based on column values like `fill_color`, this only works for the polygon geometries in the map.
The parameter `stroked` determines whether to draw an outline around polygons and points, accepts a boolean value. For more information, please refer to this [documentation of deck.gl](https://deck.gl/docs/api-reference/layers/geojson-layer#:~:text=%27circle%27.-,stroked,-(boolean%2C%20optional)).
Optionally, parameters `initial_view_state`, `map_style`, `map_provider`, `api_keys` can be passed to configure the map as per user's liking.
More details on the parameters and their default values can be found on the PyDeck website as well by deck.gl [here](https://github.com/visgl/deck.gl/blob/8.9-release/docs/api-reference/layers/geojson-layer.md)
### **Choropleth Map**
```python
def create_choropleth_map(
df,
fill_color=None,
plot_col=None,
initial_view_state=None,
map_style=None,
map_provider=None,
api_keys=None,
elevation_col=0,
stroked=True,
): ...
```
The parameter `fill_color` can be given a list of RGB/RGBA values, or a string that contains RGB/RGBA values based on a column.
The parameter `stroked` determines whether to draw an outline around polygons and points, accepts a boolean value. For more information please refer to this [documentation of deck.gl](https://deck.gl/docs/api-reference/layers/geojson-layer#:~:text=%27circle%27.-,stroked,-(boolean%2C%20optional)).
For example, all these are valid values of fill_color:
```python
fill_color = [255, 12, 250]
fill_color = [0, 12, 250, 255]
fill_color = (
"[0, 12, 240, AirportCount * 10]" ## AirportCount is a column in the passed df
)
```
Instead of giving a `fill_color` parameter, a 'plot_col' can be passed which specifies the column to decide the choropleth.
SedonaPyDeck then creates a default color scheme based on the values of the column passed.
The parameter `elevation_col` can be given a numeric or a string value (containing the column with/without operations on it) to set a 3D elevation to the plotted polygons if any.
Optionally, parameters `initial_view_state`, `map_style`, `map_provider`, `api_keys` can be passed to configure the map as per user's liking.
More details on the parameters and their default values can be found on the PyDeck website.
### **Scatterplot**
```python
def create_scatterplot_map(
df,
fill_color="[255, 140, 0]",
radius_col=1,
radius_min_pixels=1,
radius_max_pixels=10,
radius_scale=1,
initial_view_state=None,
map_style=None,
map_provider=None,
api_keys=None,
): ...
```
The parameter `fill_color` can be given a list of RGB/RGBA values, or a string that contains RGB/RGBA values based on a column.
The parameter `radius_col` can be given a numeric value or a string value consisting of any operations on the column, in order to specify the radius of the plotted point.
The parameter `radius_min_pixels` can be given a numeric value that would set the minimum radius in pixels. This can be used to prevent the plotted circle from getting too small when zoomed out.
The parameter `radius_max_pixels` can be given a numeric value that would set the maximum radius in pixels. This can be used to prevent the circle from getting too big when zoomed in.
The parameter `radius_scale` can be given a numeric value that sets a global radius multiplier for all points.
Optionally, parameters `initial_view_state`, `map_style`, `map_provider`, `api_keys` can be passed to configure the map as per user's liking.
More details on the parameters and their default values can be found on the PyDeck website as well by deck.gl [here](https://github.com/visgl/deck.gl/blob/8.9-release/docs/api-reference/layers/scatterplot-layer.md)
### **Heatmap**
```python
def create_heatmap(
df,
color_range=None,
weight=1,
aggregation="SUM",
initial_view_state=None,
map_style=None,
map_provider=None,
api_keys=None,
): ...
```
The parameter `color_range` can be optionally given a list of RGB values, SedonaPyDeck by default uses `6-class YlOrRd` as color_range.
More examples can be found on [colorbrewer](https://colorbrewer2.org/#type=sequential&scheme=YlOrRd&n=6)
The parameter `weight` can be given a numeric value or a string with column and operations on it to determine weight of each point while plotting a heatmap.
By default, SedonaPyDeck assigns a weight of 1 to each point
The parameter `aggregation` can be used to define aggregation strategy to use when aggregating heatmap to a lower resolution (zooming out).
One of "MEAN" or "SUM" can be provided. By default, SedonaPyDeck uses "MEAN" as the aggregation strategy.
Optionally, parameters `initial_view_state`, `map_style`, `map_provider`, `api_keys` can be passed to configure the map as per user's liking.
More details on the parameters and their default values can be found on the PyDeck website as well by deck.gl [here](https://github.com/visgl/deck.gl/blob/8.9-release/docs/api-reference/aggregation-layers/heatmap-layer.md)