Live » History » Version 4
« Previous -
Version 4/12
(diff) -
Next » -
Current version
Philippe May, 06/05/2019 17:16
Live¶
While the primary intention is use a database for all layers, Gisaf has the capability to display layers directly from GeoPandas GeodataFrames.
In this case, they can also be updated dynamically, adding animation capabilities to the maps.
This can be used for, eg:
- displaying text (eg. temperatures, well levels)
- moving elements
- results of computations and analysis...
Using live directly from a Python script on the Gisaf server¶
Eg:
#!/usr/bin/env python
from asyncio import run
import geopandas as gpd
from shapely.geometry import Point
from gisaf.live import live_server
async def run(gs):
gdf = gpd.GeoDataFrame(
data={
'geometry': [
Point(12.01, 79.81)
]
},
crs='epsg:4326'
)
await live_server.publish_gdf('FooLayer', gdf)
async def main():
await live_server.create_connections()
await run(gs)
if __name__ == '__main__':
run(main())
Explanations:
1. Initialize the connection with live_server.create_connections()
.
2. Publish a geo dataframe with live_server.publish_gdf('name of the layer', gdf)
From Jupyter notebooks¶
Quite similarly to the case above, jupyter notebooks (running on a different machine) can be used to publish and control live layers. See the examples in Templates/gisaf_live_templates
.
Architecture¶
Gisaf live layers use a redis data store for:
1. Storage of the live layers
2. Publish/subscribe for live updates.
The live updates are sent through a websocket, initiated by the clients (web browsers).
Moreover, Gisaf exposes an HTTP API for external control of the live layers, eg. by Jupyter notebooks running on another server.
!Live arch.png!