From 97b2104e5b0bbeacaa2cf395ada4bde62273d7a7 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 25 Oct 2024 17:17:20 +0200 Subject: [PATCH 1/2] first draft of documentation for JupyterGIS based on JupyterCAD documentation --- docs/environment.yml | 3 ++ docs/source/assets/lab_ext.webp | Bin 0 -> 70056 bytes docs/source/collab.rst | 8 +++++ docs/source/conf.py | 4 +-- docs/source/contributing.rst | 54 ++++++++++++++++++++++++++++++++ docs/source/extension.rst | 15 +++++++++ docs/source/index.rst | 32 +++++++++++++++++++ docs/source/install.rst | 17 ++++++++++ docs/source/python_api.rst | 44 ++++++++++++++++++++++++++ 9 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 docs/source/assets/lab_ext.webp create mode 100644 docs/source/collab.rst create mode 100644 docs/source/contributing.rst create mode 100644 docs/source/extension.rst create mode 100755 docs/source/install.rst create mode 100644 docs/source/python_api.rst diff --git a/docs/environment.yml b/docs/environment.yml index 76352b59..17491a1c 100644 --- a/docs/environment.yml +++ b/docs/environment.yml @@ -2,7 +2,10 @@ name: jupytergis channels: - conda-forge dependencies: + - python=3.12 - pip - sphinx - pydata-sphinx-theme - sphinx-autodoc-typehints + - pip: + - jupytergis diff --git a/docs/source/assets/lab_ext.webp b/docs/source/assets/lab_ext.webp new file mode 100644 index 0000000000000000000000000000000000000000..47d79d9f674c63afd5c1107523df423ac29cea8a GIT binary patch literal 70056 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

