Skip to content

Latest commit

 

History

History
540 lines (459 loc) · 19.1 KB

File metadata and controls

540 lines (459 loc) · 19.1 KB

Collaborative & Reproducible

JCAD CAD & JGIS GIS in Jupyter Jupyter JupyterLite

Arjun Verma


QuantStack Logo
  • Founded in 2016 in Paris
  • Principal contributor to Jupyter, Apache Arrow, Mamba/Conda
  • Multi-stakeholder projects with millions of users
  • Open source development for clients
  • Other topics: C++, scientific computing, WebAssembly, interactive applications
  • Organizer of the Pydata Paris event
QuantStack Team

Empowering scientists and developers worldwide with cutting-edge tools


About My Mentor

Martin Renou — Technical Director at QuantStack

Martin Renou is also a maintainer of Project Jupyter. He is a core contributor to the ipywidgets ecosystem and maintains several widget libraries including ipyleaflet, ipydatagrid, ipygany, ipycanvas, and bqplot. He co-created the Voilà dashboarding system and is the main author of the xeus-python kernel.


The Current Problem

  • Tools like FreeCAD, QGIS, and ArcGIS:
    • Are powerful, but have steep learning curves
    • Require complex setups and system dependencies
    • Are difficult to integrate into modern, code-first workflows
Astronaut pushing rock

Team Challenges

  • Workflows trapped in proprietary formats or desktop silos
  • Limited ability to track changes, collaborate, or reproduce results
  • A disconnect between data science and spatial modeling

What We Need

  • Seamless integration with computational notebooks
  • Tools that work anywhere, without installs
  • Open, interoperable environments built for modern research

Why Jupyter?

  • Scientific computing is increasingly moving to the browser
  • CAD and GIS tools are still mostly tied to heavy desktop applications
  • Jupyter has become the central hub for reproducible research
Astronaut with a surprise

Jupyter Strengths

  • Combines code, visualizations, and documentation in one place
  • Supports interactive computing — essential for spatial data exploration
  • Built-in collaboration via notebooks, Git, and cloud platforms
  • Integrates with Python, C++, Julia, R, and WebAssembly
  • Transparent execution history and outputs enable auditability

JupyterCAD JupyterCAD

About JupyterCAD

  • Browser-native 3D modeling for JupyterLab
  • Built on OpenCascade (via WebAssembly)
  • Parametric, sketch-driven design
  • Integrates with Python code cells

Sketch-based Modeling

Draw 2D sketches and turn them into 3D shapes

Boolean Operations

Cut, union, and intersect shapes with precision

Geometric Operations

Chamfer and fillet edges using UI or Python

Multiple Visualization Modes

Explore models with Exploded View, Clip Plane, and Wireframe

🎛️ Transform controls with snapping

Precise geometric manipulation in the browser

🧮 Python API for programmatic geometry

Write Python code to generate & modify shapes

📓 Notebook integration

CAD alongside your code & documentation

🤝 Collaborative editing

CRDT-based real-time co-editing via Y.js & PyCRDT

💬 Suggestions Support

Collaborators can propose changes without modifying the actual model.

Editors receive these as suggestions and can choose to accept or reject them.

Enables asynchronous review cycles, just like pull requests in code!

📁 File Format Support

  • FCStd — Read, edit, and export FreeCAD project files natively
  • STL — Import mesh models for quick inspection or editing
  • STEP — Bring in precise solid geometry from external CAD tools

Move between tools without friction — with support for common CAD formats.

<iframe src="https://jupytercad.github.io/JupyterCAD/lab/index.html" style=" border: none; width: 100vw; height: 90vh; zoom: 0.75; transform: scale(1); transform-origin: top left; " ></iframe>

JupyterGIS JupyterGIS

About JupyterGIS

  • A full-featured GIS toolkit inside JupyterLab
  • Supports raster and vector layers
  • Built with OpenLayers + GDAL (WebAssembly)

🗺️ Vector & Raster Data Support

Load local and cloud-hosted data into your notebook session

🖍️ Vector Symbology

Visualize vector data using graduated and categorized rendering styles

🖍️ Raster Symbology

Use multiband rendering to style raster datasets like satellite imagery

🔄 Dynamic Layer Management

Add, remove, and style layers with a built-in interactive UI

🔍 Identify Panel

Click on features in the map to instantly inspect their attributes.

⏳ Time Slider

Visualize how data changes over time with an interactive slider.

🧩 QGIS Compatibility

Import and export QGIS files, layers, and styles seamlessly.

📝 Annotation & Collaboration

Add notes, draw shapes, and collaborate in real-time.

📓 Notebook + Python Integration

Use Python code cells to add, style, and transform spatial layers

🧪 Client-Side Processing

Perform buffer, dissolve, centroid and overlays with GDAL-WASM — no server required

<iframe src="https://jupytergis.readthedocs.io/en/latest/lite/lab/" style=" border: none; width: 100vw; height: 80vh; zoom: 0.75; transform: scale(1); transform-origin: top left; " ></iframe>

Web Tech Under the Hood

  • WebAssembly (WASM)
  • PyCRDT + Y.js
  • IndexedDB
  • Jupyter extensions

Not just JupyterLab

  • Works in full JupyterLab/JupyterLite setups
  • WASM enables install-free use
  • Can integrate with:
    • JupyterHub
    • Voila
    • JupyterLite

astronaut


Who is this for?

  • 🧑‍🔬 Research teams working with spatial or geometric data
  • 🛠️ Engineers & designers building parametric CAD models
  • 🏗️ Educators teaching 3D modeling or spatial analysis
  • 🏙️ Urban planners and architects
  • 🌿 Environmental scientists

astronaut rocket


Try Live

JupyterCAD QR
JupyterGIS QR

Thank You

Questions?