CQuest Data Transfer App

At CQuest we empower climate positive land use managers to conduct analyses of soil organic carbon (SOC) with ease and efficiency. We would like to introduce and share the development story of one of our useful internal tools that is used to ingest and process data – the CQuest data transfer app.

Soil data are central to our mission to enable data-driven carbon CQuestration which is why we created this tool to integrate data from various sources into our algorithms. While there have been efforts to standardize soil data over the past decades, multiple datasets on soils with a variety of formats remain that require harmonization. This is where our data transfer app comes in handy. 

To aggregate and process this data, our app easily allows users to ingest their data in various formats and allows for rapid processing. A general overview of the functionality of the app can be seen in figure 1.

Figure 1: General overview of the CQuest data transfer app’s components

Flask:

To enhance user accessibility, the app was made to be lightweight, the codebase simple to read and easy to maintain, without compromising the flexibility to scale up to a complex application in the future. Since python is our main programming language at CQuest and previous experience with the web development framework, Flask, has been successful, we chose to utilize it again in developing our new tool.

The main functionality of the app allows users to upload data as files from a local or cloud storage directory (such as a shared drive or a cloud storage bucket) to a dedicated cloud storage location. While uploading, the users should provide metadata through a user input form. For users to preview their data, the app allows a quick glimpse at the data about to be uploaded through the preview functionality. Over the next sections, we want to give you some insights into how we developed these features and how you can use them in your SOC studies. 

Transfer files from local/shared drives to cloud storage:

We implemented an abstract Storage class with abstract methods: list_contents, get_file, put_file. Other classes such as LocalStorage, GoogleDriveStorage, GoogleCloudStorage, GitLabStorage inherit from Storage and implement its methods based on their specific “needs”. The abstract class and methods make it easy to implement changes and thus make the code flexible. Code snippet 1 displays the original and simple implementation of the abstract Storage class and its methods, while code snippet 2 reveals the particular implementation of the GoogleCloudStorage class, inheriting from Storage, with the implementation of the put_file_binary method which can be used to upload files  

class Storage:
  @abc.abstractmethod
  def get_file_binary(self, file):
      pass

  @abc.abstractmethod
  def put_file_binary(self, file, path):
      pass

  @abc.abstractmethod
  def list_contents(self, path, nested=False):
      pass

Code snippet 1: Implementation of abstract class and methods for the Storage class.

class GoogleCloudStorage(Storage):

    # CONSTRUCTOR ------------------------------------------
  def __init__(self) …   
    # PUT --------------------------------------------------
  def put_file_binary(self, file, gc_storage_path):
      socket.setdefaulttimeout(300)
      # parse path : '/data/subfolder/file.txt'= ['data','subfolder','file.txt']
      gc_storage_path_parts = Path(gc_storage_path).parts
      # Get the bucket on google cloud storage to where to upload the file
      gc_bucket = self.__get_connection().get_bucket(gc_storage_path_parts[0])
      logger.info("Got destination Bucket")
      # create a "file-holder" on the cloud storage in the specified bucket
      blob = gc_bucket.blob(
          str(
              Path(
                  *gc_storage_path_parts[1::]
              )  # create path from the array of the parts
          )  # transform it into a string
      )

      # the file is uploaded via stream without downloading it to the local storage
      blob._CHUNK_SIZE_MULTIPLE = 5 * 1024 * 1024
      blob._chunk_size = 5 * 1024 * 1024
      blob.upload_from_file(
          file, rewind=True
      )  # rewind=True -> bring the pointer to the beginning

      logger.info("Uploading file to gcs is done")

      # returns a public url to the file
      return blob.public_url

Code snippet 2: Implementation the GoogleCloudStorage class with put_file_binary method.

A wrapper class StorageManager was developed which manages the transfer of data files from source to destination. This structure allows the movement of files between two storage classes, irrespective of their specific type.

Now, you can simply initiate the instances of the storage types, specify the source and destination file paths to be moved, and send this information to the StorageManager which handles the rest for you. An example script is shown in code snippet 3.

