Skip to content

Commit 84dabc9

Browse files
committed
doc updates and improvements
1 parent 51d5c79 commit 84dabc9

File tree

9 files changed

+50
-77
lines changed

9 files changed

+50
-77
lines changed

site/contact.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,9 @@
3232
<td class="contact-type fas fa-phone"></td>
3333
<td class="contact-val"><a href="tel:+27828439679">+27 82 843 9679</a></td>
3434
</tr>
35+
<tr>
36+
<td class="contact-type fa-brands fa-github"></td>
37+
<td class="contact-val"><a href="https://github.com/leftfield-geospatial">GitHub</a></td>
38+
</tr>
3539
</table>
3640

site/index.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
You can adapt this file completely to your liking, but it should at least
44
contain the root `toctree` directive.
55
6+
.. include:: shared.txt
7+
68
.. toctree::
79
:maxdepth: 1
810
:hidden:
@@ -25,13 +27,13 @@
2527
:fas:`door-open` **Welcome**
2628
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2729

28-
Leftfield is a small research and software development company specialising in geospatial and earth observation applications, and offering assistance with:
30+
Leftfield is a small research and software development company specialising in geospatial and earth observation applications. Expert assistance can be provided with:
2931

3032
* Creating operational software.
3133
* Applied research and method design.
3234
* Documentation and publication.
3335

34-
Collaborative in nature, and aligned with scientific best practice, Leftfield supports the open source model. Through it's work, Leftfield aims to contribute toward a sane and vibrant living planet. Please get :doc:`in touch <contact>` if you would like to find out more.
36+
Collaborative in nature, Leftfield supports the open source model, and is the creator of the Orthority_, Homonim_ and Geedim_ projects. Through it's work, Leftfield aims to contribute toward a sane and vibrant living planet. Please get :doc:`in touch <contact>` if you would like to find out more.
3537

3638
.. grid:: 1 3 3 3
3739
:gutter: 2
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
Biome-wide aboveground carbon mapping in thicket
22
------------------------------------------------
33

4-
As an experiment in extending the :doc:`farm-scale aboveground carbon (AGC) model <thicket_agc>` with `Google Earth Engine (GEE) <https://earthengine.google.com>`_, the univariate WorldView-3 model developed in that study was re-calibrated to Landsat-8 imagery, and applied to the thicket biome. The resulting AGC map can be browsed via the `GEE app <https://dugalh.users.earthengine.app/view/thicket-aboveground-carbon>`_ (it might take a minute to load). Importantly, this should be regarded as a prototype - AGC estimates outside the :ref:`GEF-5 SLM study area <gef5_slm_study_area>` are unvalidated.
4+
As an experiment in extending the :doc:`farm-scale aboveground carbon (AGC) model <thicket_agc>` with `Google Earth Engine (GEE) <https://earthengine.google.com>`_, the univariate linear model developed in that study was re-calibrated to Landsat-8 imagery, and applied to the thicket biome. The resulting AGC map can be browsed with the `GEE app <https://dugalh.users.earthengine.app/view/thicket-aboveground-carbon>`_ (it might take a minute to load). The app code is available `here <https://github.com/leftfield-geospatial/extend-thicket-agc>`_. Note that this should be regarded as a prototype - AGC estimates outside the :ref:`GEF-5 SLM study area <gef5_slm_study_area>` are unvalidated.

site/portfolio/geedim.rst

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
Search, composite and download `GEE`_ imagery
2-
---------------------------------------------
1+
.. include:: ../shared.txt
32

4-
The |geedim|_ package was developed as a companion to |homonim|_ for sourcing cloud/shadow-free reference imagery. Beyond the |homonim|_ context, it is generally useful for searching, compositing and downloading GEE_ (Google Earth Engine) imagery. It works around the `Earth Engine size limit <https://developers.google.com/earth-engine/apidocs/ee-image-getdownloadurl>`_ by downloading images as separate tiles, then re-assembling into an image file on the client. Cloud/shadow masking, and cloud/shadow-free compositing are implemented for `selected Landsat and Sentinel-2 collections <https://geedim.readthedocs.io/en/latest/index.html#cloud-shadow-support>`_ using bundled quality data, as well as a method based on `cloud probability <https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_CLOUD_PROBABILITY>`_ data for Sentinel-2. |geedim|_ is distributed as a python package. The `command line interface (CLI) <https://geedim.readthedocs.io/en/latest/cli.html>`_ provides access to most of the functionality. See the `online documentation <https://geedim.readthedocs.io/en/latest/index.html>`_ for more detail on its use.
3+
Earth Engine search and download
4+
--------------------------------
55

