ipyleaflet#
[1]:
from __future__ import print_function
from ipyleaflet import *
[2]:
m = Map(center=(48, 8), zoom=8, basemap=basemaps.Hydda.Full)
m
[3]:
strata_all = basemap_to_tiles(basemaps.Strava.All)
m.add_layer(strata_all)
[4]:
from ipywidgets import Label
label = Label()
display(label)
def handle_interaction(**kwargs):
if kwargs.get('type') == 'mousemove':
label.value = str(kwargs.get('coordinates'))
m.on_interaction(handle_interaction)
[5]:
strata_water = basemap_to_tiles(basemaps.Strava.Water)
m.substitute_layer(strata_all, strata_water)
[6]:
import json
from geojson import GeoJSON
with open('./europe_110.geo.json') as f:
data = json.load(f)
for feature in data['features']:
feature['properties']['style'] = {
'color': 'grey',
'weight': 1,
'fillColor': 'grey',
'fillOpacity': 0.5
}
geo = GeoJSON(data=data, hover_style={'fillColor': 'red'}, name='Countries')
m.add_layer(geo)
[7]:
m.add_control(LayersControl())
[8]:
import ipywidgets
ipywidgets.HBox([m, Map(center=[48.0, 7.9], zoom=10)])
WMS-Layer#
Mit ipyleaflet lassen sich auch eigene WMS-Layer definiern. Üblicherweise werden Optionen wie layers
, format
und transparent
in der Request-URL übergeben. Wenn ihr zusätzliche Parameter benötigt, könnt ihr diese jedoch auch in eigenen WMSLayer-Klassen definieren. Im folgenden wird beispielsweise ein Zeitparameter hinzugefügt, indem ein benutzerdefinierter TimeWMSLayer
definiert wird.
Beispiel für einen eigenen WMS-Layer#
[9]:
from ipyleaflet import Map, WMSLayer, basemaps
from traitlets import Unicode
class TimeWMSLayer(WMSLayer):
time = Unicode('').tag(sync=True, o=True)
time_wms = TimeWMSLayer(
url='https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?',
layers='nexrad-n0r-wmst',
time='2005-08-29T13:00:00Z',
format='image/png',
transparent=True,
attribution='Weather data © 2012 IEM Nexrad'
)
m = Map(basemap=basemaps.CartoDB.Positron, center=(30.661, -88.645), zoom=5)
m.add_layer(time_wms)
m
Da es sich um ein Widget handelt, könnt ihr den WMS-Parameter time_wms.time
auch einfachändern:
[10]:
time_wms.time = '2005-08-29T19:00'
Oder ihr könnt einen Slider mit passenden Zeitintervallen definieren:
[11]:
from ipywidgets import SelectionSlider
time_options = [
'13:00', '13:30',
'14:00', '14:30',
'15:00', '15:30',
'16:00', '16:30'
]
slider = SelectionSlider(description='Time:', options=time_options)
def update_wms(change):
time_wms.time = '2005-08-29T{}'.format(slider.value)
slider.observe(update_wms, 'value')
slider
WMS-Layer-Attribute#
Attribute |
Standardwert |
Kommentar |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kommagetrennte Liste der anzuzeigenden WMS-Ebenen |
|
|
Kommagetrennte Liste der WMS-Stile |
|
|
Für Ebenen mit Transparenz solltet ihr |
|
|
|
|
|
Version des zu verwendenden WMS-Dienstes |
|
|