# 1. Init google drive storage
google_drive_storage = GoogleDriveStorage(cquest_metadata.gdrive_secret_payload)

# 2. Init google cloud storage
google_cloud_storage = GoogleCloudStorage(cquest_metadata.gcp_access_creds)

# 3. Init storage manager
storage_manager = StorageManager()

# 4. Move files
storage_manager.move_files_from_source_to_destination(
  google_drive_storage,
  google_cloud_storage,
  gdrive_folder_id,
  "{0}/{1}".format(
      cquest_metadata.gcp_bucket_name, result_dict["short_title"][0]
  ),
)

Code snippet 3: Example for moving data between google drive and a cloud storage bucket

User Input Form:

The user input form to upload data comes in the form of a questionnaire which is displayed in figure 2. This questionnaire is implemented through a JSON file, which is retrieved by calling the method get_file_binary().

Figure 2: Screenshot of the user input form of our app

Then the file is passed to the questionnaire.html with flask and the command:

render_template("questionnaire.html", table=json.dumps(questionnaire_json))

JavaScript then parses the JSON file and dynamically generates HTML content for the questionnaire page. While doing this JavaScript completely relies on the information passed to it from the JSON object. For example, the “question_type” field defines what type of input the HTML has to add (text, radio, checkbox, date, ect. ), “question_string” defines how the question should be presented on the web page, “question_options” define the available options from which the user can pick the answer, etc. This design enables addition or modification of the questionnaire simply by changing the corresponding json file without touching the code or redeploying the app. 

Preview File:

To increase assurance of accurate work, we developed the functionality to preview file content before uploading. This is implemented with JavaScript: when the input file gets selected an eventListener triggers an execution of a function. This function converts the binary of the selected file into a json object and then dynamically generates an HTML table content for the page. Check out this last code snippet 4 for more details:

// FILE PREVIEWER : handle
function handleFilePreview(e) {
  // Adds Names of the files as a list
  if(!e.target.files) return;
  prevFileDiv.innerHTML = "";
  // get file
  var file = e.target.files[0];
  var fileType = file.name.split(".")[1]
  // read file
  var fileReader = new FileReader();
  if(fileType == "csv"){
      fileReader.readAsText(file) 
  } else if (fileType == "xls" || fileType == "xlsx") {
      fileReader.readAsBinaryString(file)
  }
  // load file to fileReader and generate html string for inner content
  fileReader.onload = function() {
      var htmlString = ""
      const text = fileReader.result;
      var jsonObject = null;
      // convert csv to json object
      if(fileType == "csv"){
          jsonObject = csvJSON(text); // separately implemented function
      // convert xlsx file binary to json object
      } else if (fileType == "xls" || fileType == "xlsx") {
          jsonObject = xlsJSON(text); // separately implemented function
      }
      const keys = Object.keys(jsonObject[0])
      // create table
      htmlString += "<table class='table table-striped'>";   // <-------- START TABLE
          // code for dynamical html content generation        
      htmlString += "</table>"   // <-------------------------------------- END TABLE
      prevFileDiv.innerHTML = htmlString;
  };
}

Code snippet 3: Example for moving data between google drive and a cloud storage bucket

As we developed the CQuest data transfer app to assist users with studies and analyses of SOC, we are excited for the opportunity for you to utilize this tool. At CQuest, we strive to make SOC projects as simple, efficient, and organized as possible in order to make efforts to combat the issue of atmospheric CO2 accessible to anyone interested. So, for the time being, we develop and use this app as an internal tool, but we are open to share access and let you use the app together with us. Please reach out if you are interested or have any questions.

The 3 challenges of NCS

There is no doubt that society must both cut carbon emissions and remove carbon from the atmosphere to be on track to stay under a 1.5ºC rise in global average temperatures. According to the IPCC, an increase past 1.5ºC is the point of no return, where the effects of climate change will be too severe to not have irreversible consequences. As this situation rises to the forefront of political and corporate agendas, the development of a successful carbon market is sure to continue, in which carbon credits will be an important factor for businesses to achieve carbon neutrality.  

