I create a web app to show Hansen Global Forest Change and analyze the result using a region of interest. This application allow you to visualize the data as tile server and analyze it to get yearly forest cover and loss from 2000 to 2024. Different than my past post, this is developed using open source solution: Cloud Optimized GeoTIFF (COG) and GDAL in NodeJS environment.
You can try the app here: https://hansen-global-forest-change-f...
The repository: https://github.com/ramiqcom/hansen-gl...
Before I have been developing multiple earth observation application that let you upload a region of interest then used it to analyze thematic information such as carbon biomass, land cover change, and populations trend.
This is mostly done using Google Earth Engine API to process. There are many limitations: limited to the libraries that available in the API, high dependency to a single cloud platform, need to evaluate the result before continuing analysis with other pipilines, and too high abstraction for more fundamental analysis. Therefore, we, Space4Good is developing an open source alternative.
Inspired by Development Seed's TITiler on their utilization of COG with rasterio for tile server, we try to develop more flexible and basic approach. We go in depth with GDAL, the foundation of rasterio. Installing GDAL is not easy task but we found the best practice by using OSGeo4W for Windows and debian sid linux distro where it possible to install the latest GDAL version (above 3.10).
The point of this solution is to allow you to do as much raster manipulation as possible, with the lowest RAM usage while mantaining high performance. GDAL library such as gdalbuildvrt, gdalwarp, and gdal_calc we area able to mosaic, clip, and raster algebra as fast as the specs allowed. COG also allow you to only use the the part of the raster that needed without opening the whole thing.
We have done other project implementing this solution with FastAPI in Python but for this time, I challenge myself to use NodeJS. The source data provided in https://storage.googleapis.com/earthe... is not a COG, therefore we have to translate it and put it in our storage. Then a tile collection vector are made refering to the spatial index of the COG. This allow it to filter, mosaicked, and clip the result to our region of interest.
Hope this will be useful for your project and research.
Created by Ramadhan
Email: [email protected]
LinkedIn: / ramiqcom
GitHub: https://github.com/ramiqcom