Skip to content

foliummap module

Map (Map)

Create a folium map object.

Parameters:

Name Type Description Default
folium

Creates a map in Folium

required
Source code in rasterarea/foliummap.py
class Map(folium.Map):
    """ Create a folium map object.

    Args:
        folium: Creates a map in Folium 
    """
    def __init__(self, center=[20,0], zoom=2, **kwargs) -> None:
        """

        Args:
            center (list, optional): The Map Center. Defaults to [20,0].
            zoom (int, optional): Sets the zoom level of the map. Defaults to 2.
        """
        super().__init__(location=center, zoom_start=zoom, **kwargs)

    def add_tile_layer(self, url, name, attribution = "", **kwargs):
        """Adds a tile layer to the map.

        Args:
            url (str): The URL of the tile layer.
            name (str): The name of the tile layer
            attribution (str, optional): The attribution of the tile layer. Defaults to **
            """
        tile_layer = folium.TileLayer(
            tiles= url,
            name = name,
            attr = attribution,
            **kwargs
        )
        self.add_child(tile_layer)

    def add_basemap(self, basemap, **kwargs):   
        """Adds a basemap to the map

        Args:
            basemap: The basemap to add

        Raises:
            ValueError: Incorrect Basemap
        """
        import xyzservices.providers as xyz

        if basemap.lower() == 'roadmap':
            url = 'http://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}'
            self.add_tile_layer(url, name=basemap, **kwargs ) 
        elif basemap.lower() == 'satellite':
            url = 'http://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}'
            self.add_tile_layer(url, name=basemap, **kwargs)
        else:
            try:
                basemap = eval(f"xyz.{basemap}")
                url = basemap.build_url()
                attribution = basemap.attribution 
                self.add_tile_layer(url, name =basemap.name, attribution=attribution, **kwargs)
            except:
                raise ValueError(f"Basemap '{basemap}' not found")

    def add_geojson(self, data, name="GeoJSON", **kwargs):
        """Adds a GeoJSON layer to the map.

        Args:
            data (dict): The GeoJSON data.
            """

        if isinstance(data, str):
            import json
            with open(data, "r") as f:
                data = json.load(f)

        geojson = folium.GeoJson(data=data, name=name,**kwargs)
        geojson.add_to(self)

    def add_shp(self, data, name='Shapefile', **kwargs):
        """Adds a Shapefile layer to the map.

        Args:
            data (str): the path to the Shapefile.
        """
        import geopandas as gpd
        gdf = gpd.read_file(data)
        geojson = gdf.__geo_interface__
        self.add_geojson(geojson, name=name, **kwargs)

    def add_vector(self, data, name = 'Vector Data', **kwargs):
        """Adds Vector Data to the map.

        Args:
            data (str): the path to the Vector Data
            """
        import geopandas as gdp
        gdf = gdp.read_file(data)
        geojson = gdf.__geo_interface__
        self.add_geojson(geojson, name = name, **kwargs)

__init__(self, center=[20, 0], zoom=2, **kwargs) special

Parameters:

Name Type Description Default
center list

The Map Center. Defaults to [20,0].

[20, 0]
zoom int

Sets the zoom level of the map. Defaults to 2.

2
Source code in rasterarea/foliummap.py
def __init__(self, center=[20,0], zoom=2, **kwargs) -> None:
    """

    Args:
        center (list, optional): The Map Center. Defaults to [20,0].
        zoom (int, optional): Sets the zoom level of the map. Defaults to 2.
    """
    super().__init__(location=center, zoom_start=zoom, **kwargs)

add_basemap(self, basemap, **kwargs)

Adds a basemap to the map

Parameters:

Name Type Description Default
basemap

The basemap to add

required

Exceptions:

Type Description
ValueError

Incorrect Basemap

Source code in rasterarea/foliummap.py
def add_basemap(self, basemap, **kwargs):   
    """Adds a basemap to the map

    Args:
        basemap: The basemap to add

    Raises:
        ValueError: Incorrect Basemap
    """
    import xyzservices.providers as xyz

    if basemap.lower() == 'roadmap':
        url = 'http://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}'
        self.add_tile_layer(url, name=basemap, **kwargs ) 
    elif basemap.lower() == 'satellite':
        url = 'http://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}'
        self.add_tile_layer(url, name=basemap, **kwargs)
    else:
        try:
            basemap = eval(f"xyz.{basemap}")
            url = basemap.build_url()
            attribution = basemap.attribution 
            self.add_tile_layer(url, name =basemap.name, attribution=attribution, **kwargs)
        except:
            raise ValueError(f"Basemap '{basemap}' not found")

add_geojson(self, data, name='GeoJSON', **kwargs)

Adds a GeoJSON layer to the map.

Parameters:

Name Type Description Default
data dict

The GeoJSON data.

required
Source code in rasterarea/foliummap.py
def add_geojson(self, data, name="GeoJSON", **kwargs):
    """Adds a GeoJSON layer to the map.

    Args:
        data (dict): The GeoJSON data.
        """

    if isinstance(data, str):
        import json
        with open(data, "r") as f:
            data = json.load(f)

    geojson = folium.GeoJson(data=data, name=name,**kwargs)
    geojson.add_to(self)

add_shp(self, data, name='Shapefile', **kwargs)

Adds a Shapefile layer to the map.

Parameters:

Name Type Description Default
data str

the path to the Shapefile.

required
Source code in rasterarea/foliummap.py
def add_shp(self, data, name='Shapefile', **kwargs):
    """Adds a Shapefile layer to the map.

    Args:
        data (str): the path to the Shapefile.
    """
    import geopandas as gpd
    gdf = gpd.read_file(data)
    geojson = gdf.__geo_interface__
    self.add_geojson(geojson, name=name, **kwargs)

add_tile_layer(self, url, name, attribution='', **kwargs)

Adds a tile layer to the map.

Parameters:

Name Type Description Default
url str

The URL of the tile layer.

required
name str

The name of the tile layer

required
attribution str

The attribution of the tile layer. Defaults to **

''
Source code in rasterarea/foliummap.py
def add_tile_layer(self, url, name, attribution = "", **kwargs):
    """Adds a tile layer to the map.

    Args:
        url (str): The URL of the tile layer.
        name (str): The name of the tile layer
        attribution (str, optional): The attribution of the tile layer. Defaults to **
        """
    tile_layer = folium.TileLayer(
        tiles= url,
        name = name,
        attr = attribution,
        **kwargs
    )
    self.add_child(tile_layer)

add_vector(self, data, name='Vector Data', **kwargs)

Adds Vector Data to the map.

Parameters:

Name Type Description Default
data str

the path to the Vector Data

required
Source code in rasterarea/foliummap.py
def add_vector(self, data, name = 'Vector Data', **kwargs):
    """Adds Vector Data to the map.

    Args:
        data (str): the path to the Vector Data
        """
    import geopandas as gdp
    gdf = gdp.read_file(data)
    geojson = gdf.__geo_interface__
    self.add_geojson(geojson, name = name, **kwargs)

Last update: 2023-05-11