Focusing on removing carbon from the atmosphere, there are two prevalent options: tech centered climate solutions and nature based climate solutions (NCS). Geoengineering consists of manmade technologies that pull carbon from the atmosphere, however, these technologies are not yet advanced enough to be used at a reasonable price point. NCS, on the other hand, uses strategies of natural carbon sinks to sequester carbon. Many projects are likely to focus on NCS because it follows a model that has already proven to be effective and can provide many other benefits such as increased biodiversity, increased soil fertility, and providing landscape aesthetics. Examples of NCS include growing kelp forests, reforestation, and increasing soil carbon. 

At CQuest, we focus on the NCS consisting of increasing soil carbon. In a carbon credit system, or any other system that incentivises businesses and landowners to reduce their emissions, increasing soil carbon content will be extremely valuable. However, there are three main concerns with this NCS: permanence, leakage, and additionality. The permanence of a project is concerning, because in order for an NCS to be effective, it must last by not rereleasing its stored carbon into the atmosphere and thus reversing its effects. A project is often considered permanent once it has existed for 100 years, however some projects in Australia sign up for a shorter period, in which the project lasts for only 25 years. One issue with the concept of permanence is the difference of interpretation between scientists, businesses and policymakers. It is important to be able to make trustworthy/resilient claims in order to compensate landowners for the actual effectiveness of their project. Leakage is when the decrease in carbon due to an NCS causes the increase of emissions elsewhere, thus defeating the purpose of the NCS. Currently, complicated statistical methods and simulations are used to estimate leakage due to economic forces. Proper measurement of leakage would keep landowners in check to make sure that their emissions are being reduced, not just moved to a different location. The final issue is additionality. Benefits from an NCS may have already been occurring without the NCS, and landowners could take advantage of this to receive more rewards for carbon sequestration. To solve this problem, an accurate baseline for business as usual carbon content in the project site must be established and it must be recognized when a project takes place due to additional carbon market funding. All carbon that is sequestered above the baseline counts as the additional carbon sequestered due to the new project and rewards for it can therefore be justified. There is currently no uniform method to calculate baselines for NCS projects however this is needed moving forward so landowners are prevented from taking credit for pre-existing terrestrial carbon. When accurate additionality, reduced leakage and increased permanence can be properly monitored, the corresponding rewards or consequences will be given in a carbon market and landowners will be less likely to be able to cheat the system with inaccurate measurements. 

Remote sensing can be a part of the solution to all three of these issues. Looking at past, present, and future satellite imagery can show how long a project has existed, how it has changed, and if it is removed. In combination with social data, satellite imagery can assess leakage in the market by observing changes in land use around the project area or in other areas that the land owner owns (see “spatial econometrics”). Finally, additionality can be measured with remote sensing because a baseline can be established by analyzing satellite imagery which can also help determine whether improved practices would have been adopted without the help of carbon financing. Specific wavelengths can determine the soil properties associated with the amount of soil carbon and vegetation in the project site to establish a precise measurement of the actual increase in terrestrial carbon in the project site after implementation. Remote sensing can further be used to monitor the surrounding areas and prompt investigation into regulatory practices, land use norms, and incentives in the area to determine if the project would have taken place in the absence of carbon market funding. Remote sensing offers a cost effective, accurate, and quick method of reducing the most common concerns surrounding NCS: permanence, leakage, and additionality. 

These solutions aren’t perfect, but it will require a whole set of tools to account for the clear shortcomings of NCS. In order to equip NCS with the defensibility to live up to its global potential we must utilize today’s cutting edge technologies to add transparency and validate carbon negative claims. 

Feel free to contact us, If you are interested in these products.

The Power of Grasslands

One of the greatest challenges facing the world today is population growth. How do we feed the ever increasing population with resources that seem finite? The earth holding an amount of resources too limited to feed a large population is a common Malthusian misconception. With better food practices, such as reducing food waste and managing agricultural lands more efficiently, a growing population can be sustained. However, a growing population will not be able to live comfortably alongside the dramatic effects of climate change, such as disruptions to growing seasons and the inability of crops to flourish in historically fertile areas. As a nature based climate solution (NCS), grasslands can help, not only by capturing carbon from the atmosphere, but assisting in the agricultural industry and the power of remote sensing can create a convenient system to monitor these grasslands. 