6-
.. |geedim| replace:: ``geedim``
7-
.. _geedim: https://github.com/leftfield-geospatial/geedim
8-
.. |homonim| replace:: ``homonim``
9-
.. _homonim: https://github.com/leftfield-geospatial/homonim
10-
.. _GEE: https://earthengine.google.com
6+
Geedim_ was developed as a companion to :doc:`Homonim <homonim>` for acquiring cloud/shadow-free reference imagery. It is a command line toolkit and library that allows searching, compositing and downloading `Google Earth Engine <https://earthengine.google.com>`__ satellite imagery. Cloud/shadow masking and cloud/shadow-free compositing is supported on selected image collections. It is used for these functions outside of the Homonim context too. The `online documentation <https://geedim.readthedocs.io/en/latest/index.html>`_ gives more detail on its capabilities and use.

site/portfolio/homonim.rst

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,23 @@
1-
Correct imagery to surface reflectance
2-
--------------------------------------
1+
.. include:: ../shared.txt
32

4-
This method uses a fusion approach to correct imagery to approximate surface reflectance. It requires a concurrent and co-located reference reflectance image with which to fuse the source. Since the method's `initial conception <https://doi.org/10.1080/01431161.2018.1528404>`_ with my PhD supervisor, `Adriaan van Niekerk <https://scholar.google.co.za/citations?user=bUalpwUAAAAJ&hl=en>`_, it has evolved into the |homonim|_ package, and proved effective for a `range of imagery and problems <https://homonim.readthedocs.io/en/latest/case_studies.html>`_.
3+
Surface reflectance correction
4+
------------------------------
55

6-
.. figure:: ../_images/homonim-block_diagram.webp
7-
:align: right
8-
:class: dark-light
9-
:width: 520
10-
:alt: Block diagram
11-
12-
Spatially varying local linear models are used to approximate the relationship between source and reference images. Images and model parameters are resampled or re-projected between the source and reference image CRS's (coordinate reference systems) to allow model estimation and application (as shown in the diagram). Typically the reference has a lower resolution than the source image. Suitable sources of reference imagery are e.g. the `MODIS <https://developers.google.com/earth-engine/datasets/catalog/MODIS_061_MCD43A4>`_, `Landsat <https://developers.google.com/earth-engine/datasets/catalog/LANDSAT_LC08_C02_T1_L2>`_, or `Sentinel-2 <https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED>`_ satellites. The |geedim|_ companion tool was created for downloading these, and other satellite images.
13-
14-
|homonim|_ can help improve accuracy and stability of classification and regression applications, and is suited to the harmonisation of multi-sensor images. It is available as a `python package <https://homonim.readthedocs.io/en/latest/installation.html>`_. There are more details on its use and functioning in the `online documentation <https://homonim.readthedocs.io/en/latest/index.html>`_.
15-
16-
Example
17-
^^^^^^^
18-
19-
A mosaic of NGI_ aerial imagery before and after correction with |homonim|_.
6+
The Homonim_ command line tool and library implements a method for surface reflectance correction `initially conceived <https://doi.org/10.1080/01431161.2018.1528404>`__ with my `PhD supervisor <https://scholar.google.co.za/citations?user=bUalpwUAAAAJ&hl=en>`__.
7+
The method fuses source imagery with a concurrent reference reflectance image to approximate surface reflectance. It has been tested on a `range of imagery and applications <https://homonim.readthedocs.io/en/latest/case_studies.html>`_. You can read more about its use and functioning in the `online documentation <https://homonim.readthedocs.io/en/latest/index.html>`_.
208

219
.. figure:: ../_images/homonim-source_mosaic.webp
2210
:align: center
2311
:class: dark-light
2412
:width: 580
2513
:alt: Source mosaic
2614

15+
Aerial mosaic before correction.
16+
2717
.. figure:: ../_images/homonim-corrected_mosaic.webp
2818
:align: center
2919
:class: dark-light
3020
:width: 580
3121
:alt: Corrected mosaic
3222

33-
.. |geedim| replace:: ``geedim``
34-
.. _geedim: https://github.com/leftfield-geospatial/geedim
35-
.. |homonim| replace:: ``homonim``
36-
.. _homonim: https://github.com/leftfield-geospatial/homonim
37-
.. _NGI: https://ngi.dalrrd.gov.za/index.php/what-we-do/aerial-photography-and-imagery
38-
23+
Aerial mosaic after correction.

site/portfolio/index.rst

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,49 +18,49 @@
1818
:gutter: 2
1919

2020
.. grid-item-card::
21-
:link: homonim
21+
:link: simple_ortho
2222
:link-type: doc
2323

24-
**Correct imagery to surface reflectance**
25-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24+
**Orthorectification toolkit**
25+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2626

