Community insight: ๐ The QGIS bounce ๐บ
A common pattern: Bouncing between writing an analysis in a Notebook or scripting environment and validating work in QGIS
QGIS is a widely-loved, free, and open source graphical desktop environment for geospatial visualization and analysis. In contrast with the broad and deep ecosystem of programming-based geospatial tools, QGIS is simple to use and empowers practitioners to focus on their goals.
In GeoJupyterโs user interviews, geospatial data practitioners identified a pattern of bouncing between a scripting environment for analysis and a graphical environment for data validation.
We call this pattern ๐ The QGIS Bounce ๐บ.
This pattern of transferring data between environments was represented by users as a point of repeated friction. We think we can improve on this with a tightly integrated collaborative GIS environment in JupyterLab, JupyterGIS.
๐คท How do I do ๐ The QGIS Bounce ๐บ ?
There are many variations on this general workflow. One example we heard several times looked something like this:
- Open Jupyter Notebook in JupyterHub cloud computing environment for analysis
- Open QGIS on local machine for validation
- Set up QGIS project for validation:
- Create a new project
- Add a basemap
- Set projection
- Write some analysis code in the Jupyter Notebook
- ๐ Bounce ๐บ to QGIS for validation
- Write some code to save analysis output to disk in an interoperable geospatial file format
- Download the geospatial data file to the local machine
- Add the geospatial data file to QGIS as a new layer
- Use the Identify Tool and/or Attribute Table to validate the data
- ๐ Bounce ๐บ back to JupyterLab to repeat step 4-5 until analysis is complete
๐ฒ Thatโs a lot!
Yeah! ๐
Users expressed frustration with the number of repeated steps needed to complete a common and vital task: checking their work.
๐ค Why not โjustโ use <insert software package here>?
There are many distinct tasks involved in data validation. For example:
- Confirming that the data is correctly geolocated
- Spot-checking attributes of specific features based on their shape and location
- Spot-checking a value of raster grid cells corresponding with landmarks
Keeping up with programming-language-specific ecosystems of tools and features needed to accomplish these objectives is often not aligned with the goals of the practitioner. Using tools like QGIS helps researchers do research, helps educators educate, without unnecessary complexity getting in their way.
โจ Can we do better without leaving JupyterLab?
Weโre trying! ๐ช
We are currently building a workflow to reduce steps 2, 3, and 5 to one line of code (not including imports ๐). For example, to view an analysis output in a GeoDataFrame:
from jupytergis import show_in_jgis
show_in_jgis(my_geodataframe)
After writing this line of code, JupyterGIS would open in a new JupyterLab window with a basemap and the analysis output loaded as layers. JupyterGIS would then allow users to verify geolocation and validate feature attributes and grid cell values, all under one roof. After validating, users would have the option to save their JupyterGIS project for future reuse!
This is just an example. This is a work in progress and may look different when itโs done cooking.
๐ค What about collaboration?
Collaboration is critical to our vision for the future of geospatial data practice.
Because jupyter-collaboration
provides architecture for real-time collaboration out of the box, and because QuantStack designed JupyterGISโ architecture for the same, all of the workflow described above can be built to work collaboratively! Have you ever wanted a Google Docs-like collaborative experience when working on a geospatial project? Now you can!
โ I want to help!
Thatโs amazing, youโre the greatest!
The GeoJupyter community is committed to building free and open source software thatโs owned by its users. Thatโs you! ๐ซต You can participate by signing up for an interview to share your expertise, opening GitHub issues to request features or report problems, chatting with us in Zulip, working directly with other community members in a virtual hackathon, and/or submitting code changes as GitHub Pull Requests.
We are looking forward to seeing you! ๐