A traditional practice is to convert grasslands to agricultural lands, however grasslands hold an astonishing ability to sequester atmospheric carbon deep into the soil, more effectively than croplands or forest. It is estimated that the amount of carbon in global soil stocks is about 3.3 times that which is in the atmosphere, posing a great threat to the already at risk climate scenario we are in if grasslands continue to become degraded croplands. When grasslands are converted into croplands, about half of the soil organic carbon (SOC) is lost to the atmosphere during tilling. When used as poorly managed rangelands, grasslands can become overgrazed leading to the infertility of the area and thus a reduction in SOC. These practices lead not only to an initial loss of SOC, but a continued decrease in ability for the area to accumulate SOC from the atmosphere. A result of this degradation can be desertification which leaves the land useless and barren, unable to sustain a herd, crops, or sequester carbon well. Grasslands hold more biomass than croplands as deep rooted perennial grasses pull carbon from the atmosphere and sequester it into the soil. A layer of mulch keeps dead plant matter from oxidizing (releasing CO2) into the atmosphere while in croplands, crop residue is left to decompose in the open, resulting in the release of CO2 into the atmosphere. Grasslands have some benefits over forests, for example their biomass is mostly underground. This prevents a great amount of carbon being released into the atmosphere during fires. 

At this point, one may wonder how converting agricultural lands back into grasslands can actually help agriculture. As the world continues to develop, the demand for meat and dairy will rise due to the correlation of development and rising incomes. Properly managed grasslands can sustain livestock. Furthermore, the most productive agricultural lands would remain croplands for human consumption, while conversion to grassland would be focused on the abundant degraded croplands whose production is not sustainable. Techniques such as reduced grazing intensity, the application of nitrogen fertilizers, proper irrigation, and the introduction of diverse species of long rooted grasses would increase the ability of grasslands to capture SOC and create sustainable rangelands to meet the food demands of the world. 

As calls to action surrounding climate change are increasingly responded to, a successful carbon market is likely to arise. This could include a cap-and-trade system or incentives for farmers to capture more SOC in their land. Systems that reward landowners for the amount of SOC stored in their land are most applicable to the NCS consisting of converting degraded croplands to grasslands. In the monitoring, reporting, and verification (MRV) of converted grasslands, remote sensing holds promise. The permanence and effectiveness of these grasslands can be monitored using vegetation indexes, such as NDVI, which show the amount of healthy vegetation in an area and, as grassland vegetation is known to sequester carbon, it hints at the success of grasslands in holding SOC. SOC can also be monitored directly using VNIR and SWIR which reveal soil properties that indicate the SOC content. These measurements derived from satellite imagery can provide a quick and cheap method to monitor grassland conversion projects by detecting change over time in vegetation and soil, allowing decision makers to create fluid management practices to improve ongoing efforts as well as to consistently and accurately compensate landowners for SOC. 

Since the beginning of industrialism, agriculture accounts for about 20% of global greenhouse gases released. Converting croplands into grasslands would not only work towards sustainability in a historically unsustainable industry, but continue to allow for food production to support the world’s large population. Remote sensing can uplift the feasibility of global cropland to grassland conversion projects, by creating a monitoring system that is efficient, cost effective, and accurate.

Carbon Farming & Satellite Imagery

Carbon farming has recently been popularized as an innovative nature based climate solution (NCS) to tackle the pressing issue of excessive levels of atmospheric carbon. The shift of conventional agriculture to carbon farming has the potential of turning the industry, known for emitting large amounts of carbon, into a climate solution that stores carbon in soil and plants. The Intergovernmental Panel on Climate Change (IPCC) states that soil carbon sequestration holds about 90% of the carbon emission mitigation potential in the global agricultural sector. Historically, agriculture has been notorious for environmental degradation and carbon emissions. Examples include methane emitted from ruminants and the process of desertification due to overgrazing as well as over tilling. 

