10 add vector
Adding local vector data (e.g., shp, geojson, kml) to the map
Uncomment the following line to install leafmap if needed.
In [1]:
Copied!
# !pip install leafmap
# !pip install leafmap
In [2]:
Copied!
import leafmap
import leafmap
In [3]:
Copied!
m = leafmap.Map()
m
m = leafmap.Map()
m
Out[3]:
Make this Notebook Trusted to load map: File -> Trust Notebook
This demo is based on the ipyleaflet plotting backend. The folium plotting backend does not have the interactive GUI for loading local vector data.
Add a GeoJSON to the map.
In [4]:
Copied!
m = leafmap.Map(center=[0, 0], zoom=2)
in_geojson = 'https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/cable-geo.geojson'
m.add_geojson(in_geojson, layer_name="Cable lines")
m
m = leafmap.Map(center=[0, 0], zoom=2)
in_geojson = 'https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/cable-geo.geojson'
m.add_geojson(in_geojson, layer_name="Cable lines")
m
--------------------------------------------------------------------------- JSONDecodeError Traceback (most recent call last) File ~/.local/lib/python3.9/site-packages/requests/models.py:910, in Response.json(self, **kwargs) 909 try: --> 910 return complexjson.loads(self.text, **kwargs) 911 except JSONDecodeError as e: 912 # Catch JSON-related errors and raise as requests.JSONDecodeError 913 # This aliases json.JSONDecodeError and simplejson.JSONDecodeError File ~/.local/lib/python3.9/site-packages/simplejson/__init__.py:525, in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, use_decimal, **kw) 521 if (cls is None and encoding is None and object_hook is None and 522 parse_int is None and parse_float is None and 523 parse_constant is None and object_pairs_hook is None 524 and not use_decimal and not kw): --> 525 return _default_decoder.decode(s) 526 if cls is None: File ~/.local/lib/python3.9/site-packages/simplejson/decoder.py:373, in JSONDecoder.decode(self, s, _w, _PY3) 372 if end != len(s): --> 373 raise JSONDecodeError("Extra data", s, end, len(s)) 374 return obj JSONDecodeError: Extra data: line 1 column 4 - line 1 column 15 (char 3 - 14) During handling of the above exception, another exception occurred: JSONDecodeError Traceback (most recent call last) File ~/.local/lib/python3.9/site-packages/leafmap/foliumap.py:1089, in Map.add_geojson(self, in_geojson, layer_name, **kwargs) 1088 if in_geojson.startswith("http"): -> 1089 data = requests.get(in_geojson).json() 1090 else: File ~/.local/lib/python3.9/site-packages/requests/models.py:917, in Response.json(self, **kwargs) 916 else: --> 917 raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) JSONDecodeError: [Errno Extra data] 404: Not Found: 3 During handling of the above exception, another exception occurred: Exception Traceback (most recent call last) Input In [4], in <cell line: 4>() 1 m = leafmap.Map(center=[0, 0], zoom=2) 3 in_geojson = 'https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/cable-geo.geojson' ----> 4 m.add_geojson(in_geojson, layer_name="Cable lines") 6 m File ~/.local/lib/python3.9/site-packages/leafmap/foliumap.py:1104, in Map.add_geojson(self, in_geojson, layer_name, **kwargs) 1102 raise TypeError("The input geojson must be a type of str or dict.") 1103 except Exception as e: -> 1104 raise Exception(e) 1106 # interchangeable parameters between ipyleaflet and folium. 1107 if "style" in kwargs: Exception: [Errno Extra data] 404: Not Found: 3
Add a GeoJSON with random filled color to the map.
In [5]:
Copied!
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
m.add_geojson(
url, layer_name="Countries", fill_colors=['red', 'yellow', 'green', 'orange']
)
m
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
m.add_geojson(
url, layer_name="Countries", fill_colors=['red', 'yellow', 'green', 'orange']
)
m
Out[5]:
Make this Notebook Trusted to load map: File -> Trust Notebook
Use the style_callback
function for assigning a random color to each polygon.
In [6]:
Copied!
import random
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
def random_color(feature):
return {
'color': 'black',
'fillColor': random.choice(['red', 'yellow', 'green', 'orange']),
}
m.add_geojson(url, layer_name="Countries", style_callback=random_color)
m
import random
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
def random_color(feature):
return {
'color': 'black',
'fillColor': random.choice(['red', 'yellow', 'green', 'orange']),
}
m.add_geojson(url, layer_name="Countries", style_callback=random_color)
m
Out[6]:
Make this Notebook Trusted to load map: File -> Trust Notebook
Use custom style
and hover_style
functions.
In [7]:
Copied!
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
style = {
"stroke": True,
"color": "#0000ff",
"weight": 2,
"opacity": 1,
"fill": True,
"fillColor": "#0000ff",
"fillOpacity": 0.1,
}
hover_style = {"fillOpacity": 0.7}
m.add_geojson(url, layer_name="Countries", style=style, hover_style=hover_style)
m
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
style = {
"stroke": True,
"color": "#0000ff",
"weight": 2,
"opacity": 1,
"fill": True,
"fillColor": "#0000ff",
"fillOpacity": 0.1,
}
hover_style = {"fillOpacity": 0.7}
m.add_geojson(url, layer_name="Countries", style=style, hover_style=hover_style)
m
Out[7]:
Make this Notebook Trusted to load map: File -> Trust Notebook
Add a shapefile to the map.
In [8]:
Copied!
m = leafmap.Map(center=[0, 0], zoom=2)
in_shp = '../data/countries.shp'
m.add_shp(in_shp, layer_name="Countries")
m
m = leafmap.Map(center=[0, 0], zoom=2)
in_shp = '../data/countries.shp'
m.add_shp(in_shp, layer_name="Countries")
m
Out[8]:
Make this Notebook Trusted to load map: File -> Trust Notebook
Add a KML to the map.
In [9]:
Copied!
m = leafmap.Map()
in_kml = '../data/us-states.kml'
m.add_kml(in_kml, layer_name="US States KML")
m
m = leafmap.Map()
in_kml = '../data/us-states.kml'
m.add_kml(in_kml, layer_name="US States KML")
m
Out[9]:
Make this Notebook Trusted to load map: File -> Trust Notebook
The add_vector
function supports any vector data format supported by GeoPandas.
In [10]:
Copied!
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
m.add_vector(
url, layer_name="Countries", fill_colors=['red', 'yellow', 'green', 'orange']
)
m
m = leafmap.Map(center=[0, 0], zoom=2)
url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/countries.geojson"
m.add_vector(
url, layer_name="Countries", fill_colors=['red', 'yellow', 'green', 'orange']
)
m
Out[10]:
Make this Notebook Trusted to load map: File -> Trust Notebook
In [11]:
Copied!
m = leafmap.Map()
m = leafmap.Map()
In [12]:
Copied!
in_shp = '../data/countries.shp'
in_geojson = '../data/us-states.json'
in_kml = '../data/us-states.kml'
in_shp = '../data/countries.shp'
in_geojson = '../data/us-states.json'
in_kml = '../data/us-states.kml'
In [13]:
Copied!
m.add_shp(in_shp, layer_name="Shapefile")
m.add_shp(in_shp, layer_name="Shapefile")
In [14]:
Copied!
m.add_geojson(in_geojson, layer_name="GeoJSON")
m.add_geojson(in_geojson, layer_name="GeoJSON")
In [15]:
Copied!
m.add_kml(in_kml, layer_name="KML")
m.add_kml(in_kml, layer_name="KML")
In [16]:
Copied!
m
m
Out[16]:
Make this Notebook Trusted to load map: File -> Trust Notebook
Last update:
2022-03-14