BJO1Rmk^f&+6CWuYQrh2ON-bHOLF5 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 literal 0 HcmV?d00001 diff --git a/docs/source/collab.rst b/docs/source/collab.rst new file mode 100644 index 00000000..0840e4f2 --- /dev/null +++ b/docs/source/collab.rst @@ -0,0 +1,8 @@ +.. _collab: + +====================== +Collaborative Features +====================== + +One of the standout features of JupyterGIS is its shared editing functionality, which **seamlessly connects users across different interfaces within the JupyterGIS ecosystem**. Whether collaborators are using the JupyterLab GIS extension, or working with the Python API in a Notebook, **any changes made to a shared document are instantly reflected for all users**. + diff --git a/docs/source/conf.py b/docs/source/conf.py index e4eeb194..d4412678 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -15,7 +15,7 @@ source_suffix = ".rst" master_doc = "index" project = "JupyterGIS" -copyright = "2023, The JupyterGIS Development Team" +copyright = "2024, The JupyterGIS Development Team" author = "The JupyterGIS Development Team" language = "en" @@ -25,4 +25,4 @@ todo_include_todos = False htmlhelp_basename = "jupytergisdoc" -intersphinx_mapping = {"https://docs.python.org": None} +intersphinx_mapping = {"python": ("https://docs.python.org/3", None)} diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst new file mode 100644 index 00000000..622c4489 --- /dev/null +++ b/docs/source/contributing.rst @@ -0,0 +1,54 @@ +.. _contributing: + +============ +Contributing +============ + +Development install +------------------- + +**Note:** You will need :ref:`Node.js ` and :ref:`Docker ` to build the extension package. + +The ``jlpm`` command is JupyterLab's pinned version of +:ref:`yarn ` that is installed with JupyterLab. You may use +:ref:`yarn ` or :ref:`npm ` in lieu of ``jlpm`` below. + +.. code-block:: bash + + # Clone the repo to your local environment + git clone https://github.com/geojupyter/jupytergis.git + # Change directory to the jupytergis directory + cd jupytergis + # Install JupyterLab for jlpm + pip install jupyterlab + # Install package in development mode + python scripts/dev-install.py + # Rebuild extension Typescript source after making changes + jlpm run build + +You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension. + +.. code-block:: bash + + # Watch the source directory in one terminal, automatically rebuilding when needed + jlpm run watch + # Run JupyterLab in another terminal + jupyter lab + +With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt). + +By default, the ``jlpm run build`` command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command: + +.. code-block:: bash + + jupyter lab build --minimize=False + + +Development uninstall +---------------------- + +.. code-block:: bash + + pip uninstall jupytergis + +In development mode, you will also need to remove the symlink created by ``jupyter labextension develop`` command. To find its location, you can run ``jupyter labextension list`` to figure out where the ``labextensions`` folder is located. Then you can remove the symlink named ``jupytergis`` within that folder. diff --git a/docs/source/extension.rst b/docs/source/extension.rst new file mode 100644 index 00000000..4d61fe76 --- /dev/null +++ b/docs/source/extension.rst @@ -0,0 +1,15 @@ +.. _extension: + +==================== +JupyterLab Extension +==================== + +JupyterGIS comes with a JupyterLab extension that embeds QGIS features directly into the JupyterLab UI. +This extension allows you to: + +* Open ``.qgz`` and ``.jGIS``` files in JupyterLab +* Create new ``.jGIS`` files +* Edit those files by adding new vector or raster layers, modifying geometries, and performing spatial operations. + +.. image:: assets/lab_ext.webp + :alt: JupyterGIS JupyterLab extension diff --git a/docs/source/index.rst b/docs/source/index.rst index 4cea6efb..3c659c68 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,3 +1,35 @@ ========== JupyterGIS ========== + +JupyterGIS is a JupyterLab extension for collaborative GIS (Geographical Information System). It is designed to +allow multiple people to work on the same geospatial project simultaneously, facilitating discussion and collaboration +around map layers, spatial analyses, and other GIS data being developed. + +JupyterGIS provides basic support for `QGIS `_ project files, allowing users to import and export +projects seamlessly between QGIS and JupyterLab. +This compatibility preserves layer styles, data sources, and project settings, enabling smooth transitions between GIS work +in QGIS and collaborative, cloud-based work in JupyterLab. + +Beyond QGIS project support, JupyterGIS offers a range of features tailored specifically for collaborative geospatial analysis. +Users can edit, visualize, and analyze spatial data together in real-time, share map layers, and annotate directly within the +JupyterLab environment, fostering efficient teamwork on GIS projects. + +Python users can further extend JupyterGIS workflows by integrating with Python geospatial libraries, such as GeoPandas, Xarray +and Rasterio, to perform custom analyses and automate processes. Together, these features make JupyterGIS a powerful tool for +both collaborative mapping and in-depth geospatial analysis. + +.. image:: ../../jupytergis.png + :alt: JupyterGIS application + +Table of contents +================= + +.. toctree:: + :maxdepth: 2 + + install + extension + python_api + collab.rst + contributing.rst diff --git a/docs/source/install.rst b/docs/source/install.rst new file mode 100755 index 00000000..f1bbbc5f --- /dev/null +++ b/docs/source/install.rst @@ -0,0 +1,17 @@ +.. _install: + +===================== +Installing JupyterGIS +===================== + +JupyterGIS can be installed with ``pip`` + +.. code-block:: bash + + pip install jupytergis + +It is best if you also install ``qgis``, this will allow you to open ``.qgz`` files. It can be installed using ``mamba`` or ``conda`` + +.. code-block:: bash + + mamba install -c conda-forge qgis diff --git a/docs/source/python_api.rst b/docs/source/python_api.rst new file mode 100644 index 00000000..b3ceae9f --- /dev/null +++ b/docs/source/python_api.rst @@ -0,0 +1,44 @@ +.. _python_api: + +========== +Python API +========== + +Basic Usage +=========== + +JupyterGIS provides a Python API that can be used for opening QGIS projects, +add raster or vector layers and apply filtering. + +You can open an existing QGIS project and **display it in your Jupyter Notebook**: + +.. code-block:: Python + + from jupytergis import GISDocument + + doc = GISDocument('file.qgz') + + doc + +**Opening an existing file connects you to the file’s collaborative session**, +meaning that anyone working on the same QGIS project file, whether through the +JupyterLab extension or the Python API, will see the edits you make. + +Creating a ``GISDocument`` object without providing a path to an existing file would create a +new empty document: + +.. code-block:: Python + + from jupytergis import GISDocument + + doc = GISDocument() + + doc + +Once the document is opened/created, you can start creating GIS layers. + +``GISDocument`` API Reference +============================= + +.. autoclass:: jupytergis.GISDocument + :members: From dc2169ef0c093e2344d8566dcae484f2ca8d0913 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Mon, 4 Nov 2024 22:22:36 +0100 Subject: [PATCH 2/2] Update docs/source/contributing.rst Co-authored-by: martinRenou --- docs/source/contributing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst index 622c4489..f71180ed 100644 --- a/docs/source/contributing.rst +++ b/docs/source/contributing.rst @@ -7,7 +7,7 @@ Contributing Development install ------------------- -**Note:** You will need :ref:`Node.js ` and :ref:`Docker ` to build the extension package. +**Note:** You will need :ref:`Node.js ` to build the extension package. The ``jlpm`` command is JupyterLab's pinned version of :ref:`yarn ` that is installed with JupyterLab. You may use