So How is Carbon Farming Different?

Carbon farming consists of using agricultural lands to trap atmospheric carbon. Measures are taken, such as reduced tilling, implementation of long rooted crops, restoration of riparian zones, and the incorporation of organic matter (compost) into soil, to promote continued and prolonged sequestration of carbon into the earth. Carbon farming also has the potential to increase soil fertility and thus crop production, contributing to the mitigation of global food insecurity. Although carbon farming may seem promising at a glance, it carries limitations due to costs as well as time and labor inefficiencies. (These limitations are by no means comprehensive and we will cover additional complications surrounding additionality, leakage and permanence in a future post.)

We believe that these drawbacks, however, are not reason enough to abandon the potential of carbon farming altogether. Carbon farming clearly has an important role to play in a greener, regenerative future.

 Many of the above mentioned  costs and inefficiencies of carbon farming fall into an important post implementation stage: monitoring, reporting, and verification (MRV). MRV is generally conducted by field surveys consisting of extracting soil samples once every few years. Another method is the carbon budget approach, which calculates the fluctuations in soil carbon content using initial photosynthesis estimates and ‘chamber measurements’ or the ‘eddy covariance method’. Although these approaches are effective, they are labor intensive, expensive, and often require specialists, making them better suited for research methods than practical monitoring approaches. Furthermore, these methods measure only the sampled areas in carbon farm plots and do not provide exact data for the entire land, rendering them inefficient in estimating the carbon content of large areas. 

What Does This Have to do with CQuest’s Mission Surrounding Global Action on Soil Carbon Sequestration and Remote Sensing?

We believe that the ideal method for measuring soil carbon content must include the ability to take measurements of entire landscapes year round. Remote sensing has vast potential for achieving this ideal monitoring system at a far lower cost than the current monitoring norms offer. Historically, remote sensing has had limited applications in monitoring soil carbon sequestration, however, satellites have already yielded labor and cost efficient results for assessing soil carbon content in some European landscapes with visible near-infrared and shortwave infrared (VNIR and SWIR) sensors. Monitoring soil carbon with remote sensing could potentially be expanded to become the standard system established on carbon farms as it offers a quick, affordable, and accurate monitoring technique, consequently reducing barriers to entry in carbon farming and hopefully increasing global carbon sequestration. The CQuest vision is to democratize access to the carbon market to every farmer, rancher, and landmanger on the planet with remote sensing based MRV. 

Monitoring with remote sensing would also assist national incentive programs that reward farmers for the amount of carbon sequestered in their soils as well as contribute to the growth of incentive programs by making carbon farming an affordable option for stakeholders. With continuous monitoring, farmers could be accurately compensated for their efforts without having to perform costly and labor intensive monitoring mechanisms on their own. As the threat of climate change looms, society must continue to commit to the goal of preventing global warming exceeding 1.5ºC. The expansion of carbon farming, with the assistance of remote sensing, may be a critical step in moving the agricultural sector from being one of the most carbon emissive industries to one of the most sustainable. 

2021 EXIST Grant Recipients!

We hope you have all had a healthy and productive start into the new year.

In 2020, founders Julian Kremers, Stefan Gönner, and Jakob Levin embarked on a mission to enable global climate action through data driven carbon sequestration. We called our endeavor CQuest. 

2020 brought many milestones in pursuit of this mission including joining the Copernicus Accelerator Program, 2nd place in the ESA Copernicus Masters Competition, and the launch of our prototype platform: CQuest.Earth. Today, project developers can log onto our platform and easily identify degrading or non degrading landscapes for free! Feel free to check out our progress for yourself!

Now, as 2021 begins, we are excited to announce that CQuest has received seed funding from the German Ministry of Economics through an EXIST grant. Together with our Alma Mater, the Brandenburg Technical Institute, we have secured financial support to provide greater access to the power of remote sensing and machine learning for developers of Nature-based Climate Solutions. 