27-
.. image:: ../_images/homonim-thumbnail.webp
27+
.. image:: ../_images/simple_ortho-thumbnail.webp
2828
:align: center
29+
:width: 85 %
2930
:class: dark-light
30-
:width: 100 %
3131
:alt: Thumbnail
3232

33-
An end-user and research tool for harmonisation and surface reflectance correction of remotely sensed imagery.
33+
A command line toolkit and library for orthorectification.
3434

3535
.. grid-item-card::
36-
:link: geedim
36+
:link: homonim
3737
:link-type: doc
3838

39-
**Search, composite and download GEE imagery**
40-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39+
**Surface reflectance correction**
40+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4141

42-
.. image:: ../_images/geedim-thumbnail.webp
43-
:align: left
44-
:width: 45 %
42+
.. image:: ../_images/homonim-thumbnail.webp
43+
:align: center
4544
:class: dark-light
45+
:width: 100 %
4646
:alt: Thumbnail
4747

48-
A command line tool and python library for searching, compositing and downloading Google Earth Engine imagery. Supports cloud and shadow masking, and cloud/shadow-free compositing.
48+
A method and software package for surface reflectance correction.
4949

5050
.. grid-item-card::
51-
:link: simple_ortho
51+
:link: geedim
5252
:link-type: doc
5353

54-
**Orthorectification of aerial images**
55-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
54+
**Earth Engine search and download tool**
55+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5656

57-
.. image:: ../_images/simple_ortho-thumbnail.webp
58-
:align: center
59-
:width: 85 %
57+
.. image:: ../_images/geedim-thumbnail.webp
58+
:align: left
59+
:width: 45 %
6060
:class: dark-light
6161
:alt: Thumbnail
6262

63-
A command line tool and python library for orthorectification of aerial and other imagery.
63+
A command line tool and library for searching, compositing and downloading cloud/shadow-free satellite imagery from Google Earth Engine.
6464

6565
.. grid-item-card::
6666
:link: thicket_agc
@@ -75,7 +75,7 @@
7575
:width: 80 %
7676
:alt: Thumbnail
7777

78-
A machine learning method for mapping aboveground carbon in thicket, developed on data from a small site in the Baviaanskloof, South Africa.
78+
A machine learning method for mapping aboveground carbon in thicket, developed on data from the Baviaanskloof, South Africa.
7979

8080
.. grid-item-card::
8181
:link: biome_wide_thicket_agc

site/portfolio/simple_ortho.rst

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,14 @@
1-
Orthorectification of aerial images
2-
-----------------------------------
1+
.. include:: ../shared.txt
32

4-
|simple-ortho|_ `orthorectifies <https://trac.osgeo.org/ossim/wiki/orthorectification>`_ aerial, and other imagery with known `pinhole camera model <https://en.wikipedia.org/wiki/Pinhole_camera_model>`_, and DEM (digital elevation model). It works well with NGI_ aerial imagery, and together with |homonim|_ provides an open source processing chain for converting these valuable data into "science ready" surface reflectance imagery. Currently, |simple-ortho|_ is available as a python library and command line tool via `GitHub <https://github.com/leftfield-geospatial/simple-ortho>`_. It makes use of the `OpenCV <https://opencv.org/>`_ and `rasterio <https://github.com/rasterio/rasterio>`_ packages for efficient reading, processing and writing of images.
3+
Orthorectification
4+
------------------
55

6-
Example
7-
^^^^^^^
8-
9-
A mosaic of four NGI_ aerial images captured over the Kouga river in the Baviaanskloof, South Africa: in raw form (*Source*), orthorectified with |simple-ortho|_ (*Orthorectified*), and corrected to surface reflectance with |homonim|_ (*Corrected*).
6+
Orthority_ is a command line toolkit and library for `orthorectifying <https://trac.osgeo.org/ossim/wiki/orthorectification>`__ remotely sensed imagery. It was originally developed as a research tool for processing NGI_ aerial imagery. Since then it has been expanded to support a range of imagery and camera models, and to provide orthorectification related methods like pan-sharpening. Together with :doc:`Homonim <homonim>`, it provides an open source toolchain for converting remotely sensed images into "science ready" surface reflectance data.
107

118
.. figure:: ../_images/simple_ortho-example.webp
129
:align: center
1310
:class: dark-light
1411
:target: ../_images/simple_ortho-example.webp
1512
:alt: Orthorectification and correction example
1613

17-
.. |homonim| replace:: ``homonim``
18-
.. _homonim: https://github.com/leftfield-geospatial/homonim
19-
.. |simple-ortho| replace:: ``simple-ortho``
20-
.. _simple-ortho: https://github.com/leftfield-geospatial/simple-ortho
21-
.. _NGI: https://ngi.dalrrd.gov.za/index.php/what-we-do/aerial-photography-and-imagery
22-
14+
A mosaic of four NGI images (*Source*) that has been orthorectified with Orthority (*Orthorectified*), then corrected to surface reflectance with Homonim (*Corrected*).

