foliumap module¶
This module provides a custom Map class that extends folium.Map
Map (Map)
¶
Source code in ortho_modificator/foliumap.py
class Map(folium.Map):
def __init__(self, center=(0, 0), zoom=2, **kwargs):
super().__init__(location=center, zoom_start=zoom, **kwargs)
# folium.LayerControl().add_to(self)
def add_geojson(
self,
data,
zoom_to_layer=True,
hover_style=None,
**kwargs,
):
import geopandas as gpd
if hover_style is None:
hover_style = {"color": "yellow", "fillOpacity": 0.1}
if isinstance(data, str):
gdf = gpd.read_file(data)
geojson = gdf.__geo_interface__
elif isinstance(data, dict):
geojson = data
folium.GeoJson(data=geojson, **kwargs).add_to(self)
# if zoom_to_layer:
# bounds = gdf.total_bounds
# self.fit_bounds([[bounds[1], bounds[0]], [bounds[3], bounds[2]]])
def add_shp(self, data, **kwargs):
"""_summary_
Args:
data (_type_): _description_
"""
import geopandas as gpd
gdf = gpd.read_file(data)
gdf = gdf.to_crs(epsg=4326)
geojson = gdf.__geo_interface__
self.add_geojson(geojson, **kwargs)
def add_gdf(self, gdf, **kwargs):
gdf = gdf.to_crs(epsg=4326)
geojson = gdf.__geo_interface__
self.add_geojson(geojson, **kwargs)
def add_vector(self, data, **kwargs):
import geopandas as gpd
if isinstance(data, str):
gdf = gpd.read_file(data)
self.add_gdf(gdf, **kwargs)
elif isinstance(data, gpd.GeoDataFrame):
self.add_gdf(gdf, **kwargs)
elif isinstance(data, dict):
self.add_geojson(data, **kwargs)
else:
raise ValueError("Invalid data type")
def add_layer_control(self):
folium.LayerControl().add_to(self)
def add_split_map(self, left="openstreetmap", right="cartodbpositron", **kwargs):
# map_types = {
# "ROADMAP": "m",
# "SATELLITE": "s",
# "HYBRID": "y",
# "TERRAIN": "p",
# }
# map_type = map_types[map_type.upper()]
# url = (
# f"https://mt1.google.com/vt/lyrs={map_type.lower()}&x={{x}}&y={{y}}&z={{z}}"
# )
layer_right = folium.TileLayer(left, **kwargs)
layer_left = folium.TileLayer(right, **kwargs)
sbs = folium.plugins.SideBySideLayers(
layer_left=layer_left, layer_right=layer_right
)
layer_left.add_to(self)
layer_right.add_to(self)
sbs.add_to(self)
add_shp(self, data, **kwargs)
¶
summary
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
_type_ |
description |
required |
Source code in ortho_modificator/foliumap.py
def add_shp(self, data, **kwargs):
"""_summary_
Args:
data (_type_): _description_
"""
import geopandas as gpd
gdf = gpd.read_file(data)
gdf = gdf.to_crs(epsg=4326)
geojson = gdf.__geo_interface__
self.add_geojson(geojson, **kwargs)