If you have any questions about CQuest or would like to learn more about the work that we do feel free to contact Jakob@CQuest.ai directly!

We at CQuest are looking forward to a productive (and perhaps less eventful) 2021.

Launching CQuest.Earth (Part 2)

After launching CQuest.Earth last week, we are now open-sourcing our first app: the MODIS Vegetation Index Time-Series App. As explained in our blogpost from last week, this App enables you to compare the vegetation indices of different places over time. This is only the first set of functionalities CQuest.Earth will offer. There are many more to come, so make sure to stay tuned. 

If you follow these instructions you will be able to recreate the current (December 2020) version, or you can go to CQuest.Earth, sign up, and check out the most recent version and use many useful features for free.

The code is provided in 5 separate javascript files on this gitlab repo. You can use this code in the Google Earth Engine (GEE) Code Editor to recreate the app. Let’s have a look under the hood (disclaimer: for the sake of brevity we have omitted some cleaning/maintenance code here):

The core functionality of the app resides in modis_vi_ts_chart_app.js. The other four scripts serve as supplementary reference files: collection_config.js contains configuration details of all the relevant MODIS vegetation image collections on GEE, geometries.js deals with the interactive drawing of geometries on the map, legend.js provides the configuration for the map legend, and styles.js holds the styling details for the user interface, i.e. control and chart panels.

Let’s walk through the main flow of the app:

First we import functions and configurations from the supporting scripts.

var collections = require("modis-vi-ts-chart:collection_config");
var geometries = require("modis-vi-ts-chart:geometries");
var legend = require("modis-vi-ts-chart:legend");
var style = require("modis-vi-ts-chart:styles");

Next we initialize the three main components of the app:

  1. the map panel where users can view the vegetation index layers and place/draw their areas of interest (AOIs).
var map_panel = ui.Map({"lat":15, "lon":0, "zoom":2});
var drawingTools = map_panel.drawingTools();
drawingTools.setShown(false);
map_panel.addLayer(data_layer.visual, data_layer.vis_params, band);
  1. The control panel where users can select the vegetation index layer of  interest
var control_panel = ui.Panel({style: {width: "290px"}});
control_panel.add(ui.Label({value: 'MODIS Vegetation Time-Series Charts', style: style.control.title}));
  1. The chart panel where the spatio-temporal comparison of the vegetation index time-series will be shown
var chart_panel = ui.Panel({style: {width: "500px"}});
chart_panel.add(ui.Label({value: 'Follow the instructions on the left to create your time-series chart', style: style.control.title}));
var chart_options = style.chart.options[band];
var chart_panel_title = "MODIS NDVI Time-Series";

Not so spectacular yet- but now it gets interesting with three interactive widgets in the control panel. The first lets a user select the vegetation index layer of their choice. When a user changes the selection, the active layer displayed on the map and the one to be queried for the time-series chart changes.

var options = ["NDVI","EVI","GPP","NPP","LAI"];
var layer_selector = ui.Select({
items: options,
placeholder: "Select Layer",
onChange: function(value){
  data_layer = collections.modis[value];
  band = data_layer.band;
  chart_options = style.chart.options[band];
  chart_panel_title = "MODIS " + value + " Time-Series";
  if (value != map_panel.layers().get(0).getName()){
    map_panel.clear();
    drawingTools.setShown(false);
    map_panel.addLayer(data_layer.visual, data_layer.vis_params, value);
    control_panel.widgets().set(10, legend.title("MODIS " + value + " 2019"));
    control_panel.widgets().set(12, legend.labels(data_layer.min, data_layer.max));
}}});

The second are actually two instances of the same widget – geometry select widgets that let the user select a geometry type (point or polygon) to draw on the map and thus indicate the AOIs to query for the vegetation index time-series.