site/portfolio/thicket_agc.rst

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
Farm-scale aboveground carbon mapping in thicket
22
------------------------------------------------
33

4-
Large portions of the semi-arid thicket biome (South Africa) have been degraded, mostly by poorly managed goat-farming. Restoration work and research is ongoing, and much needed for improving ecosystem function and mitigating climate change. Aboveground carbon (AGC) maps are important tools required for restoration monitoring and funding. As part of the `GEF-5 SLM (sustainable land management) project <https://www.thegef.org/projects-operations/projects/5327>`_, this work developed an AGC mapping approach for a ±3000 ha study area in the Baviaanskloof.
5-
6-
Using `species-specific allometric equations <https://doi.org/10.1016/j.foreco.2019.05.048>`_, AGC ground truth for 85 study area plots was produced from `field sampling data gathered by Sustainable Landscape Solutions <https://github.com/leftfield-geospatial/map-thicket-agc/blob/main/docs/gef5_slm_final_report_c_baselines_may2020.pdf>`_. Spatial accuracy of ground truth and remotely sensed imagery was emphasised to ensure the accurate location of field plot data in images. Ground truth plots are shown on a DSM (digital surface model) derived from multi-view NGI_ imagery, below.
4+
As part of the `GEF-5 SLM (sustainable land management) project <https://www.thegef.org/projects-operations/projects/5327>`_, this work developed an aboveground carbon mapping approach for thicket in a ±3000 ha study area in the Baviaanskloof. Field methods were used to gather AGC ground truth for number of plots:
75

86
.. _gef5_slm_study_area:
97

@@ -13,8 +11,4 @@ Using `species-specific allometric equations <https://doi.org/10.1016/j.foreco.2
1311
:width: 640
1412
:alt: Study area ground truth map
1513

16-
Various AGC estimation approaches were evaluated using the ground truth. These included the use of remotely sensed plant volume found from NGI image-derived `DTM and DSM <https://en.wikipedia.org/wiki/Digital_elevation_model#Terminology>`_ surfaces, and features extracted from multispectral imagery. A multivariate linear regression model using features extracted from a multispectral `WorldView-3 <https://en.wikipedia.org/wiki/WorldView-3>`_ image was the best performing method. Univariate linear models based on WorldView-3 and multispectral NGI images also performed well. In the context of the need for cost-effective biome-wide AGC maps at repeated intervals, the use of multi-spectral satellite imagery was favoured as the approach most likely to scale to these requirements.
17-
18-
While thicket allometric models for AGC are complex at the plant-scale, the success of linear models in this study suggests the relationship between remotely sensed variables and thicket AGC may be relatively simple at a landscape-scale. The `code repository <https://github.com/leftfield-geospatial/map-thicket-agc>`_, `related paper <https://doi.org/10.1117/1.JRS.15.038502>`_, and `project report <https://github.com/leftfield-geospatial/map-thicket-agc/blob/main/docs/gef5_slm_remote_sensing_of_agc_in_thicket_nov2019.pdf>`_ contain more details on the imagery, method and performance.
19-
20-
.. _NGI: https://ngi.dalrrd.gov.za/index.php/what-we-do/aerial-photography-and-imagery
14+
Various approaches for modelling AGC were evaluated using the ground truth. Straightforward linear regression models using high resolution multispectral satellite (WorldView-3) imagery performed well. The `code repository <https://github.com/leftfield-geospatial/map-thicket-agc>`_ and `related paper <https://doi.org/10.1117/1.JRS.15.038502>`_ contain more details on the data, method and performance.

site/profile.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
:align: left
88
:width: 25 %
99

10-
Leftfield was started by myself, Dugal Harris. I am an electronic engineer with a PhD in geoinformatics. My work experience has centered around the fields of remote sensing, machine learning and image processing; spanning both research and operational projects. Currently, I develop mainly in `python <https://www.python.org/>`_, but am also fluent in `C++ <https://en.wikipedia.org/wiki/C%2B%2B>`_; and have explored a number of other languages. I am based in Rheenendal, South Africa.
10+
Leftfield was started by myself, Dugal Harris. I am an electronic engineer with a PhD in geoinformatics. My work experience has centered around the fields of machine learning and image processing; spanning both research and operational projects. I particularly enjoy applied problems with a theoretical component. Currently, I develop mainly in `python <https://www.python.org/>`_, but am also fluent in `C++ <https://en.wikipedia.org/wiki/C%2B%2B>`_; and have explored a number of other languages. I am based in Rheenendal, South Africa.

0 commit comments

Comments
 (0)