So, today I am here to talk about interactive and collaborative client-side GIS and Jupyter
Lab.
So, I will discuss the problem statement first and what we are trying to solve and then
walk through the architecture and some concrete workflows.
So, let us first discuss about the current model.
So, many geospital workflows still assume desktop first local single use single user environment.
So, these two tools are most prominent tools in the ecosystem right now and both of these
tools are so powerful and so efficient for use for single user to use.
But with the power they come with a cost as well.
GIS lives in a local machine.
Users need to handle installation dependencies and configuration themselves manually.
And this adds a lot of friction while sharing workflows and reproducing the same.
And while teaching new users.
These tools are driven through the rich desktop interfaces.
These rich desktop interfaces are very powerful and very efficient.
But they are quite overwhelming when you are a beginner and a new user getting started
with these tools.
You can see that there are a couple of tool bars and some nice have to populate it panels.
And collaboration still relies on sharing files manually which creates a lot of friction
because files are still shared by emails, get out drives and they are difficult to iterate
when multiple users are working on them and when you are working on something that requires
multiple people to work on it.
It creates a lot of friction and back-and-forth.
And consider I am working on an environment where my computation environment and my visualization
environment are separate.
So, then I need to do a lot of back-and-forth to between my visualization tool and my computation tool.
Such as when I am using geo pandas in a python environment and I am using this.
I am using QGS to visualize the same.
This separation slows down the workflows and makes reproducibility very hard.
So, here comes Jupiter into the picture.
Jupiter already changed how we work with data.
And as we know, notebooks are very reproducible and computational documents.
All your code, data outputs and narrative all is in one place.
So, you can share your story with a single notebook with a single document.
Notebooks are very easily shareable and reproducible from one user to another.
And they run on your desktop or on your browser as well as per your liking.
It creates a seamless environment where the computation and its story lives together, making
analyzes and analysis easier and to reproduce and analysis easier to reproduce and understand.
Notebooks are not only reproducible.
They are also collaborative thanks to Jupiter collaboration.
Jupiter collaboration enables live multi-user editing and the real-time collaboration
inside your notebook and it files format called .JGIS.
It is a JSON based representation of the entire GIS state that we represent on the map.
It is a fully contained file structure that contains your layers, your symbology, your collaborative
metadata and your user config.
Layers are live, editable objects and symbology updates instantly because it is collaborative
and analysis can run directly inside the notebook.
So, let us understand a bit how Jupiter GIS works and let me give you a brief overview of the
architecture that we have on Jupiter GIS.
So, we merely divide Jupiter GIS into three components, first of which is rendering.
So, for rendering we use open layers that enables us to dynamically render vector and
raster data and also to dynamically style style it.
And for the second, secondly we have analysis component for the analysis path we use
gdile compiled to web assembly.
It also enables us to do a lot of things inside the browser itself and some of the examples
are that we can do processing right inside the browser such as buffer, dissolve, rasterization
etc.
And third and the most important component is obviously collaboration.
We use YJC addities to enable live multi-user editing without conflicts and live
synchronization between multiple user sitting different parts of the world.
And in all of this that dot gdice file works as a single source of truth for the entire
GIS state that you are working in.
So, now that we know how Jupiter GIS works lets dive a little bit into the demo and see
how it works and what other things that we can do with Jupiter GIS.
So, when you would open Jupiter GIS in your just give me a second.
So, when you would open Jupiter GIS you would see a window like this and here is your
Saturn to create a GIS project by clicking on which your GIS project will create and you
would see a nice UI with a single toolbar that is not too overwhelming with some like you
can see that these panels are not those populated like not that populated as I shown previously.
So, in this toolbar we have some buttons I will later explain in the demo what we can do
with these buttons.
But, for now we can look into the layer browser with the help of layer browser you have
many example base maps that you can add to your map.
I will just add open sheet map and see how it looks.
Next we have so, Jupiter GIS comes with vector and like vector and raster data support.
You can directly load your vector and raster data either it is either it is saved locally
or it is served on cloud.
Next so, I want to show sphere.
So, in this visualization so, this is live demo working inside the presentation only.
It is I frame I frame so, these blue dots are vector data representing some vector data
and this green layer you see is the raster data that I can toggle it on and off I can just
see the vector data if I want I can zoom in and same I can do with the raster data as well.
So, next we have so, we also support because we use open layers.
We also support advanced symbology with vector data.
So, I would like to show you how it works.
So, I would select this layer and right click on it and you see this option to add it
symbology I would select this and I would select a symbology style based upon my like
I would select graduated.
The value for which I want to classify my symbology would be magnitude of earthquake
and I would select a nice color them based upon my liking may be select cool
and I would classify it would automatically classify your data based upon the ranges of
magnitude like for instance this is magnitude and I would apply this symbology and you
can see my layer has been updated with the nice symbology.
Exactly similar to vector data you can also style raster data as well.
You can do single bands symbology and multi band rendering or two raster data.
So, similarly I would select my layer and I would do the same to add it symbology it
would open up our dialog box.
This time the options are a little different because obviously it is raster data raster
data.
So, I would let it be single band symbology and I would select a color ramp maybe you
use bring this time I would apply it it takes a little bit time because it is cloud
optimized you to but yeah you can see that the symbology has been updated.
So, now I want to show you like that we can do dynamic layer management and you like in
jupiter GIS just similar to QGIS you can reorder layers like by dragging them up and down
I just did and as I shown you you can toggle a layer on and off like this you can
if I just want to see one layer I can do that I can even remove a layer like this I can even
rename a layer and if I and there are several options that I can do I can zoom to a layer
and yeah so this is like this is like we are layer browser is also like the layer panel
is also inspired by QGIS similar to QGIS we can do a lot of things with this.
So, we also have identify panel you can select and click on features to which you want
to see properties and attributes of so I would show you how it works so I would select
the layer again and I would enable the identify panel and then I would select some attributes
over here it would show me which attributes I have selected it would give me a list of all
attributes that are selected I have this nice search button which I can use to highlight the
attribute which I want to which I want to focus on I can do the same for others it also goes
with a nice zoom animation and I can see I can do it with all the type of vector data
I can do it with a polygon I can do it with a line and I can do it with a point as well
so I would select some polygons over here so it gives me all the list of all the selected
polygons and we also have a search button over here so I can use it to highlight my
attribute that I am looking at I can study and see all the things that this feature
have next I have next we have time slider so this is some fancy stuff that that is also
that Jupiter GIS is also enabling so we can visualize data with respect to time so I
would take this for example I would enable time slider and then we have this nice menu
over here which has this slider I can move this slider to see how my data changes over time
so I would I can maybe also change the time interval that we are rendering the data
for instead of week I would select day then I can see how it changes over time
and if you and if you do not want to move this slider we have this nice play and pause
button you can use this as well to automatically see how your data transforms over time
I would may pause it and next so people who are already familiar with Q GIS and who are already using Q GIS
and do not want to like directly jump into Jupiter GIS we also have Q GIS compatibility so you can
export dot GIS file to Q GIS format and you can even import Q GIS format to Jupiter GIS directly
although we do not claim that we support everything that Q GIS have but we are still in process to
support all the all the things that Q GIS provides but yeah it works nicely with it works nicely with
exporting styles and all the properties that your map have so next we have annotation and
collaboration like I have already talked a lot about collaboration and already emphasized a lot
now you can see how it works so you consider that there are two different users working on this project file
the one on the left and one on the right because there there are these are two different browsers so
if I change the map on the left you can already see that it automatically changes in the right as well
and I can also like talk on the map I can annotate I can make comment I can reply to those comments and I can see what's going on
this makes like obviously this makes collaborative work flows much smoother than file based
shading so we also have Python API for Jupiter GIS that lets you interact with your GIS document
programmatically you can use it to create layers and perform operations right inside your notebook
Python API works same as same as a collaborative working on your file so it is also like real time collaborative
and everything that you do with Python API as well they this show up on the map to you and to the other user that
is working with you on the same file.
We also have client site processing so I in between of the presentation I talked about that we use
to perform operations inside the browser so everything that I will show you here would be
happening inside the browser I am not using any server so I will select a layer and we have this processing option
in which we have some option that what we can do with our data so this is the earthquake data that you are seeing
so maybe I will perform buffer to see what is the risk risk area of these earthquakes
I will give it 10 units that lets consider that everything in the radius of 10 is in the risk of these earthquakes
so I will just give it another name at quicks buffered and I would yeah so you can see that
our new layer has been created which is a polygon layer it uses earthquakes as a base to calculate
what is the risk area of all these earthquakes and you can do a lot more with the processing options
processing menu that we have and we are still extending that menu with time.
So we also have stack browser so Jupyter GIS stack browser lets you connect to your stack catalogs
and load satellite imagery right inside your notebook or geospatial data directly into
Jupyter GIS you can use it to load any satellite imagery that is available in your stack
API just like this.
And we also have a detailed integration so a detailed it is a nice tool a detailed
let's you serve and explore like big vector and asset data sets dynamically using Python plus
T Tyler this lets you explore large data sets interactively although this requires a server
that's why we cannot yet do it in Jupyter light because it requires a kernel component but yes
if you want to explore large data sets with Jupyter GIS, T Tyler is the answer for you
So there are some in progress things that we are working on one of these is story maps
so with the help of Jupyter GIS story maps you can tell I story with your map
you can like you can present your map like just like a presentation.
So story maps are approach to turn GIS into narratives and text combines with interactive
stories live live nice text for teaching communication or decision making.
This is like this looks good it is still in progress but yeah it is close to being
completion so in next release maybe you would be able to use it.
Next we are also exploring integrating the power of LLMs and agents within Jupyter GIS
we are exploring natural language interaction with GIS so that if you are like if you are a very
beginner if you do not want to know like if you do not want to learn GIS concepts if you just
want to do something with GIS you can just interact with Jupyter GIS in natural language
and ask questions manipulate data or analyze maps by simply typing instructions in your
natural language and yeah obviously no prior GIS knowledge required.
So yeah that was mostly about the demo yeah maybe you would want to see.
In the left I am interacting with an LLM I am telling it to add a new layer although
I because I am using an old Gemini model so that is why I need to confirm it every
time so it adds layer automatically and then I would tell it to create a buffer of the same
like the same I showed you with processing manually this time it would be happening automatically
in the LLM.
Yeah I need to confirm it every time because it is acting.
So again I again give it 10 units and yeah this is what that results look like.
It is exactly same to what I showed you manually but you have this time with an LLM.
So this was all about the demo but all the live demos that you saw today were entirely
made within the browser and with the help of Jupyter light.
So it can be it works within fully Jupyter light setup and it can be embedded in your
frames.
No installation required python runs in the client as well because we use use python kernel
and G dial is compiled to web assembly so still we do not require as a component there.
And even the full Jupyter environment works inside your browser this makes it like very easy
for anyone to try or share Jupyter GIS instantly.
So next if you want to like try out Jupyter GIS right now this is the easiest way that I can
think of.
So for anyone who wants to try it notebook link make it image it.
You can open Jupyter GIS repository in your browser and just prefix the link with notebook
dot link and you have the full environment ready.
So no set up no installs just start exploring GIS in your browser.
So I would just prefix the URL and I would accept the terms and it would open Jupyter GIS
inside my browser.
And I can do everything that I show you.
So now that you have seen that what Jupyter GIS can do next we can discuss what you can do
with Jupyter GIS there there is a lot that you can do with Jupyter GIS obviously but
there are some main ways which people can use Jupyter GIS for obviously for environment
and environmental analysis you can combine climate land use and biodiversity mapping data
to do environmental analysis and secondly we have earth observation we already have
stack browsers you can load satellite clusters and you can do times time forecasting like
you can visualize time forecasting data as well.
So yeah it helps you to do earth observation as well.
And thirdly let's you do urban planning as well because you can load infrastructure data
and what not and obviously for teaching and workshop because the installation and
like the reproducibility of this tool is very easy.
It makes teaching and workshops really easy then compared to these traditional tools
which require big installations and hefty setups.
And next we have reproducibility search obviously I have emphasized on it a lot that it is
really easy to reproduce and again collaborative mapping you can collaborate
with a lot of people multiple people at the same time and you can communicate what
you are seeing right in real time.
So what next for Jupyter GIS?
So looking at there is a lot that we want to do with Jupyter GIS one of which is
suggestion support.
So suggestion suggestion support lets you do a split view comparison when you collaborate
in real time.
It lets you create a precise suggestion to the other user that you are working with
that makes the chance of confusion very minute very little.
So it is something that already works in the sister project of Jupyter GIS which is
Jupyter CAD it is the same like it uses the same infrastructure the same backend
but for instead of GIS for CAD for 3D modeling and all.
So we want to also make it work in Jupyter GIS as well.
We would also like to do more cloud optimization support.
So we would also want to extend our five support to Geoparkage Euro so that we can load
big data very seamlessly in Jupyter GIS and we are also working on vector layer editing
and creation so that you can create new vector layers in real time and they are also
collaborative and you can edit the existing vector layers.
And next we have advanced table viewer just like the attribute table in QRIS you would also
like to have some we are working on this as well.
We would also like to have some advanced table viewer for Jupyter GIS with which you
can do analysis you can export data and all.
So here I would like to acknowledge the support that Jupyter GIS has gained over time.
So yes funded the initial development of Jupyter GIS under permanent open call with
for EU innovation and stack and XRA extension had been funded by Venice.
It Jupyter GIS has been built by Constack in collaboration with similar research lab with
major contributors from UC Berkeley DSE and over 30 open source contributors from all around the world.
So if you want to get involved we welcome contributions of all kinds you can contribute code,
bug fixes or develop plugins you can help with documentation tutorials or example
notebooks and your feedback is very crucial for us.
It lets us prioritize things and this is how the community keeps growing and if you want
to join Jupyter GIS community check out geojupyter.org we have bi-weekly we organize bi-weekly
hackathons and we also have a geolip channel which you can join and interact with us.
And thank you so much.
These are QR codes that you can scan for the live deployment of Jupyter CAD and Jupyter GIS.
And the questions.
No problem if there's no questions.
Thanks, that looks very fantastic.
Maybe you can comment like why did you choose open layers as the map?
So it has been like it has been quite directos that we have discussed a lot about this.
We in past we have been using map library although we wanted to enable advanced styling
for vector layers and oscillators.
That's when we realized that we have hit a ceiling over there.
But we are also exploring that we are not just settling to open layers.
We are still exploring to have custom like you can plug in any viewport and customizable viewport
you can use any other viewport we are exploring that feature as well.
And maybe in future we would also like to support 3D rendering for our maps.
So we would also like to extend the view like to explore that direction as well.
I saw in your one of your timers that with a real time element.
Does that require some sort of backhand of some point?
Yes.
So Jupyter collaboration yet does not work in Jupyter light because it requires us
I have a component it requires some sockets and stuff.
But there has been work going on in order to support collaboration inside Jupyter light
in our team.
Obviously we cannot do that yet but maybe in the near future we would be able to collaborate
without a server component as well.
Okay, great.
Thank you.