var select_and_draw_single_geometry = function(
drawingTools, name, color
){return ui.Select(
  { items: options,
    placeholder: 'Select Geometry Type',
    onChange: function(value){
      if(value){
        var geom_layer = ui.Map.GeometryLayer({geometries: null, name: name, color: color});
        drawingTools.layers().add(geom_layer);
        drawingTools.onDraw(function(){drawingTools = drawingTools.stop()});
        drawingTools.setSelected(geom_layer);
        drawingTools.setShape(value);
        drawingTools.draw();
  }}});
};

Last but not least, a button widget is presented to evaluate the time-series for the two chosen AOIs and display the chart comparing them over the last twenty years. The chart can be expanded and downloaded as raw data (csv), or image (png/svg). Don’t be afraid by the length of the code for this button, the functionality is quite straightforward

First the user drawn AOIs are extracted as GEE geometry objects

var aoi1 = drawingTools.layers().get(0).geometries().get(0);
var aoi2 = drawingTools.layers().get(1).geometries().get(0);

Secondly, the image time-series is stacked as a single image, with each image band representing one time step in the time-series

var timestamps = data_layer.collection.aggregate_array("system:time_start");
var date_strings = timestamps.map(function(timestamp)
{return ee.Date(timestamp).format("YYYY-MM-dd")});
var stacked_image = data_layer.collection.select(band).toBands().rename(date_strings);

Then the time-series for both AOIs are extracted to dictionaries.

var ts_aoi1 = ee.Image(stacked_image).reduceRegion(
{geometry: aoi1, reducer: ee.Reducer.mean(), bestEffort: true});
var ts_aoi2 = ee.Image(stacked_image).reduceRegion(
{geometry: aoi2, reducer: ee.Reducer.mean(), bestEffort: true});

Finally, the time-series are concatenated to an GEE array and the chart is created and displayed in the chart panel.

var y_values = ee.Array.cat([ts_aoi1.values(), ts_aoi2.values()], 1);
var chart = ui.Chart.array.values(y_values, 0, ee.Array(timestamps))
.setSeriesNames(["AOI1", "AOI2"])
.setOptions(chart_options);
chart_panel.add(chart);

We hope you find this info and code useful for your own projects concerning time-series exploration on the GEE. Please, feel free to use this code and play around with it as much as you like. If you have any questions or feedback, please reach out via julian@cquest.ai or write a gitlab issue to the repo.

Launching CQuest.Earth

After the inception of CQuest earlier this year, we are proud to launch our new earth observation (EO) platform: CQuest.Earth.

CQuest aims to enable global climate action through data-driven carbon sequestration. We all know that there is too much CO2 in our atmosphere. A bundle of approaches to mitigate this are nature-based climate solutions (NCS), ranging from reforestation and agroforestry to sustainable grazing and conservation agriculture. 

Throughout the past months we talked to several project developers of NCS, who are implementing these projects on the ground. They are always excited to hear of the potential of remote sensing and EO technologies. Yet, they often ask, how they can tap this potential. Unfortunately, there is no simple answer. Despite the growing supply of EO resources and platforms, it still remains difficult for non-technical users to access the information they need. With CQuest.Earth we offer a modest first contribution to make EO data more accessible to end-users, particularly to project developers of NCS. Our apps shall provide a playground for NCS-project developers to test the applicability and feasibility of remote sensing data for existing monitoring, reporting and verification methodologies and offer them first insights into their potential regions of interest.

To kick it off, we start with the “bread and butter” of remote sensing for vegetation monitoring: the normalized difference vegetation index (NDVI). Healthy leaves reflect green light and absorb red light which they use for photosynthesis. Interestingly, they also reflect near-infrared (NIR) light and much stronger than any of the light visible to us. Thus, by subtracting the measurable quantities of red light reflected off vegetation from the quantity of near-infrared light we can obtain a relative data point of plant photosynthetic activity as a proxy for plant health. Normalizing this by dividing it by the sum of the quantity of red and NIR reflectance, we obtain a unitless index generally ranging from 0 to 1 with higher values hinting at more area covered by leaves (leaf-area index, LAI) and better plant health.

While this is a simple quantitative measure that does not provide qualitative information about the plant type or specific nutrient deficiencies, its simplicity makes it a powerful tool for comparison. One can easily compare the NDVI of two different places to claim which one is more densely or healthily vegetated. Likewise, we can observe NDVI time-series to see temporal changes in vegetation cover (upward and downward trends or breaks). To provide you with this functionality, we offer you our first apps on CQuest.Earth. On the landing page you can view a global map of annual NDVI values over the last twenty years (see Figure 1).

Figure 1: CQuest.Earth Landing Page App – MODIS Median NDVI from 2000 to 2020

In the coming months we want to extend our offerings on CQuest.Earth to include other satellite sensors, data products and information services. In our next blogpost we will share how we programmed the first apps on the Google Earth Engine. 

Stay tuned for more details on our tech stack,

Julian, CTO of CQuest

Figure 2: CQuest.Earth MODIS vegetation index time-series App

Hello Space2Agriculture!

Did you know that there are 570 million farms on the planet? You read that right- 570,000,000 farms!!

Among a top concern for the farmers that work these farms is soil heath and as a result soil organic carbon (SOC). Soils with higher SOC content require less irrigation, are more resilient to droughts and erosion, produce healthier yields, and actively sequester (CQuest) carbon out of the atmosphere! Now that’s what we like to call a win-win-win-win. 

CQuest is on a mission to provide these farmers with data-driven carbon CQuestration measurements which would allow both small-hold farmers and large agricultural conglomerates to access to carbon financing through low cost satellite analysis. 

This is why we so excited to be part of Space2Agriculture, a INNOspace network that serves as a communication platform between the #spactech industry and agriculture. 
Thank you Dr. Schmidt and Dr. Ghosh for the opportunity to join and the chance to present our solution and insight.

Copernicus Masters Finalists!

It has been officially announced: CQuest is a Finalist for the Copernicus Masters 2020 DLR Environment, Energy and Health Challenge!

It was a pleasure to be able to work with scientists Franciscopaolo Sica and Andrea Pulella from the DLR Microwaves and Radar Institute on this groundbreaking (or groundhealing?) project. We look forward to future discovery and collaborations!

Our prototype analyzed the possibility of using cutting-edge InSAR data to detect the amount of organic carbon in soils (SOC). Accurate and efficient accounting is paramount for SOC projects to be able to meet growing demand in the market and to quantify their impact in the fight against climate change. 

Through close collaborations and scientific research we can help Nature-based Climate Solutions reach their full potential!

Launching CQuest!

In 2012, we, Stefan, Julian, and Jakob, met as new students at the BTU’s Environment and Resource Management program in pursuit of an answer to one fundamental question: What can we do to combat climate change and promote social sustainability on a global scale? Even beyond our studies, much of our lives have been guided by this one question, and now we have found an answer!

We are proud to announce our new joint venture, CQuest! After nearly 10 years of friendship and collaboration, we are joining forces again to start a company and to make a difference. 

The idea: 

Climate change is happening, it’s bad, but we have the tools to mitigate its lasting effects. Among these tools are Nature-based Climate Solutions (NCS) which offset carbon emissions through natural biological processes and reduce the amount of C02 in the air while restoring degraded landscapes. Win-win-win. 

Out of necessity, these projects are subject to very tight scrutiny, detailed monitoring guidelines, and costly verification requirements. This is where CQuest comes in. Using satellite imagery, and cutting edge machine learning and data processing algorithms, we aim to increase the productivity and the profitability of these NCS projects. Our technology will allow communities around the world to identify new potential project opportunities, manage existing projects more efficiently, and meet strict reporting requirements- all from the comfort of their desk.

NCS covers a wide range of project types, from forestry and sustainable grazing, to restoring mangroves and no-till agriculture. CQuest will focus on the growing interest and excitement around soil organic carbon. Soils hold the largest portion of active carbon on earth- more than all global vegetation and atmosphere combined! 

We are thrilled about this new opportunity to build a business with a purpose, and humbled to join an industry that fights to improve the lives of individuals, communities, and the earth as a whole.

Reach out to us anytime if you are interested in learning more about what we are building! We look forward to hearing from you.