<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kshitij Raj Sharma</title>
    <description>The latest articles on DEV Community by Kshitij Raj Sharma (@krschap).</description>
    <link>https://dev.to/krschap</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F554864%2F5201d7bf-1aaa-4f53-b5d8-93ac50f24350.jpeg</url>
      <title>DEV Community: Kshitij Raj Sharma</title>
      <link>https://dev.to/krschap</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krschap"/>
    <language>en</language>
    <item>
      <title>Install open source version of VSCode in Ubuntu / Debian</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Wed, 13 Aug 2025 11:38:14 +0000</pubDate>
      <link>https://dev.to/krschap/install-open-source-version-of-vscode-in-ubuntu-debian-2apa</link>
      <guid>https://dev.to/krschap/install-open-source-version-of-vscode-in-ubuntu-debian-2apa</guid>
      <description>&lt;p&gt;As a developer, you're likely no stranger to Visual Studio Code (VS Code), a popular, feature-rich code editor developed by Microsoft. However, if you're looking for an open-source alternative that offers similar functionality, look no further than VSCodium.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why VSCodium?
&lt;/h2&gt;

&lt;p&gt;VSCodium is a community-driven, open-source fork of VS Code. It's designed to be compatible with VS Code extensions and settings, making it an attractive alternative for developers who want to avoid proprietary software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing VSCodium on Ubuntu/Debian
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Add the VSCodium Repository
&lt;/h3&gt;

&lt;p&gt;First, add the VSCodium repository to your system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget &lt;span class="nt"&gt;-qO&lt;/span&gt; - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg &lt;span class="se"&gt;\&lt;/span&gt;
    | gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    | &lt;span class="nb"&gt;sudo dd &lt;/span&gt;&lt;span class="nv"&gt;of&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/share/keyrings/vscodium-archive-keyring.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, add the repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg] https://download.vscodium.com/debs vscodium main'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/vscodium.list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Update and Install VSCodium
&lt;/h3&gt;

&lt;p&gt;Update your package list and install VSCodium:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;codium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuring VSCodium
&lt;/h2&gt;

&lt;p&gt;Once installed, you can configure VSCodium to use the &lt;code&gt;code&lt;/code&gt; command, just like VS Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; /usr/bin/codium /usr/bin/code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify that the &lt;code&gt;code&lt;/code&gt; command is working:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Using VSCodium
&lt;/h2&gt;

&lt;p&gt;You can now launch VSCodium using the &lt;code&gt;code&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will open VSCodium with the specified file or directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/VSCodium/vscodium" rel="noopener noreferrer"&gt;VSCodium GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vscodium.com" rel="noopener noreferrer"&gt;VSCodium Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Known Issues
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Some VS Code extensions may not work with VSCodium due to differences in the underlying architecture.&lt;/li&gt;
&lt;li&gt;VSCodium may not receive updates as frequently as VS Code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're interested in contributing to the project, check out the &lt;a href="https://github.com/VSCodium/vscodium" rel="noopener noreferrer"&gt;VSCodium GitHub repository&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Working with open imagery of the world ? : OpenAerialMap</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Fri, 20 Dec 2024 10:27:37 +0000</pubDate>
      <link>https://dev.to/krschap/working-with-open-imagery-of-the-world-openaerialmap-415i</link>
      <guid>https://dev.to/krschap/working-with-open-imagery-of-the-world-openaerialmap-415i</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rj91vbee8cg6wymy7pp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2rj91vbee8cg6wymy7pp.png" alt="image" width="800" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;URL : &lt;a href="https://openaerialmap.org" rel="noopener noreferrer"&gt;https://openaerialmap.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Description : OpenAerialMap is an open service to provide access to a commons of openly licensed imagery and map layer services. Download or contribute imagery to the growing commons of openly licensed imagery. This short tutorial will document the steps needed to process and publish your images in OpenAerialMap&lt;/p&gt;

&lt;h2&gt;
  
  
  How to upload images ? :
&lt;/h2&gt;

&lt;p&gt;1) Go to &lt;a href="https://openaerialmap.org" rel="noopener noreferrer"&gt;openaerialmap&lt;/a&gt;&lt;br&gt;
2) Sign in using your google account &lt;br&gt;
3) To upload your image : Hit Upload &lt;br&gt;
4) Provide metadata for your image ( Type of sensor used , License , Creator and etc ) &lt;br&gt;
5) Submit , Grab Tea and Wait for the completion &lt;br&gt;
6) Once upload is done you can leave the browser , OAM will do its own postprocessing step and email you when it is done &lt;br&gt;
7) Once image is available in OAM you can share it with your network , Grab it as TMS/ WMTS in your QGIS , Perform mapping using this imagery . Opportunities are unlimited &lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;Currently , OpenAerialMap doesn't support more than 4 bands . if your image has more than 4 bands then you need to remove extra bands in order to upload in OAM &lt;/p&gt;

&lt;h3&gt;
  
  
  Removing extra bands ( Adopt 4 bands limit of OpenAerialMap)
&lt;/h3&gt;

&lt;p&gt;To remove bands / only extract related bands in your image : &lt;/p&gt;

&lt;p&gt;For us , We had 6 band image hence we needed to do some preprocessing using QGIS &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reaarange Bands ( GDAL utility ) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2Fac57bf34-b37c-4f7f-a3be-1b475314bdf4" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2Fac57bf34-b37c-4f7f-a3be-1b475314bdf4" width="800" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In QGIS search and find Reaarange bands under GDAL . This function allows you to choose and extract specific bands from&lt;br&gt;
the image and create new tiff with it . We created two orthophotos &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Orthophoto with R, G, B and NIR band &lt;/li&gt;
&lt;li&gt;Orthophoto with only RGB band &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Exporting tiff as rendered image ( fix no display problem / Not rendering issue )
&lt;/h3&gt;

&lt;p&gt;By default with exporting only RGB band as Raw we encountered following issue in OAM ( Image not being rendered ) and not only in OAM its not rendering in ID editor , JOSM and QGIS . &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2F3480adee-f8d5-421c-9847-6a62a3213716" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2F3480adee-f8d5-421c-9847-6a62a3213716" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hence to solve this problem ,  we exported our RGB tiff as rendered image in QGIS 
&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2F6fa8b3af-e5e6-4c43-a633-eea61d62816c" width="800" height="276"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Black background for nodata problem
&lt;/h3&gt;

&lt;p&gt;Since we used our area of interest to create this orthophoto as there will be pixels with no data in it and by result its being displayed as black in OpenAerialMap and all other places &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2Fe75a1fcb-487b-4682-836c-aedeec739a16" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2Fe75a1fcb-487b-4682-836c-aedeec739a16" width="800" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hence to solve this problem we clipped our rendrered exported tiff with our Area of Interest in QGIS , ( We had to clip specifically the rendered image output instead of RAW to avoid this problem ) 
&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2F9c4e8734-aa76-4368-9f5b-b295355ab16a" width="800" height="643"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally , Now you can upload your rendered clip RGB image  to OpenAerialMap.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2Fc0ca703d-b3c8-4aae-9411-05517dd9d8e9" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Fe2etemplate%2Fassets%2F36752999%2Fc0ca703d-b3c8-4aae-9411-05517dd9d8e9" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources and Credits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OpenAerialMap &lt;/li&gt;
&lt;li&gt;Sujan Paudel &lt;/li&gt;
&lt;li&gt;e2e workshop in &lt;a href="https://cligeos2024.conscor.com/" rel="noopener noreferrer"&gt;https://cligeos2024.conscor.com/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>drone</category>
      <category>openaerialmap</category>
      <category>gis</category>
    </item>
    <item>
      <title>Working with Sentinel 1 - RADAR : Case Study in Jajarkot EarthQuake</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Sun, 15 Dec 2024 17:36:43 +0000</pubDate>
      <link>https://dev.to/krschap/working-with-sentinel-1-radar-case-study-in-jajarkot-earthquake-p21</link>
      <guid>https://dev.to/krschap/working-with-sentinel-1-radar-case-study-in-jajarkot-earthquake-p21</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqhp59fs6jqaaopsrxpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqhp59fs6jqaaopsrxpt.png" alt="Image" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of this tutorial is to share my experience and steps I followed when I tried to work with Sentinel-1 Radar Data to estimate the displacement caused by the earthquake in Nepal. &lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Study Area&lt;/li&gt;
&lt;li&gt;Preparation&lt;/li&gt;
&lt;li&gt;Download Image&lt;/li&gt;
&lt;li&gt;Data Preparation&lt;/li&gt;
&lt;li&gt;Image Preprocessing&lt;/li&gt;
&lt;li&gt;Generation of Topographic Interferogram&lt;/li&gt;
&lt;li&gt;Generation of Differential Interferogram&lt;/li&gt;
&lt;li&gt;Creation of Displacement Map&lt;/li&gt;
&lt;li&gt;Terrain Correction&lt;/li&gt;
&lt;li&gt;Export Displacement Map&lt;/li&gt;
&lt;li&gt;Sources and Credit&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Study Area
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;JajarKot Nepal&lt;/em&gt; : &lt;a href="https://www.openstreetmap.org/relation/4586357#map=10/28.9246/82.3151" rel="noopener noreferrer"&gt;https://www.openstreetmap.org/relation/4586357#map=10/28.9246/82.3151&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1954irbjfma5uujpoo7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1954irbjfma5uujpoo7y.png" alt="CNN report" width="800" height="890"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source :  &lt;a href="https://edition.cnn.com/2023/11/03/asia/nepal-earthquake-northwest-hnk-intl/index.html" rel="noopener noreferrer"&gt;https://edition.cnn.com/2023/11/03/asia/nepal-earthquake-northwest-hnk-intl/index.html&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There was a deadly earthquake in Early November 2023 which killed more than 157 people as per CNN . I wanted to figure out how much displacement it has cased in the area , Did topography rise ? or fall. As we know due to tectonic plates movement it will always result in displacement ! &lt;/p&gt;

&lt;h2&gt;
  
  
  Preparation
&lt;/h2&gt;

&lt;p&gt;Lets first verify that event exists , get the event details from USGS . USGS mainatains the eartquake catalog which will give the event date, magnitude and  coordinate for the event .&lt;br&gt;&lt;br&gt;
&lt;a href="https://earthquake.usgs.gov/earthquakes/search/" rel="noopener noreferrer"&gt;https://earthquake.usgs.gov/earthquakes/search/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8twmgp9lpchxev7lxqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8twmgp9lpchxev7lxqz.png" alt="image" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prepare your filter accordingly to  your event , For us as CNN reported the incident in november 3 , I am keeping filter from Novemeber 2 to 4  in Jajarkot Area . This is how my search filter result looks like : &lt;a href="https://earthquake.usgs.gov/earthquakes/map/?currentFeatureId=us7000l8p5&amp;amp;extent=22.2586%2C75.81665&amp;amp;extent=31.72817%2C91.70288&amp;amp;range=search&amp;amp;sort=largest&amp;amp;search=%7B%22name%22%3A%22Search+Results%22%2C%22params%22%3A%7B%22starttime%22%3A%222022-01-01+00%3A00%3A00%22%2C%22endtime%22%3A%222024-12-08+23%3A59%3A59%22%2C%22maxlatitude%22%3A32.319%2C%22minlatitude%22%3A24.121%2C%22maxlongitude%22%3A89.868%2C%22minlongitude%22%3A78.354%2C%22minmagnitude%22%3A5%2C%22orderby%22%3A%22magnitude%22%7D%7D" rel="noopener noreferrer"&gt;https://earthquake.usgs.gov/earthquakes/map/?currentFeatureId=us7000l8p5&amp;amp;extent=22.2586%2C75.81665&amp;amp;extent=31.72817%2C91.70288&amp;amp;range=search&amp;amp;sort=largest&amp;amp;search=%7B%22name%22%3A%22Search+Results%22%2C%22params%22%3A%7B%22starttime%22%3A%222022-01-01+00%3A00%3A00%22%2C%22endtime%22%3A%222024-12-08+23%3A59%3A59%22%2C%22maxlatitude%22%3A32.319%2C%22minlatitude%22%3A24.121%2C%22maxlongitude%22%3A89.868%2C%22minlongitude%22%3A78.354%2C%22minmagnitude%22%3A5%2C%22orderby%22%3A%22magnitude%22%7D%7D&lt;/a&gt; &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnenyog2lxo36xhowoif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcnenyog2lxo36xhowoif.png" alt="image" width="800" height="695"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We found event details , it's coordinate and confirmation from USGS , Now we can move forward to downloading the Sentinel Image &lt;/p&gt;
&lt;h2&gt;
  
  
  Download Image
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Filters
&lt;/h3&gt;

&lt;p&gt;I am using the ASF Data Search by NASA :  &lt;a href="https://search.asf.alaska.edu/#/" rel="noopener noreferrer"&gt;https://search.asf.alaska.edu/#/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l0f1hye132y0kqihfrq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4l0f1hye132y0kqihfrq.png" alt="image" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on filters Nearby search &lt;/p&gt;

&lt;p&gt;Here are the parameters for my Search filters : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Area of Interest&lt;/strong&gt; : POINT(82.153 28.858) (You can convert your coords to WKT with &lt;a href="https://wktmap.com/" rel="noopener noreferrer"&gt;https://wktmap.com/&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start Date&lt;/strong&gt; : 2023/10/01&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End Date&lt;/strong&gt; : 2023/11/30 (To be on safe side I am trying to find image within two months frame to filter out the best image before and after the event )&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Type&lt;/strong&gt; : L1 Single Look Complex (SLC) ( SLC has both amplitude and phase , in GRD we have only amplitude . Here in displacement we need phase hence SLC ) &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beam Mode&lt;/strong&gt; : IW ( Because IW- Interforemetric  covers Orbit and EW- extra wide swath covers Polar region ) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bhykjq3dhfn6lz7m719.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bhykjq3dhfn6lz7m719.png" alt="image" width="647" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source : My Lecturer  Dr.Karima Hadj-Rabah &amp;amp; Dr.Zahra Dabiri&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Polarizations&lt;/strong&gt; : VV ( Polarization doesn't really matter in phase differences , It matters in classification , Here we are selecting VV just to reduce the image size ) &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direction&lt;/strong&gt; : Ascending  ( It doesn't matter as well because at the end we will do geocoding and correct the image so image going to be reotated anyway ) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futhsboyo7qiofqtb7l4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futhsboyo7qiofqtb7l4q.png" alt="image" width="800" height="860"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can get rid of direction , polarization filter if nothing shows up ! It's okay !&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Search Results : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqrgw108velwkpepinpl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuqrgw108velwkpepinpl.png" alt="image" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am selecting two image based on my region of interest : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;After the event&lt;/strong&gt; :: Novemeber 10, 2023&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Before the event&lt;/strong&gt; :: October 17,2023&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;if you look closely to the footprint image top left has my region of interest specifically &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt; : You need to make sure both of the image you are downloading ( before and after ) They should be overlapping , otherwise you won't be able to calculate the displacement between two images if they are not of the same region. Which is why for me I get the before and after image of the same footprint to make sure image match and will be easy to visualize later on stacking &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feq7yjncb4n13tr30bl6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feq7yjncb4n13tr30bl6j.png" alt="image" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You need to create account in order to download the image.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note : &lt;br&gt;
As some of the required steps are computationally intensive, it is good to store the data at a location which offers good reading and writing speed. If your computer has an internal SSD, processing should be done there to ensure best performance. (Credit : ESA Tutorial)&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Data preparation
&lt;/h2&gt;

&lt;p&gt;For data preparation and image processing and analysis I am going to use a tool called &lt;strong&gt;SNAP&lt;/strong&gt; . &lt;strong&gt;SNAP (Sentinel Application Platform)&lt;/strong&gt; is a earth observation processing open-source software developed by ESA &lt;/p&gt;
&lt;h3&gt;
  
  
  Download SNAP :
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://step.esa.int/main/download/snap-download/" rel="noopener noreferrer"&gt;https://step.esa.int/main/download/snap-download/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;SNAP is available for windows , mac and linux &lt;br&gt;
I will be using linux , I downloaded all tollboxes&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffn5bant27tz6e1pple8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffn5bant27tz6e1pple8i.png" alt="image" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setting up SNAP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x esa-snap_all_linux-11.0.0.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./esa-snap_all_linux-11.0.0.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  SNAP Operations
&lt;/h3&gt;

&lt;p&gt;Open Snap it , Interface looks like this &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vagvbht2hnlmlrycwn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vagvbht2hnlmlrycwn5.png" alt="image" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Load image
&lt;/h4&gt;

&lt;p&gt;Our downloaded image would be in .zip folder , &lt;strong&gt;Don't unzip them&lt;/strong&gt; simply open them in SNAP &lt;/p&gt;

&lt;p&gt;&lt;code&gt;File &amp;gt; Open Product &amp;gt; Select your both before after images &amp;gt; Open&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ij26sjlea2ya27i90jj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ij26sjlea2ya27i90jj.png" alt="image" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Split data to region of interest
&lt;/h4&gt;

&lt;p&gt;Goto &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Sentinel-1 TOPS &amp;gt; S-1 Tops Split&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3wsrds8x15ztzvqxvfc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3wsrds8x15ztzvqxvfc.png" alt="image" width="429" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Processing Parameters&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subswath&lt;/strong&gt; : IW1 &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polarisation&lt;/strong&gt; : VV &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bursts&lt;/strong&gt; : 6 to 9 (For my area of interest bursts 6 to 9 covered the area , 
You should select the subswath and bursts accordingly . If you remember my are of intrest was in top left of the image , hence I selected the subswath that covers that area and bursts to minimize it )&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w2orew6ly6upqcq8pkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2w2orew6ly6upqcq8pkj.png" alt="image" width="428" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lets rename the output file for readability &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybomygekktuyh9ql5dbr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybomygekktuyh9ql5dbr.png" alt="image" width="187" height="52"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;You should have the splitted file and now &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx67bcvjxk9d9e3o3nfx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx67bcvjxk9d9e3o3nfx8.png" alt="image" width="794" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visualize the intensity &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Expand the image &amp;gt; Bands &amp;gt; subswath name &amp;gt; intensity_* Double click&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmx5d97ob7b4uggdwcrmy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmx5d97ob7b4uggdwcrmy.png" alt="image" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now repeat the process to split another image as well , Remember to click on the image that you are splitting or change the path &lt;/p&gt;

&lt;p&gt;Visualize the image side by  side from &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Window &amp;gt; Tile Vertically or horizontally&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzz79ue45ezab4zhdg2wg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzz79ue45ezab4zhdg2wg.png" alt="image" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Image preprocessing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Orbit Correction
&lt;/h3&gt;

&lt;p&gt;Technically we suppose that satellite is following perfect line , But in reality there is vibration in satellite and is not really stable . Hence we need to apply a correction in order to account for the orbital path&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Apply Orbit File&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9j4e2qvo40v7iu10bxhx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9j4e2qvo40v7iu10bxhx.png" alt="image" width="312" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to Processing Parameters and Check Do not fail if new orbit file is not found to make sure our process doesn't fail even though orbit file not found ( Because orbit file is only available after two weeks of the acqusition at the moment ) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx9rvj9kqfhexr6tqyme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjx9rvj9kqfhexr6tqyme.png" alt="image" width="265" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repeat the process for another image as well . You should have those two new files in your window&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9lrjgd3esm0u874ns2ap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9lrjgd3esm0u874ns2ap.png" alt="image" width="248" height="238"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Generation of Topographic Interferogram
&lt;/h2&gt;

&lt;p&gt;A topographic interferogram highlights differences in phase caused by terrain elevation. It is a key step in extracting the displacement component. You must align the pixels between two different image ( Before and after one ) to make the comparison hence coregistration &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flipinit1ubbpb7r6i4pt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flipinit1ubbpb7r6i4pt.png" alt="image" width="648" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source ( Dr. Karima )&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Cleanup
&lt;/h4&gt;

&lt;p&gt;Lets Clean up the file we don't need &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Control select&lt;/code&gt; the split file and original image and &lt;code&gt;Right click &amp;gt; Close Products&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;No need to save Hit NO &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjicmh71qdlmqj33fjtd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjicmh71qdlmqj33fjtd.png" alt="image" width="629" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Back Geocoding and Enhanced Spectral Diversity
&lt;/h3&gt;

&lt;p&gt;The S-1 Back Geocoding operator  coregisters the two split products based on the orbit information added in the previous step and information from a digital elevation model (DEM) which is downloaded by SNAP.&lt;/p&gt;

&lt;p&gt;Go to &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Coregistration &amp;gt; S-1 Tops Coregistration &amp;gt; S1- Back Geocoding&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8aoooph4jjy4cqmd9x9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8aoooph4jjy4cqmd9x9v.png" alt="image" width="478" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Add Opened&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuk1kn1i4x9vz6ku310e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuk1kn1i4x9vz6ku310e5.png" alt="image" width="151" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure before image is on the top and after image is at the bottom &lt;/p&gt;

&lt;p&gt;You should see your image there &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqkvwgtwlzpgnx8zfeh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqkvwgtwlzpgnx8zfeh9.png" alt="image" width="484" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;Back-Geocoding&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Select the DEM source : For me I am selecting SRTM 1Sec&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4s3gidlzxojvcthsbfr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4s3gidlzxojvcthsbfr.png" alt="image" width="491" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Press &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;You shuold have new stack image with both of your image stacked together , You shouldbe able to see your before and after image intensity &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffup7cgno37le6rwg2mj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffup7cgno37le6rwg2mj7.png" alt="image" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhanced Spectral diversity
&lt;/h3&gt;

&lt;p&gt;In order to improve the quality of the after image as related to before , Inorder to remove inospheric error this step is used . &lt;/p&gt;

&lt;p&gt;Go to : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Coregistration &amp;gt; S1 TOPS Coregistration &amp;gt; S-1 Enhanced Spectral Diversity&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz27gmj96hdi2zzgtti71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz27gmj96hdi2zzgtti71.png" alt="image" width="308" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It should add a file with filename_*stack_esd&lt;/p&gt;

&lt;p&gt;You can change the visualization parameter from &lt;strong&gt;Color Palette&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F35tw97xqz9v0h08yko6k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F35tw97xqz9v0h08yko6k.png" alt="image" width="423" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0swueeysmmi9lgtyoypm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0swueeysmmi9lgtyoypm.png" alt="image" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Interferogram Formation
&lt;/h3&gt;

&lt;p&gt;This is where we actually calculate the phase difference between two images along with coherence &lt;/p&gt;

&lt;p&gt;Go To  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Interferometric &amp;gt; Products &amp;gt; Interferogram Formation&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ekxflp3hr47y9srlobi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ekxflp3hr47y9srlobi.png" alt="image" width="343" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you check on Processing Parameters : &lt;/p&gt;

&lt;p&gt;You should see subtract flat-earth phase ticked &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6efi2lphqv2rtl8kq542.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6efi2lphqv2rtl8kq542.png" alt="image" width="199" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reminder : Make sure input image for the new step is always from the previous step&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should have new filenamewith_ifg extension&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7x5wxg7y18ioxy1ijdu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7x5wxg7y18ioxy1ijdu.png" alt="image" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  TOPSAR Deburst
&lt;/h3&gt;

&lt;p&gt;To remove the demarcation between the single bursts we use TOPSAR Deburst &lt;/p&gt;

&lt;p&gt;Go TO : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;RADAR &amp;gt; Sentinel 1 - TOPS &amp;gt; S-1 TOPS-Deburst&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v6cvfim5fyvpgmxg6sb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v6cvfim5fyvpgmxg6sb.png" alt="image" width="449" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on Run &lt;/p&gt;

&lt;p&gt;if you visualize the result , it will remove the small black lines between bursts in the image &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vmvt4jomrxo7cfefo9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vmvt4jomrxo7cfefo9l.png" alt="image" width="658" height="832"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Generation of Differential Interferogram
&lt;/h2&gt;

&lt;p&gt;By generating a differential interferogram, we remove the topographic effects, extracting the phase&lt;br&gt;
changes caused by ground displacement. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcebb1rfuic3cnekdu02s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcebb1rfuic3cnekdu02s.png" alt="image" width="800" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source : Dr. Karima&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Interferogram formation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Topographic Phase Removal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GOTO : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Interferometric &amp;gt; Products &amp;gt; Topographic Phase Removal&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9akhwp7e8ce8hz7ys350.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9akhwp7e8ce8hz7ys350.png" alt="image" width="454" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Processing Parameters&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Choose the DEM source : For me I chose SRTM 1sec &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxi6fwqaxereex09eybiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxi6fwqaxereex09eybiy.png" alt="image" width="446" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check Output Topographic Phase band and the elevation band ( Lets visualize the elevation as well ) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjh6n8xbg0uyejifnj7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjh6n8xbg0uyejifnj7f.png" alt="image" width="443" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;I get the output like this along with elevation band &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyt74mvmzjbdeeosycat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyt74mvmzjbdeeosycat.png" alt="image" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Multilooking
&lt;/h3&gt;

&lt;p&gt;We need to create square pixels to make the resolutions same in range(approx 3m) and azimuth (approx 7m). we are used to see pixels in square &lt;/p&gt;

&lt;p&gt;GOTO &lt;/p&gt;

&lt;p&gt;&lt;code&gt;RADAR &amp;gt; SAR utilities &amp;gt; Multilooking&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdl63k25le6f47ghig1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdl63k25le6f47ghig1u.png" alt="image" width="456" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;processing parameters&lt;/strong&gt; and  change number of looks for &lt;strong&gt;range&lt;/strong&gt; and &lt;strong&gt;azimuth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For me I am using &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Range Looks&lt;/strong&gt; : 8 &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azimuth Looks&lt;/strong&gt; : 2 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because it results approx &lt;strong&gt;30m&lt;/strong&gt; resolution which is enough for me because usualy displacement will happen in larger level, You can see the resolution after the value changes&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjrmqws2rxnc1jenkwku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjrmqws2rxnc1jenkwku.png" alt="image" width="440" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how output looks like &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkw2g8v54e1jm6bdohke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkw2g8v54e1jm6bdohke.png" alt="image" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Goldstein Phase Filtering
&lt;/h3&gt;

&lt;p&gt;Lets filter the noise so that we can improve visual interpretability of differential interferogram.&lt;/p&gt;

&lt;p&gt;GOTO : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Interferometric &amp;gt; Filtering &amp;gt; Goldstein Phase Filtering.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ut9tkql583s6z496iji.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ut9tkql583s6z496iji.png" alt="image" width="447" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;processing parameters&lt;/strong&gt; and play with the filter value , For me I am using 0.9 as There is quite some noise in my image  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcyo7ref2u65te2cpbvv8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcyo7ref2u65te2cpbvv8.png" alt="image" width="462" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This is what I got as output , I have some noise in the right bottom part of image : for now it is okay but you can also play with it and increase or decrease the filter &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwi1huga52jef59zsv5r3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwi1huga52jef59zsv5r3.png" alt="image" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Creation of Displacement Map
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Dowload snaphu plugin
&lt;/h3&gt;

&lt;p&gt;The wrapped phase values need to be unwrapped to obtain continuous displacement&lt;br&gt;
measurements.&lt;/p&gt;

&lt;p&gt;For this output : We need this plugin to be installed : &lt;a href="https://step.esa.int/main/snap-supported-plugins/snaphu/" rel="noopener noreferrer"&gt;https://step.esa.int/main/snap-supported-plugins/snaphu/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6mxkzbucx7o2vl2119j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6mxkzbucx7o2vl2119j.png" alt="image" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Debian based distributions, You can install it directly from the apt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;snaphu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Export env for snaphu
&lt;/h3&gt;

&lt;p&gt;Lets create env needed for snaphu &lt;/p&gt;

&lt;p&gt;GO TO &lt;br&gt;
&lt;code&gt;Radar &amp;gt; Interferometric &amp;gt; Unwrapping &amp;gt; SNAPHU Export&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fm4wpqtpb4mswoxbune.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fm4wpqtpb4mswoxbune.png" alt="image" width="698" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;SnaphuExport&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select the folder where output would be stored ( Recommended to create new folder ) , For me I created snaphu-export folder with snaphu_output filename &lt;/p&gt;

&lt;p&gt;Change No of tile rows and tile columns and number of processer based on your laptop spec , For me I used &lt;strong&gt;8 processers&lt;/strong&gt; and &lt;strong&gt;10 rows/column&lt;/strong&gt; . Bearing in mind if you set 1 tile per time it will &lt;code&gt;disable the multiprocesser option&lt;/code&gt; ! It is advised to process tiles in parallel &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcuasnxis4iv82qrmv2yd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcuasnxis4iv82qrmv2yd.png" alt="image" width="694" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Now navigate to the folder you specified you should see following structure &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehgot16m8sizaaymmqhd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehgot16m8sizaaymmqhd.png" alt="image" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now open &lt;code&gt;snaphu.conf&lt;/code&gt; in one of your editor ( Notepad ++ , VSCode , Kate any you prefer ) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhrgkqtwm5p75jupway0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhrgkqtwm5p75jupway0.png" alt="image" width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now Here : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Comment out logfile&lt;/li&gt;
&lt;li&gt;Find the name of coherence file from the folder and Specify it in CORRFILE &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyg1t9cx0z3sf7pdjqtaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyg1t9cx0z3sf7pdjqtaw.png" alt="image" width="287" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your final conf should look like this &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmuwzge00ypbpgwo1jdqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmuwzge00ypbpgwo1jdqi.png" alt="image" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now open terminal in the folder dir , Remember in the folder dir &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmyax128ax41p3sk22rt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmyax128ax41p3sk22rt.png" alt="image" width="800" height="679"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you will find the command on top of the file, Copy &amp;amp; run the command in terminal&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjfg1l2nd3jzj5obzabf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjfg1l2nd3jzj5obzabf.png" alt="image" width="800" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The time differs based on the performance of laptop &amp;amp; the number of tiles you are processing based on your parameter in snaphu export , For me it took 1 min 43 sec &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv89uaj6yu0kjozi17n8j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv89uaj6yu0kjozi17n8j.png" alt="image" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Import from Snaphu
&lt;/h3&gt;

&lt;p&gt;Now lets import the processing output from snaphu &lt;br&gt;
Goto : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Interferometric &amp;gt; Unwrapping &amp;gt; Snaphu Import&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47csmvwjl864gw2pavih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47csmvwjl864gw2pavih.png" alt="image" width="614" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the output file , Remember OUTFILE information is in &lt;code&gt;snaphu.conf&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ficqezqzrljs46doc8ono.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ficqezqzrljs46doc8ono.png" alt="image" width="800" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to : &lt;strong&gt;2 Read-Unwrapped-Phase&lt;/strong&gt; &amp;amp; Open the result from snaphu &lt;/p&gt;

&lt;p&gt;Select &lt;code&gt;.hdr&lt;/code&gt; file format &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hd4iypbjci36oee81hk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hd4iypbjci36oee81hk.png" alt="image" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Snaphu Import&lt;/strong&gt; and Tick on &lt;strong&gt;Don't save wrapped inferogram in the target Product&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fytz3vegmfvwrxrej1ikq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fytz3vegmfvwrxrej1ikq.png" alt="image" width="594" height="112"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Write&lt;/strong&gt; tab &lt;/p&gt;

&lt;p&gt;And edit the name add _unwrapped in the name for disntinction &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fasz49dhngl6gvzea5uq5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fasz49dhngl6gvzea5uq5.png" alt="image" width="624" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This is how my  output looks like &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fanmhkenie4qmkje07kjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fanmhkenie4qmkje07kjw.png" alt="image" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Generate of Displacement Map
&lt;/h3&gt;

&lt;p&gt;This step converts the unwrapped phase into displacement values, enabling the analysis of&lt;br&gt;
ground movement.&lt;/p&gt;

&lt;p&gt;Go to&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Interferometric &amp;gt; Products &amp;gt; Phase to Displacement&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3tqy8c5b8iuitdcb28e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3tqy8c5b8iuitdcb28e.png" alt="image" width="377" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This is how my displacement map looks like &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09abmfxudo1rf9vbrzdf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F09abmfxudo1rf9vbrzdf.png" alt="image" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Terrain Correction
&lt;/h3&gt;

&lt;p&gt;Terrain correction georeferences the displacement map to a coordinate system and removes&lt;br&gt;
distortions caused by topography, ensuring accurate spatial analysis.&lt;/p&gt;

&lt;p&gt;Goto : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Radar &amp;gt; Geometric &amp;gt; Terrain Correction &amp;gt; Range-Doppler Terrain Correction&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2luy6oa4792bwjudrsi3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2luy6oa4792bwjudrsi3.png" alt="image" width="474" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navigate to &lt;strong&gt;Processing Parameters&lt;/strong&gt; and Select &lt;strong&gt;DEM&lt;/strong&gt; , I selected SRTM 1Sec &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhf85mpyau3uqqromo6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhf85mpyau3uqqromo6y.png" alt="image" width="629" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit &lt;strong&gt;Run&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This is what I get as output &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8piw1uuiwfdpe5pf9w75.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8piw1uuiwfdpe5pf9w75.png" alt="image" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lets understand this displacement Map &lt;/p&gt;

&lt;p&gt;I changed the visualization from left bottom window and changed editor to slider &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90bpu34f5eht6ii6q917.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90bpu34f5eht6ii6q917.png" alt="image" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you look into the value , Blue area was the area where terrain went down by approx 16 cm and nearby area terrain raised by 23.7 cm &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm9hrlwzhehcmd7r6i991.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm9hrlwzhehcmd7r6i991.png" alt="image" width="544" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Export displacement Map
&lt;/h3&gt;

&lt;p&gt;Right click on the image &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F78qtk6qrrebeaocy61uy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F78qtk6qrrebeaocy61uy.png" alt="image" width="323" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And Click on Export View as Google Earth KMZ &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19gtgdpv8nzkqukyt3om.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19gtgdpv8nzkqukyt3om.png" alt="image" width="538" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lets visualize this KMZ in QGIS &lt;/p&gt;

&lt;p&gt;Set layer transparency to 50% so that we can visualize area where terrain went down and terrain went up after earthquake &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpn6s34ga9kv0n0isskig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpn6s34ga9kv0n0isskig.png" alt="image" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here is the output and as you can see area is nearly earthquake area and hence we can verify this output makes sense ! &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqhp59fs6jqaaopsrxpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffqhp59fs6jqaaopsrxpt.png" alt="image" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also export image as geotiff and other formats as well &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpjj0yy5wxvwx4kftp8dw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpjj0yy5wxvwx4kftp8dw.png" alt="image" width="591" height="778"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading ! &lt;/p&gt;

&lt;h2&gt;
  
  
  Sources and Credit :
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ZPMRaztNbVU&amp;amp;t=393s" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=ZPMRaztNbVU&amp;amp;t=393s&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dr. Karima Hadj-Rabah&lt;/li&gt;
&lt;li&gt;My classmate Sahar for her help during blog creation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.plus.ac.at/" rel="noopener noreferrer"&gt;Paris - Lodron University , Z-GIS Department&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kshitijrajsharma/horizournal/blob/main/src/content/blog/esa-radar-tutorial.pdf" rel="noopener noreferrer"&gt;ESA Snaphu Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>remotesensing</category>
      <category>gis</category>
      <category>imageprocessing</category>
    </item>
    <item>
      <title>Process multiband rasters (Sentinel-2) with h3 index and create indices</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Sat, 24 Aug 2024 03:20:10 +0000</pubDate>
      <link>https://dev.to/krschap/process-multiband-rasters-sentinel-2-with-h3-index-and-create-indices-bem</link>
      <guid>https://dev.to/krschap/process-multiband-rasters-sentinel-2-with-h3-index-and-create-indices-bem</guid>
      <description>&lt;p&gt;Hi, In previous &lt;a href="https://dev.to/krschap/raster-analysis-using-uber-h3-indexes-and-postgresql-57g9"&gt;blog&lt;/a&gt; we talked about how we can do raster analysis using h3 indexes and postgresql for a single band raster. In this blog we will talk about how we can process multiband raster and create indices with ease. We will be using sentinel-2 image and create NDVI from the processed h3 cells and visualize the results&lt;/p&gt;

&lt;h2&gt;
  
  
  Download sentinel 2 data
&lt;/h2&gt;

&lt;p&gt;We are downloading the sentinel 2 data from &lt;a href="https://apps.sentinel-hub.com/eo-browser/" rel="noopener noreferrer"&gt;https://apps.sentinel-hub.com/eo-browser/&lt;/a&gt; in Pokhara, Nepal Area , Just to make sure lake is in the image grid so that it would be easy for us to validate the NDVI result&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ff0d7b402-d2e7-473b-940e-57f3a5db254c" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ff0d7b402-d2e7-473b-940e-57f3a5db254c" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To download sentinel image with all bands : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need to create an account &lt;/li&gt;
&lt;li&gt;Find the image in your area select the grid that covers your Area of interest &lt;/li&gt;
&lt;li&gt;Zoom to the grid, And click on &lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ff1129d06-12de-4fed-a8ed-34f76a947ede" width="148" height="132"&gt; icon on right vertical bar&lt;/li&gt;
&lt;li&gt;After that go to analytical tab and select all the bands with image format as tiff 32 bit , high resolution , wgs1984 format and all bands checkd&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F2d5d8318-2b71-4daa-b720-8fa046e31f58" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F2d5d8318-2b71-4daa-b720-8fa046e31f58" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also download pregenerated indices such as NDVI , False color tiff only or specific bands whichever best suits your need . We are downloading all the bands as we wanna do the processing by ourselves&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click download&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fd73cfa52-4757-4ca8-9460-d2c0f7dca6ba" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fd73cfa52-4757-4ca8-9460-d2c0f7dca6ba" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Preprocess
&lt;/h2&gt;

&lt;p&gt;We get all the bands as separate tiff from the sentinel as we downloaded raw format &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fd47534e4-4bb4-4331-9faf-de9a5c8c30de" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fd47534e4-4bb4-4331-9faf-de9a5c8c30de" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lets create a composite image : &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This can be done through GIS tools or gdal &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Using &lt;a href="https://gdal.org/programs/gdal_merge.html" rel="noopener noreferrer"&gt;gdal_merge&lt;/a&gt;&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We need to rename the downloaded file to band1,band2 like this to avoid slashes in the filename &lt;br&gt;
Lets process upto band 9 for this exercise , you can choose the band as your requirement&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gdal_merge.py &lt;span class="nt"&gt;-separate&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; sentinel2_composite.tif band1.tif band2.tif band3.tif band4.tif band5.tif band6.tif band7.tif band8.tif band9.tif 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Using QGIS&lt;/strong&gt; : &lt;/li&gt;
&lt;li&gt;Load all individual bands to QGIS &lt;/li&gt;
&lt;li&gt;Go to Raster &amp;gt; Miscellanaeous &amp;gt; Merge&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F579deffc-b5c7-4df0-b28f-79e27b7e4479" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F579deffc-b5c7-4df0-b28f-79e27b7e4479" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;While merging you need to make sure you check 'place each input file in sep band'&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3baf23a5-54c5-48da-a185-622139baf2b1" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3baf23a5-54c5-48da-a185-622139baf2b1" width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Now export your merged tiff to raw geotiff as composite&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure your image is in WGS1984&lt;br&gt;
in our case image is already is in ws1984 so no need for the conversion &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure you don't have any nodata if yes fill them with 0&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  gdalwarp &lt;span class="nt"&gt;-overwrite&lt;/span&gt; &lt;span class="nt"&gt;-dstnodata&lt;/span&gt; 0 &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$input_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;output_file&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_nodata.tif"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Finally make sure your ouput image is in COG
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  gdal_translate &lt;span class="nt"&gt;-of&lt;/span&gt; COG &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$input_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$output_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I am using the &lt;a href="https://github.com/kshitijrajsharma/cog2h3/blob/main/pre.sh" rel="noopener noreferrer"&gt;bash script&lt;/a&gt; provided in cog2he library to automate those&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;bash pre.sh sentinel2_composite.tif
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Process and creation of h3 cells
&lt;/h2&gt;

&lt;p&gt;Now finally as we have done the preprocessing script , lets move forward to compute h3 cells for each bands in the composite cog image &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install cog2h3
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  pip &lt;span class="nb"&gt;install &lt;/span&gt;cog2h3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Export you database credentials
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DATABASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"postgresql://user:password@host:port/database"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run
We are using resolution 10 for this sentinel image, however you will also see in the script itself which will print the optimal resolution for your raster that makes the h3 cell smaller than your smallest of pixel in raster.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  cog2h3 &lt;span class="nt"&gt;--cog&lt;/span&gt; sentinel2_composite_preprocessed.tif &lt;span class="nt"&gt;--table&lt;/span&gt; sentinel &lt;span class="nt"&gt;--multiband&lt;/span&gt; &lt;span class="nt"&gt;--res&lt;/span&gt; 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It took a minute for us to compute and store result in postgresql &lt;/p&gt;

&lt;p&gt;Logs :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2024-08-24 08:39:43,233 - INFO - Starting processing
2024-08-24 08:39:43,234 - INFO - COG file already exists at sentinel2_composite_preprocessed.tif
2024-08-24 08:39:43,234 - INFO - Processing raster file: sentinel2_composite_preprocessed.tif
2024-08-24 08:39:43,864 - INFO - Determined Min fitting H3 resolution for band 1: 11
2024-08-24 08:39:43,865 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:44,037 - INFO - Resampling Done for band 1
2024-08-24 08:39:44,037 - INFO - New Native H3 resolution for band 1: 10
2024-08-24 08:39:44,738 - INFO - Calculation done for res:10 band:1
2024-08-24 08:39:44,749 - INFO - Determined Min fitting H3 resolution for band 2: 11
2024-08-24 08:39:44,749 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:44,757 - INFO - Resampling Done for band 2
2024-08-24 08:39:44,757 - INFO - New Native H3 resolution for band 2: 10
2024-08-24 08:39:45,359 - INFO - Calculation done for res:10 band:2
2024-08-24 08:39:45,366 - INFO - Determined Min fitting H3 resolution for band 3: 11
2024-08-24 08:39:45,366 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:45,374 - INFO - Resampling Done for band 3
2024-08-24 08:39:45,374 - INFO - New Native H3 resolution for band 3: 10
2024-08-24 08:39:45,986 - INFO - Calculation done for res:10 band:3
2024-08-24 08:39:45,994 - INFO - Determined Min fitting H3 resolution for band 4: 11
2024-08-24 08:39:45,994 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:46,003 - INFO - Resampling Done for band 4
2024-08-24 08:39:46,003 - INFO - New Native H3 resolution for band 4: 10
2024-08-24 08:39:46,605 - INFO - Calculation done for res:10 band:4
2024-08-24 08:39:46,612 - INFO - Determined Min fitting H3 resolution for band 5: 11
2024-08-24 08:39:46,612 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:46,619 - INFO - Resampling Done for band 5
2024-08-24 08:39:46,619 - INFO - New Native H3 resolution for band 5: 10
2024-08-24 08:39:47,223 - INFO - Calculation done for res:10 band:5
2024-08-24 08:39:47,230 - INFO - Determined Min fitting H3 resolution for band 6: 11
2024-08-24 08:39:47,230 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:47,239 - INFO - Resampling Done for band 6
2024-08-24 08:39:47,239 - INFO - New Native H3 resolution for band 6: 10
2024-08-24 08:39:47,829 - INFO - Calculation done for res:10 band:6
2024-08-24 08:39:47,837 - INFO - Determined Min fitting H3 resolution for band 7: 11
2024-08-24 08:39:47,837 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:47,845 - INFO - Resampling Done for band 7
2024-08-24 08:39:47,845 - INFO - New Native H3 resolution for band 7: 10
2024-08-24 08:39:48,445 - INFO - Calculation done for res:10 band:7
2024-08-24 08:39:48,453 - INFO - Determined Min fitting H3 resolution for band 8: 11
2024-08-24 08:39:48,453 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:48,461 - INFO - Resampling Done for band 8
2024-08-24 08:39:48,461 - INFO - New Native H3 resolution for band 8: 10
2024-08-24 08:39:49,046 - INFO - Calculation done for res:10 band:8
2024-08-24 08:39:49,054 - INFO - Determined Min fitting H3 resolution for band 9: 11
2024-08-24 08:39:49,054 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:49,062 - INFO - Resampling Done for band 9
2024-08-24 08:39:49,063 - INFO - New Native H3 resolution for band 9: 10
2024-08-24 08:39:49,647 - INFO - Calculation done for res:10 band:9
2024-08-24 08:39:51,435 - INFO - Converting H3 indices to hex strings
2024-08-24 08:39:51,906 - INFO - Overall raster calculation done in 8 seconds
2024-08-24 08:39:51,906 - INFO - Creating or replacing table sentinel in database
2024-08-24 08:40:03,153 - INFO - Table sentinel created or updated successfully in 11.25 seconds.
2024-08-24 08:40:03,360 - INFO - Processing completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Analyze
&lt;/h2&gt;

&lt;p&gt;Since now we have our data in postgresql , Lets do some analysis &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify we have all the bands we processed ( Remember we processed from band 1 to 9 )
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sentinel&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F390e612e-cf2e-4402-b745-27a3ba3578ac" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F390e612e-cf2e-4402-b745-27a3ba3578ac" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compute ndvi for each cell
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;explain&lt;/span&gt; &lt;span class="k"&gt;analyze&lt;/span&gt; 
&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="n"&gt;h3_ix&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;band8&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;band4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;band8&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;band4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;ndvi&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sentinel&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Query Plan :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;QUERY PLAN                                                                                                       |
-----------------------------------------------------------------------------------------------------------------+
Seq Scan on sentinel  (cost=0.00..28475.41 rows=923509 width=16) (actual time=0.014..155.049 rows=923509 loops=1)|
Planning Time: 0.080 ms                                                                                          |
Execution Time: 183.764 ms                                                                                       |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see here for all the rows in that area the calculation is instant . This is true for all other indices and you can compute complex indices join with other tables using the h3_ix primary key and derive meaningful result out of it without worrying as postgresql is capable of handling complex queries and table join.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualize and verification
&lt;/h2&gt;

&lt;p&gt;Lets visualize and verify if the computed indices are true &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create table ( for visualizing in QGIS )
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;ndvi_sentinel&lt;/span&gt;
&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="n"&gt;h3_ix&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;band8&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;band4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;band8&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;band4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;ndvi&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sentinel&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Lets add geometry to visualize the h3 cells
This is only necessary to visualize in QGIS , if you build an &lt;a href="https://github.com/kshitijrajsharma/minimal-h3-mvt-with-fastapi" rel="noopener noreferrer"&gt;minimal API&lt;/a&gt; by yourself you don't need this as you can construct geometry directly from query
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;ndvi_sentinel&lt;/span&gt;  
&lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;geometry&lt;/span&gt; &lt;span class="n"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Polygon&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4326&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="k"&gt;GENERATED&lt;/span&gt; &lt;span class="n"&gt;ALWAYS&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h3_cell_to_boundary_geometry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;STORED&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create index on geometry
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="k"&gt;index&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="n"&gt;ndvi_sentinel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Connect your database in QGIS and visualize the table on the basis of ndvi value
Lets get the area near Fewa lake or cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fe5ec71b9-d56b-4d93-9ad7-ba9b431bbe70" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fe5ec71b9-d56b-4d93-9ad7-ba9b431bbe70" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we know value between -1.0 to 0.1 should represent Deep water or dense clouds&lt;br&gt;
lets see if thats true ( making first category as transparent to see the underlying image ) &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check clouds : &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fd9c4cd44-4526-4a79-9e2c-cb3f8c70c515" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fd9c4cd44-4526-4a79-9e2c-cb3f8c70c515" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check Lake &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ff12bebed-69a8-44ee-aee7-5f36838f53df" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Ff12bebed-69a8-44ee-aee7-5f36838f53df" width="800" height="387"&gt;&lt;/a&gt;&lt;br&gt;
 As there were clouds around the lake hence nearby fields are covered by cloud which makes sense&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F4d06b61f-5648-4c78-9655-82f41304faf7" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F4d06b61f-5648-4c78-9655-82f41304faf7" width="800" height="743"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading ! See you in next blog&lt;/p&gt;

</description>
      <category>gis</category>
      <category>python</category>
      <category>h3index</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Raster Analysis Using Uber h3 indexes and PostgreSQL</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Mon, 12 Aug 2024 13:51:37 +0000</pubDate>
      <link>https://dev.to/krschap/raster-analysis-using-uber-h3-indexes-and-postgresql-57g9</link>
      <guid>https://dev.to/krschap/raster-analysis-using-uber-h3-indexes-and-postgresql-57g9</guid>
      <description>&lt;p&gt;Hi , In this blog we will talk about how we can do Raster analysis with ease using h3 indexes and as a bonus we will also talk about how it can be served as vector tiles and display on the map&lt;/p&gt;

&lt;h2&gt;
  
  
  Objective
&lt;/h2&gt;

&lt;p&gt;For learning, We will do calculation on figuring out how many buildings are there in settlement area determined by ESRI Land Cover. Lets aim of national level data for both vector and raster . &lt;/p&gt;

&lt;h2&gt;
  
  
  Let's first find the data
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Download Raster Data
&lt;/h3&gt;

&lt;p&gt;I have downloaded the settlement area from Esri Land Cover .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://livingatlas.arcgis.com/landcover/" rel="noopener noreferrer"&gt;https://livingatlas.arcgis.com/landcover/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lets download the 2023 year , of size approx 362MB&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fa4611ebb-a2fb-4c00-a490-b3f0798f50f9" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fa4611ebb-a2fb-4c00-a490-b3f0798f50f9"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Download OSM Buildings of Nepal
&lt;/h3&gt;

&lt;p&gt;Source : &lt;a href="http://download.geofabrik.de/asia/nepal.html" rel="noopener noreferrer"&gt;http://download.geofabrik.de/asia/nepal.html&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget http://download.geofabrik.de/asia/nepal-latest.osm.pbf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Preprocess the data
&lt;/h2&gt;

&lt;p&gt;Lets apply some preprocessing to data before actual h3 cell calculations&lt;br&gt;
We will be using &lt;a href="https://gdal.org/index.html" rel="noopener noreferrer"&gt;gdal&lt;/a&gt;  commandline program for this step. &lt;a href="https://gdal.org/download.html" rel="noopener noreferrer"&gt;Install gdal&lt;/a&gt; in your machine &lt;/p&gt;
&lt;h3&gt;
  
  
  Conversion to Cloud Optimized Geotiff
&lt;/h3&gt;

&lt;p&gt;If you are unaware of cog , Checkout here : &lt;a href="https://www.cogeo.org/" rel="noopener noreferrer"&gt;https://www.cogeo.org/&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check if gdal_translate is available
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gdal_translate &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It should print the gdal version you are using &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reproject raster to 4326&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your raster might have different source srs , change it accordingly&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gdalwarp -overwrite esri-settlement-area-kathmandu-grid.tif esri-landcover-4326.tif -s_srs EPSG:32645 -t_srs EPSG:4326
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important : Incase your raster also has nodata , We need to convert it to 0 using -dstnodata 0 to make sure our h3 cells are not being built on nodata area&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gdalwarp -overwrite esri-settlement-area-kathmandu-grid.tif esri-landcover-4326.tif -s_srs EPSG:32645 -t_srs EPSG:4326 -dstnodata 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Now lets convert tif to cloud optimized geotif
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gdal_translate &lt;span class="nt"&gt;-of&lt;/span&gt; COG esri-landcover-4326.tif esri-landcover-cog.tif
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It took approx a minute to convert reprojected tiff to geotiff&lt;/p&gt;

&lt;h3&gt;
  
  
  Insert osm data to postgresql table
&lt;/h3&gt;

&lt;p&gt;We are using &lt;a href="https://osm2pgsql.org/doc/install.html" rel="noopener noreferrer"&gt;osm2pgsql&lt;/a&gt; to insert osm data to our table &lt;br&gt;
&amp;amp; downloaded pbf from &lt;a href="http://www.geofabrik.de/" rel="noopener noreferrer"&gt;geofabrik&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;osm2pgsql &lt;span class="nt"&gt;--create&lt;/span&gt; nepal-latest.osm.pbf &lt;span class="nt"&gt;-U&lt;/span&gt; postgres &lt;span class="nt"&gt;-E&lt;/span&gt; 4326
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;osm2pgsql took 274s (4m 34s) overall.&lt;/p&gt;

&lt;p&gt;You can use geojson files also if you have any using ogr2ogr&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ogr2ogr &lt;span class="nt"&gt;-f&lt;/span&gt; PostgreSQL  PG:&lt;span class="s2"&gt;"dbname=postgres user=postgres password=postgres"&lt;/span&gt; buildings_polygons_geojson.geojson &lt;span class="nt"&gt;-nln&lt;/span&gt; buildings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ogro2gr has wide range of support for &lt;a href="https://gdal.org/drivers/vector/index.html" rel="noopener noreferrer"&gt;drivers&lt;/a&gt; so you are pretty flexible about what your input is  . Output is Postgresql table &lt;/p&gt;

&lt;h2&gt;
  
  
  Calculate h3 indexes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Postgresql
&lt;/h3&gt;

&lt;p&gt;Install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;pgxnclient cmake
pgxn &lt;span class="nb"&gt;install &lt;/span&gt;h3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create extension in your db&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="n"&gt;extension&lt;/span&gt; &lt;span class="n"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="n"&gt;extension&lt;/span&gt; &lt;span class="n"&gt;h3_postgis&lt;/span&gt; &lt;span class="k"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now lets create the buildings table&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE buildings (
  id SERIAL PRIMARY KEY,
  osm_id BIGINT,
  building VARCHAR,
  geometry GEOMETRY(Polygon, 4326)
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insert data to table&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;buildings&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;osm_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;building&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;osm_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;building&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;way&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;planet_osm_polygon&lt;/span&gt; &lt;span class="n"&gt;pop&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;building&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Log and timing :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Updated Rows    8048542
Query   INSERT INTO buildings (osm_id, building, geometry)
    SELECT osm_id, building, way
    FROM planet_osm_polygon pop
    WHERE building IS NOT NULL
Start time  Mon Aug 12 08:23:30 NPT 2024
Finish time Mon Aug 12 08:24:25 NPT 2024
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now lets calculate the h3 indexes for those buildings using centroid . Here 8 is h3 resolution I am working on . Learn more about resolutions &lt;a href="https://h3geo.org/docs/core-library/restable/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALTER TABLE buildings ADD COLUMN h3_index h3index GENERATED ALWAYS AS (h3_lat_lng_to_cell(ST_Centroid(geometry), 8)) STORED;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Raster operations
&lt;/h3&gt;

&lt;p&gt;Install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;h3 h3ronpy rasterio asyncio asyncpg aiohttp pandas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure reprojected cog is in static/&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mv &lt;/span&gt;esri-landcover-cog.tif ./static/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run script provided in repo to create h3 cells from raster . I am resampling by mode method : This depends upon type of data you have . For categorical data mode fits better. Learn more about resampling methods &lt;a href="https://rasterio.readthedocs.io/en/latest/api/rasterio.enums.html#rasterio.enums.Resampling" rel="noopener noreferrer"&gt;here&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;cog2h3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python cog2h3.py &lt;span class="nt"&gt;--cog&lt;/span&gt; esri-landcover-cog.tif &lt;span class="nt"&gt;--table&lt;/span&gt; esri_landcover &lt;span class="nt"&gt;--res&lt;/span&gt; 8 &lt;span class="nt"&gt;--sample_by&lt;/span&gt; mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or using commandline directly&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cog2h3 &lt;span class="nt"&gt;--cog&lt;/span&gt; esri-landcover-cog.tif &lt;span class="nt"&gt;--table&lt;/span&gt; esri_landcover &lt;span class="nt"&gt;--res&lt;/span&gt; 8 &lt;span class="nt"&gt;--sample_by&lt;/span&gt; mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Log :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2024-08-12 08:55:27,163 - INFO - Starting processing
2024-08-12 08:55:27,164 - INFO - COG file already exists: static/esri-landcover-cog.tif
2024-08-12 08:55:27,164 - INFO - Processing raster file: static/esri-landcover-cog.tif
2024-08-12 08:55:41,664 - INFO - Determined Min fitting H3 resolution: 13
2024-08-12 08:55:41,664 - INFO - Resampling original raster to : 1406.475763m
2024-08-12 08:55:41,829 - INFO - Resampling Done
2024-08-12 08:55:41,831 - INFO - New Native H3 resolution: 8
2024-08-12 08:55:41,967 - INFO - Converting H3 indices to hex strings
2024-08-12 08:55:42,252 - INFO - Raster calculation done in 15 seconds
2024-08-12 08:55:42,252 - INFO - Creating or replacing table esri_landcover in database
2024-08-12 08:55:46,104 - INFO - Table esri_landcover created or updated successfully in 3.85 seconds.
2024-08-12 08:55:46,155 - INFO - Processing completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Analysis
&lt;/h2&gt;

&lt;p&gt;Lets create a function to &lt;code&gt;get_h3_indexes&lt;/code&gt; in a polygon&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="k"&gt;REPLACE&lt;/span&gt; &lt;span class="k"&gt;FUNCTION&lt;/span&gt; &lt;span class="n"&gt;get_h3_indexes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt; &lt;span class="n"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="nb"&gt;integer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;RETURNS&lt;/span&gt; &lt;span class="n"&gt;h3index&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="err"&gt;$$&lt;/span&gt;
&lt;span class="k"&gt;DECLARE&lt;/span&gt;
  &lt;span class="n"&gt;h3_indexes&lt;/span&gt; &lt;span class="n"&gt;h3index&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
&lt;span class="k"&gt;BEGIN&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;h3_polygon_to_cells&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;h3_indexes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;h3_indexes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;$$&lt;/span&gt; &lt;span class="k"&gt;LANGUAGE&lt;/span&gt; &lt;span class="n"&gt;plpgsql&lt;/span&gt; &lt;span class="k"&gt;IMMUTABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lets get all those buildings which are identified as built area in our area of interest&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;esri_landcover&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt;
  &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;h3_ix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;ANY&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;get_h3_indexes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="n"&gt;ST_GeomFromGeoJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'{
        "coordinates": [
          [
            [83.72922006065477, 28.395029869336483],
            [83.72922006065477, 28.037312312532066],
            [84.2367635433626, 28.037312312532066],
            [84.2367635433626, 28.395029869336483],
            [83.72922006065477, 28.395029869336483]
          ]
        ],
        "type": "Polygon"
      }'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;cell_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;buildings&lt;/span&gt; &lt;span class="n"&gt;bl&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;bl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Query Plan : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F69b71e89-c677-4f47-9127-5bafde0e2154" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F69b71e89-c677-4f47-9127-5bafde0e2154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This can further be enhanced if added index on h3_ix column of buildings&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;create&lt;/span&gt; &lt;span class="k"&gt;index&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="n"&gt;buildings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When shooting count : there were 24416 buildings in my area with built class classified as from ESRI&lt;/p&gt;

&lt;h3&gt;
  
  
  Verification
&lt;/h3&gt;

&lt;p&gt;Lets verify if the output is true : Lets get the buildings as geojson&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;esri_landcover&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt;
  &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;h3_ix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;ANY&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;get_h3_indexes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="n"&gt;ST_GeomFromGeoJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'{
        "coordinates": [
          [
            [83.72922006065477, 28.395029869336483],
            [83.72922006065477, 28.037312312532066],
            [84.2367635433626, 28.037312312532066],
            [84.2367635433626, 28.395029869336483],
            [83.72922006065477, 28.395029869336483]
          ]
        ],
        "type": "Polygon"
      }'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;cell_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;jsonb_build_object&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s1"&gt;'type'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'FeatureCollection'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'features'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;jsonb_agg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ST_AsGeoJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)::&lt;/span&gt;&lt;span class="n"&gt;jsonb&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;buildings&lt;/span&gt; &lt;span class="n"&gt;bl&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;bl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lets get h3 cells too&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;h3_cell_to_boundary_geometry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;esri_landcover&lt;/span&gt; &lt;span class="n"&gt;el&lt;/span&gt;
  &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;h3_ix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;ANY&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;get_h3_indexes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="n"&gt;ST_GeomFromGeoJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'{
        "coordinates": [
          [
            [83.72922006065477, 28.395029869336483],
            [83.72922006065477, 28.037312312532066],
            [84.2367635433626, 28.037312312532066],
            [84.2367635433626, 28.395029869336483],
            [83.72922006065477, 28.395029869336483]
          ]
        ],
        "type": "Polygon"
      }'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;cell_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;jsonb_build_object&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="s1"&gt;'type'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'FeatureCollection'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="s1"&gt;'features'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;jsonb_agg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ST_AsGeoJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)::&lt;/span&gt;&lt;span class="n"&gt;jsonb&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;t1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc1889d79-c49e-4661-95d5-631ff147b15b" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fc1889d79-c49e-4661-95d5-631ff147b15b"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accuracy can be increased after increasing h3 resolution and also will depend on input and resampling technique&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleanup
&lt;/h2&gt;

&lt;p&gt;Drop the tables we don't need&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;drop&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;planet_osm_line&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;drop&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;planet_osm_point&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;drop&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;planet_osm_polygon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;drop&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;planet_osm_roads&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;drop&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="n"&gt;osm2pgsql_properties&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Optional - Vector Tiles
&lt;/h2&gt;

&lt;p&gt;To visualize the tiles lets quickly build vector tiles using &lt;a href="https://github.com/CrunchyData/pg_tileserv?tab=readme-ov-file" rel="noopener noreferrer"&gt;pg_tileserv&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download pg_tileserv
Download from above provided link or use docker&lt;/li&gt;
&lt;li&gt;Export credentials
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DATABASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgresql://postgres:postgres@localhost:5432/postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Grant our table select permission
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;buildings&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;esri_landcover&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Lets create geometry on h3 indexes for visualization ( You can do this directly from query if you are building tiles from &lt;a href="https://postgis.net/docs/ST_AsMVT.html" rel="noopener noreferrer"&gt;st_asmvt&lt;/a&gt; manually)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;esri_landcover&lt;/span&gt; 
&lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;geometry&lt;/span&gt; &lt;span class="n"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Polygon&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4326&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="k"&gt;GENERATED&lt;/span&gt; &lt;span class="n"&gt;ALWAYS&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h3_cell_to_boundary_geometry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h3_ix&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;STORED&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create index on that h3 geom to visualize it effectively
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;idx_esri_landcover_geometry&lt;/span&gt; 
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;esri_landcover&lt;/span&gt; 
&lt;span class="k"&gt;USING&lt;/span&gt; &lt;span class="n"&gt;GIST&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  ./pg_tileserv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fde0a7993-b2c9-42b8-950e-b41c5c88c642" class="article-body-image-wrapper"&gt;&lt;img alt="image" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fde0a7993-b2c9-42b8-950e-b41c5c88c642"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now you can visualize those MVT tiles based on tiles value or any way you want eg : &lt;a href="https://maplibre.org/martin/using-with-maplibre.html" rel="noopener noreferrer"&gt;maplibre&lt;/a&gt; ! You can also visualize the processed result or combine with other datasets.
This is the visualization I did on h3 indexes based on their cell_value in QGIS
&lt;img alt="image" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fe058651b-9102-4bd7-847b-21b3bc3a4ba9"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  References :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blog.rustprooflabs.com/2022/04/postgis-h3-intro" rel="noopener noreferrer"&gt;https://blog.rustprooflabs.com/2022/04/postgis-h3-intro&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://jsonsingh.com/blog/uber-h3/" rel="noopener noreferrer"&gt;https://jsonsingh.com/blog/uber-h3/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://h3ronpy.readthedocs.io/en/latest/" rel="noopener noreferrer"&gt;https://h3ronpy.readthedocs.io/en/latest/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>postgres</category>
      <category>python</category>
      <category>geospatial</category>
      <category>h3</category>
    </item>
    <item>
      <title>Exploring Overture Map Data</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Sun, 09 Jun 2024 01:22:55 +0000</pubDate>
      <link>https://dev.to/krschap/exploring-overture-map-data-2l49</link>
      <guid>https://dev.to/krschap/exploring-overture-map-data-2l49</guid>
      <description>&lt;p&gt;Welcome ! First lets start with overture , if you don't know what is  Overture Maps Foundation and what it does I strongly recommend you to go through this website : &lt;a href="https://overturemaps.org/" rel="noopener noreferrer"&gt;https://overturemaps.org/&lt;/a&gt; , I tried to build small utilities and hosted them so that readers of this blog also can look into the data and analyze by themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Release Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Overture release&lt;/strong&gt;: 2024-05-16-beta.0&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Objectives
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Primary Objective
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;To perform qualitative and quantitative analysis of Overture map data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Secondary Objectives
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Visualize the releases on a country level.&lt;/li&gt;
&lt;li&gt;Conduct qualitative analysis to identify additions to existing OSM data and differences across countries.&lt;/li&gt;
&lt;li&gt;Facilitate general users in forming their own opinions based on the available data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Approach
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Build a script to retrieve Overture data as geoparquet with multiple themes (streamlining and automating the process).&lt;/li&gt;
&lt;li&gt;Convert geoparquet to geojson.&lt;/li&gt;
&lt;li&gt;Convert flattened geojson to pmtiles.&lt;/li&gt;
&lt;li&gt;Develop a viewer for comparison and loading.&lt;/li&gt;
&lt;li&gt;Automate the entire process with a bash script.&lt;/li&gt;
&lt;li&gt;Compare with population data, existing OSM buildings in the area, and if possible, the number of people per building.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Considerations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Duckdb, overturemaps-py, and GDAL were tested for extraction, with overturemaps-py standing out as simple and perfect. The repo was forked, and enhancements were added to the viewer and filters to support any custom key and value.&lt;/li&gt;
&lt;li&gt;Tippecanoe was used to convert geojsonseq to pmtiles.&lt;/li&gt;
&lt;li&gt;A bash script was used to automate the entire process, making it configurable using config.json (&lt;a href="https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/scripts/base_theme.json" rel="noopener noreferrer"&gt;base&lt;/a&gt; and &lt;a href="https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/scripts/default_theme.json" rel="noopener noreferrer"&gt;default&lt;/a&gt;) for layers, their properties, tile generation settings, combining multiple layers into a single tile, and fetching the right key and value for specific layers.&lt;/li&gt;
&lt;li&gt;The primary statement being validated is: "Overture Maps data will undergo validation checks to detect map errors, breakage, and vandalism to help ensure that map data can be used in production systems."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F363fbb4f-8a46-4e86-b28e-0a0bad12dbc3" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F363fbb4f-8a46-4e86-b28e-0a0bad12dbc3" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Study Areas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Argentina&lt;/li&gt;
&lt;li&gt;Indonesia &amp;amp; Malaysia Area&lt;/li&gt;
&lt;li&gt;Kenya&lt;/li&gt;
&lt;li&gt;Liberia&lt;/li&gt;
&lt;li&gt;Malawi&lt;/li&gt;
&lt;li&gt;Nepal&lt;/li&gt;
&lt;li&gt;Nigeria&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: Covering bounding boxes were drawn to somehow match the country boundary in above listed countries ( this is not true for all of them - actual boundary may differ ). Data on those bbox were downloaded, viewed, analyzed, and compared regarding its distribution and how it fits with the existing population.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F7e038bdd-082d-4c8d-a310-5ff1bc350f8d" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F7e038bdd-082d-4c8d-a310-5ff1bc350f8d" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;View Geojson &lt;a href="https://github.com/kshitijrajsharma/overture-data-analysis-report/blob/master/data/study-area.geojson" rel="noopener noreferrer"&gt;Here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Qualitative Analysis
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Buildings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Buildings seem to have undergone good conflation.&lt;/li&gt;
&lt;li&gt;Offset and merging of ML datasets have been taken care of.&lt;/li&gt;
&lt;li&gt;Buildings present on satellite images seem to be included in the dataset.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F9d2c6e96-2905-4b80-8016-e2fe8e7378f9" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F9d2c6e96-2905-4b80-8016-e2fe8e7378f9" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2Fc18fa3b2-cad6-4d21-9f8e-eba76ff9dcbf" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2Fc18fa3b2-cad6-4d21-9f8e-eba76ff9dcbf" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Roads
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Roads are not cleaned and validated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2Fadcb947e-4cf4-45ea-bf5e-2199c4332c4b" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2Fadcb947e-4cf4-45ea-bf5e-2199c4332c4b" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When a release is published, there are no major enhancements, and orphan roads remain in the datasets.&lt;/li&gt;
&lt;li&gt;Tags are not fixed or validated (For eg: In Nepal, most of the roads were classified as unclassified - same as OSM. Some major roads have inconsistency in trunk and primary). It appears that tags validation is still ongoing or something is not being looked into.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Some Validation Issues
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pular Pisau, Borneo (Near Malaysia):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F665d06de-567d-4b80-b869-42116a77d4ca" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F665d06de-567d-4b80-b869-42116a77d4ca" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Height feature is present in only some buildings. In countries like Nepal, it is minimal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F7a685baa-2a0f-4d5e-babf-e775f1b8bbc0" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2F7a685baa-2a0f-4d5e-babf-e775f1b8bbc0" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Inconsistent tags in road dataset along with orphan roads as mentioned above&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Meanwhile , POI datasets appear to be detailed and populated in most places, making them easily importable into OSM. You need to be aware of confidence though &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2Fdc9e7168-d2cf-4601-adc8-e6d34ff6f135" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkshitijrajsharma%2Foverture-data-analysis-report%2Fassets%2F36752999%2Fdc9e7168-d2cf-4601-adc8-e6d34ff6f135" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Overture datasets stand out well for building footprints and POIs, relatively speaking. Transportation, Land, and Land Use seem somewhat similar to OpenStreetMap. (This is before overture released new land cover datasets which I haven't looked into) &lt;/li&gt;
&lt;li&gt;Validation and conflation are poor in layers other than buildings.&lt;/li&gt;
&lt;li&gt;Good offset alignment with roads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quantitative Analysis
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Buildings
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Google Open Buildings&lt;/th&gt;
&lt;th&gt;%&lt;/th&gt;
&lt;th&gt;Microsoft ML Buildings&lt;/th&gt;
&lt;th&gt;%&lt;/th&gt;
&lt;th&gt;OpenStreetMap (as per Overture info)&lt;/th&gt;
&lt;th&gt;%&lt;/th&gt;
&lt;th&gt;Total Overture Buildings&lt;/th&gt;
&lt;th&gt;Population Estimate&lt;/th&gt;
&lt;th&gt;P.E. (in mil)&lt;/th&gt;
&lt;th&gt;People per Building&lt;/th&gt;
&lt;th&gt;Approx Current OSM Buildings&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Argentina&lt;/td&gt;
&lt;td&gt;34,545,592&lt;/td&gt;
&lt;td&gt;73%&lt;/td&gt;
&lt;td&gt;8,998,855&lt;/td&gt;
&lt;td&gt;19%&lt;/td&gt;
&lt;td&gt;3,457,499&lt;/td&gt;
&lt;td&gt;7%&lt;/td&gt;
&lt;td&gt;47,001,946&lt;/td&gt;
&lt;td&gt;78,765,589&lt;/td&gt;
&lt;td&gt;78.77&lt;/td&gt;
&lt;td&gt;1.68&lt;/td&gt;
&lt;td&gt;3,497,866&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Liberia&lt;/td&gt;
&lt;td&gt;1,557,014&lt;/td&gt;
&lt;td&gt;55%&lt;/td&gt;
&lt;td&gt;144,185&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;td&gt;1,148,863&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;td&gt;2,850,062&lt;/td&gt;
&lt;td&gt;10,157,546&lt;/td&gt;
&lt;td&gt;10.16&lt;/td&gt;
&lt;td&gt;3.56&lt;/td&gt;
&lt;td&gt;1,151,027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Indonesia&lt;/td&gt;
&lt;td&gt;4,314,085&lt;/td&gt;
&lt;td&gt;41%&lt;/td&gt;
&lt;td&gt;2,485,377&lt;/td&gt;
&lt;td&gt;24%&lt;/td&gt;
&lt;td&gt;3,641,263&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;td&gt;10,440,725&lt;/td&gt;
&lt;td&gt;27,523,228&lt;/td&gt;
&lt;td&gt;27.52&lt;/td&gt;
&lt;td&gt;2.64&lt;/td&gt;
&lt;td&gt;3,651,924&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nepal&lt;/td&gt;
&lt;td&gt;26,280,737&lt;/td&gt;
&lt;td&gt;68%&lt;/td&gt;
&lt;td&gt;4,396,928&lt;/td&gt;
&lt;td&gt;11%&lt;/td&gt;
&lt;td&gt;8,078,311&lt;/td&gt;
&lt;td&gt;21%&lt;/td&gt;
&lt;td&gt;38,755,976&lt;/td&gt;
&lt;td&gt;129,874,888&lt;/td&gt;
&lt;td&gt;129.87&lt;/td&gt;
&lt;td&gt;3.35&lt;/td&gt;
&lt;td&gt;8,243,272&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malawi&lt;/td&gt;
&lt;td&gt;8,882,648&lt;/td&gt;
&lt;td&gt;61%&lt;/td&gt;
&lt;td&gt;1,758,044&lt;/td&gt;
&lt;td&gt;12%&lt;/td&gt;
&lt;td&gt;3,927,989&lt;/td&gt;
&lt;td&gt;27%&lt;/td&gt;
&lt;td&gt;14,568,681&lt;/td&gt;
&lt;td&gt;29,256,446&lt;/td&gt;
&lt;td&gt;29.26&lt;/td&gt;
&lt;td&gt;2.01&lt;/td&gt;
&lt;td&gt;3,943,125&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kenya&lt;/td&gt;
&lt;td&gt;20,334,091&lt;/td&gt;
&lt;td&gt;59%&lt;/td&gt;
&lt;td&gt;3,734,399&lt;/td&gt;
&lt;td&gt;11%&lt;/td&gt;
&lt;td&gt;10,414,457&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;td&gt;34,482,947&lt;/td&gt;
&lt;td&gt;75,320,339&lt;/td&gt;
&lt;td&gt;75.32&lt;/td&gt;
&lt;td&gt;2.18&lt;/td&gt;
&lt;td&gt;10,557,014&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nigeria&lt;/td&gt;
&lt;td&gt;50,787,453&lt;/td&gt;
&lt;td&gt;68%&lt;/td&gt;
&lt;td&gt;7,150,013&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;td&gt;16,304,722&lt;/td&gt;
&lt;td&gt;22%&lt;/td&gt;
&lt;td&gt;74,242,188&lt;/td&gt;
&lt;td&gt;252,698,591&lt;/td&gt;
&lt;td&gt;252.70&lt;/td&gt;
&lt;td&gt;3.40&lt;/td&gt;
&lt;td&gt;17,966,401&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Overture release: 2024-05-16-beta.0&lt;/p&gt;

&lt;p&gt;PS: Population and Current OSM Buildings Estimate is from Kontour API&lt;br&gt;&lt;br&gt;
People per building =  Population Estimate on the Area  / Total Overture Buildings &lt;br&gt;
Approx current OSM buildings = Fetched from the OSM at current date to validate the overture osm building numbers may not match as overture kept snapshot of osm and by the time of this analysis buildings might increase or decrease in osm, should give rough idea&lt;br&gt;&lt;br&gt;
Analysis was not done on exact country boundary, its bbox taken in the area as provided in the geojson and shared the same geometry using different parameters&lt;/p&gt;

&lt;h3&gt;
  
  
  Places distribution based on confidence value
&lt;/h3&gt;

&lt;p&gt;According to overture confidence values in places is about the existence of the place itself, which means if it has 50 % that means there is 50/50 chance that place exists there. I tried to see how much can I trust may be those above 80 % ? or 70 so I tried to figure out how much data is there in this threshold . &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Country&lt;/th&gt;
&lt;th&gt;Above 90 % Confidence&lt;/th&gt;
&lt;th&gt;80-90 %&lt;/th&gt;
&lt;th&gt;70-80 %&lt;/th&gt;
&lt;th&gt;50-70 %&lt;/th&gt;
&lt;th&gt;Below 50 %&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Argentina&lt;/td&gt;
&lt;td&gt;0.438&lt;/td&gt;
&lt;td&gt;17.3557&lt;/td&gt;
&lt;td&gt;1.6333&lt;/td&gt;
&lt;td&gt;38.1136&lt;/td&gt;
&lt;td&gt;42.4594&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Indonesia &amp;amp; Malaysia Area&lt;/td&gt;
&lt;td&gt;0.1412&lt;/td&gt;
&lt;td&gt;12.3793&lt;/td&gt;
&lt;td&gt;0.3198&lt;/td&gt;
&lt;td&gt;47.8856&lt;/td&gt;
&lt;td&gt;39.2741&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kenya&lt;/td&gt;
&lt;td&gt;0.2197&lt;/td&gt;
&lt;td&gt;12.8847&lt;/td&gt;
&lt;td&gt;1.8883&lt;/td&gt;
&lt;td&gt;41.023&lt;/td&gt;
&lt;td&gt;43.9842&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Liberia&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;10.0957&lt;/td&gt;
&lt;td&gt;0.3299&lt;/td&gt;
&lt;td&gt;58.1326&lt;/td&gt;
&lt;td&gt;31.4418&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malawi&lt;/td&gt;
&lt;td&gt;0.1422&lt;/td&gt;
&lt;td&gt;12.9801&lt;/td&gt;
&lt;td&gt;1.2269&lt;/td&gt;
&lt;td&gt;51.0135&lt;/td&gt;
&lt;td&gt;34.6373&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nepal&lt;/td&gt;
&lt;td&gt;0.4004&lt;/td&gt;
&lt;td&gt;11.0466&lt;/td&gt;
&lt;td&gt;5.9221&lt;/td&gt;
&lt;td&gt;33.3404&lt;/td&gt;
&lt;td&gt;49.2904&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nigeria&lt;/td&gt;
&lt;td&gt;0.1078&lt;/td&gt;
&lt;td&gt;10.2943&lt;/td&gt;
&lt;td&gt;1.3312&lt;/td&gt;
&lt;td&gt;38.5526&lt;/td&gt;
&lt;td&gt;49.7141&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.2070428571&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.43377143&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.807357143&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;44.00875714&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;41.54304286&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;P.S. Table is in percentage distribution for example in Argentina out of POI available there only 0.4 percentage of data with more than 90 % confidence &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;From the qualitative analysis conducted on different parts of the world, the data is impressive in terms of offset management when different sources are grouped. I am preetty amazed to see the coverage along with conflation and offset  accross the different parts of the world. Buildings seem to be well-matched with each other on an obsolete level, and when ground truth checking with Esri imagery, it covers most places. However, when combined with the tabular analysis in most of the places people-per-building ratio are not that realistic yet they are not worst too (seems it doesn't left out and covers most , it might have some extra clutter buildings). For example, in Argentina, it's 1.68 which seems pretty low. It appears that OpenStreetmap buildings are preserved and are as told (given highest priority - if you look into current approx OSM buildings and numbers included in overture they are quite similar). A massive number of AI building footprints are added to the datasets, whereas google buildings are almost more than 50% in all of the area (Except Indonesia). For roads, validation is still poor, especially in areas like Nepal and Indonesia, where many orphan roads exist in the datasets.I expect tags validation and cleaning specially on road which is not case in the areas I looked into , tags such as primary roads , trunk , unclassified roads are inconsistent. The POI datasets seem well-detailed, and there is great potential for them to be added to OSM after validation, as RapID already has this functionality. While doing so you need to be aware that higher confidence data is low as compared to number of datasets available . On average : only 0.2 % are of above 90 % and 12.4 % on 80 - 90 percent confidence values so even though total row numbers are large better to filter them based on higher confidence. 3D height data is not impressive in the developing countries yet I was surprised to see some of them in countries like Nepal. Building footprints seems to be well defined and aligned with transportation layers exploring the potential that it might be quickly checked validated and used in case of pre-disaster response.&lt;/p&gt;

&lt;p&gt;This analysis might be incomplete and is my only personal view with quick analysis on the area I looked into. It is suggested to form your own opinion using the developed tools and data shared as shown in the video by the end of this blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools and Resources Developed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Querier
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://queryparquet.streamlit.app/" rel="noopener noreferrer"&gt;https://queryparquet.streamlit.app/&lt;/a&gt;  (Tool might go in sleep mode if there is no usage , Please wake it up if needed)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz24up5e1md33na2j2nl3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz24up5e1md33na2j2nl3.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code : &lt;a href="https://github.com/kshitijrajsharma/qrp" rel="noopener noreferrer"&gt;https://github.com/kshitijrajsharma/qrp&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Features : *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allows you to shoot custom queries on the parquet data , such as stats , how many rows are their which are from microsoft , meta etc &lt;/li&gt;
&lt;li&gt;Default query to get stats based on the source &lt;/li&gt;
&lt;li&gt;Provides a box where you can form your own query if you like &lt;/li&gt;
&lt;li&gt;Integrates OpenStreetMap current buildings and population of the area (based on bbox supplied) so that you can use it in your query for the analysis &lt;/li&gt;
&lt;li&gt;Supports remote parquet url as input and prepopulates the study area that I did &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Example dirty query to get % distribution for places
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2tu466zoe9x2dui0ik0h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2tu466zoe9x2dui0ik0h.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Viewer
&lt;/h3&gt;

&lt;p&gt;I made a quick dirty viewer to do qualitative analysis, The viewer can directly be accessed from Querier or also available here: &lt;a href="https://hotosm.github.io/overture-to-tiles/" rel="noopener noreferrer"&gt;https://hotosm.github.io/overture-to-tiles/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqko9wyts1582xl75rrl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqko9wyts1582xl75rrl.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Viewer supports remote pmtiles and custom styling , Example viewer with default styling : &lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fargentina%2Fpmtiles" rel="noopener noreferrer"&gt;https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fargentina%2Fpmtiles&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Source code : &lt;a href="https://github.com/kshitijrajsharma/overture-to-tiles/tree/master/docs" rel="noopener noreferrer"&gt;https://github.com/kshitijrajsharma/overture-to-tiles/tree/master/docs&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Viewer features : *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simultaneously view the place in OpenStreetMap , Overture and ESRI satellite image &lt;/li&gt;
&lt;li&gt;Open all layers in OpenStreetMap Editor : RapID &lt;/li&gt;
&lt;li&gt;Allows user to download geoparquet of source&lt;/li&gt;
&lt;li&gt;Query the attributes and tile bounds &lt;/li&gt;
&lt;li&gt;Custom styling supports for the vector layers like this : &lt;a href="https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/docs/styles/default.js" rel="noopener noreferrer"&gt;https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/docs/styles/default.js&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Supports remote pmtiles using url parameter &lt;/li&gt;
&lt;li&gt;Toggle vector layers and their classes along with OpenStreetMap and  ESRI Satellite image&lt;/li&gt;
&lt;li&gt;3D view with both overture height data and OSM no of floors data&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quickly View Study Area Datasets
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fargentina%2Fpmtiles" rel="noopener noreferrer"&gt;Argentina&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Findonesia%2Fpmtiles" rel="noopener noreferrer"&gt;Indonesia &amp;amp; Malaysia Area&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fkenya%2Fpmtiles" rel="noopener noreferrer"&gt;Kenya&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fliberia%2Fpmtiles" rel="noopener noreferrer"&gt;Liberia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fmalawi%2Fpmtiles" rel="noopener noreferrer"&gt;Malawi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fnepal%2Fpmtiles" rel="noopener noreferrer"&gt;Nepal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hotosm.github.io/overture-to-tiles/?url=https%3A%2F%2Fstaging-raw-data-api.s3.amazonaws.com%2Fdefault%2Foverture%2F2024-05-16-beta.0%2Fnigeria%2Fpmtiles" rel="noopener noreferrer"&gt;Nigeria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Extractor
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/scripts/Readme.md" rel="noopener noreferrer"&gt;https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/scripts/Readme.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kshitijrajsharma/overture-to-tiles/" rel="noopener noreferrer"&gt;https://github.com/kshitijrajsharma/overture-to-tiles/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Extractor features : *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automates extraction from overture data using custom theme : &lt;a href="https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/scripts/base_theme.json" rel="noopener noreferrer"&gt;https://github.com/kshitijrajsharma/overture-to-tiles/blob/master/scripts/base_theme.json&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Supports children layers to be combined into single pmtiles layer &lt;/li&gt;
&lt;li&gt;s3 upload &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick demo how you can visualize and analyze the data
&lt;/h3&gt;

&lt;p&gt;Watch Video : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kshitijrajsharma/overture-data-analysis-report/assets/36752999/31eb9917-3fff-42db-9f5d-d2c53649bb81" rel="noopener noreferrer"&gt;https://github.com/kshitijrajsharma/overture-data-analysis-report/assets/36752999/31eb9917-3fff-42db-9f5d-d2c53649bb81&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources and Credits :
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pmtiles , Overture-py , Tippecanoe , Overture-docs , RapID&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I welcome your thoughts and comments. &lt;/p&gt;

</description>
      <category>overture</category>
      <category>openstreetmap</category>
      <category>vectortiles</category>
    </item>
    <item>
      <title>Install latest gdal in debian</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Tue, 14 May 2024 13:37:48 +0000</pubDate>
      <link>https://dev.to/krschap/install-latest-gdal-in-debian-69g</link>
      <guid>https://dev.to/krschap/install-latest-gdal-in-debian-69g</guid>
      <description>&lt;p&gt;Hi , I am writting short steps about how to install latest gdal version in your debian stable. &lt;/p&gt;

&lt;p&gt;By the time I am writting this post the default version of gdal available in the stable debian bookworm is 3.6.5 but I want the latest one . Usually gdal will publish the latest release in the unstable source first. if you wanna get your hand on it either you need to install it from the source or you can install it from the unstable source. I will list how to install from unstable source only for the gdal&lt;/p&gt;

&lt;p&gt;1) First update sour package list &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

 &lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/apt/sources.list


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Add following line &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

deb http://deb.debian.org/debian/ unstable main contrib non-free


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;2) Update package list &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;3) Now install gdal-bin using unstable source&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; unstable gdal-bin


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;4) Check your gdal version &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

ogrinfo &lt;span class="nt"&gt;--version&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnd7l6ti22akczdrkdslz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnd7l6ti22akczdrkdslz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hurray ! &lt;/p&gt;

&lt;h2&gt;
  
  
  Install gdal python
&lt;/h2&gt;

&lt;p&gt;if you want python installation of gdal then you can follow following steps : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install gdal dev libraries 
```bash
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;sudo apt-get install libgdal-dev&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Export env variables 
```bash


export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Now install gdal using pip 
```bash
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;pip install gdal==&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are all set ! 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>debian</category>
      <category>gdal</category>
      <category>gis</category>
    </item>
    <item>
      <title>Share Postgresql from Windows to WSL Linux</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Tue, 14 May 2024 12:02:33 +0000</pubDate>
      <link>https://dev.to/krschap/share-postgresql-postgis-port-from-windows-to-wsl-linux-2i5i</link>
      <guid>https://dev.to/krschap/share-postgresql-postgis-port-from-windows-to-wsl-linux-2i5i</guid>
      <description>&lt;p&gt;Hi , I am writting this short tutorial about how to share your  current postgresql with postgis extension installed in your windows system with WSL. We will use networking share method. &lt;br&gt;
For me , I needed to Install postgersql on my harddisk and I had it already before installing WSL and in need of sharing . I am documenting the steps you can take if you wanna download and install it in windows&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install and remember your postgresql and postgis version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I followed graphical installation method to install postgis postgresql bundle in my windows &lt;br&gt;
Download the Installer : &lt;br&gt;
&lt;a href="https://www.enterprisedb.com/downloads/postgres-postgresql-downloads"&gt;https://www.enterprisedb.com/downloads/postgres-postgresql-downloads&lt;/a&gt; &lt;br&gt;
Installing postgresql 15 in my case &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Postgis extension from stack builder &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can follow this awesome &lt;a href="https://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_tut01"&gt;tutorial&lt;/a&gt; in case you get lost&lt;/p&gt;

&lt;p&gt;Once you have postgresql on your windows up and running , Now we need to access it from the WSL we have &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install postgresql client in your wsl
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;poststgresql-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Lets configure network mode in wslconfig &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In your windows terminal (Inside Default profile : for eg : In my case C:\Users\mouse)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl nano .wslconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[wsl2]
networkingMode=mirrored
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Check the connection
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; psql &lt;span class="nt"&gt;-h&lt;/span&gt; localhost &lt;span class="nt"&gt;-p&lt;/span&gt; 5432 &lt;span class="nt"&gt;-U&lt;/span&gt; postgres &lt;span class="nt"&gt;-d&lt;/span&gt; postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Restart WSL
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--shutdown&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you should be able to connect to  your windows localhost from your WSL.&lt;/p&gt;

</description>
      <category>wsl</category>
      <category>windows</category>
      <category>linux</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Monitor GPU Usage in WSL debian</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Tue, 14 May 2024 08:52:46 +0000</pubDate>
      <link>https://dev.to/krschap/install-nvtop-in-wsl-debian-1g2g</link>
      <guid>https://dev.to/krschap/install-nvtop-in-wsl-debian-1g2g</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/Syllo/nvtop" rel="noopener noreferrer"&gt;NVTOP&lt;/a&gt; is like htop but for your graphics module . In this short tutorial I will share how to install nvtop in wsl debian &lt;/p&gt;

&lt;p&gt;OS used : &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat /etc/os-release&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;1) Verify your graphics driver&lt;br&gt;
In my case I have nvidida graphics &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

nvidia-smi


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It should display details about your graphics , if not first install it&lt;/p&gt;

&lt;p&gt;2) Edit your debian source list to include non-free releases &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/apt/sources.list


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;2) Modify the source list and add following &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

deb http://deb.debian.org/debian/ bookworm main contrib non-free-firmware


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;3) Get update &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt get update


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;4) Now you can install nvtop &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nvtop


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now hit &lt;code&gt;nvtop&lt;/code&gt; and you are all set !! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzix26djow1vmzccplctj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzix26djow1vmzccplctj.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wsl</category>
      <category>windows</category>
      <category>linux</category>
      <category>nvidia</category>
    </item>
    <item>
      <title>Install Debian in Different Location -WSL Windows</title>
      <dc:creator>Kshitij Raj Sharma</dc:creator>
      <pubDate>Tue, 14 May 2024 08:17:16 +0000</pubDate>
      <link>https://dev.to/krschap/install-debian-in-different-location-in-wsl-windows-39mh</link>
      <guid>https://dev.to/krschap/install-debian-in-different-location-in-wsl-windows-39mh</guid>
      <description>&lt;p&gt;I was trying to install Debian in different location rather than the C drive . Sharing the steps I took . &lt;/p&gt;

&lt;p&gt;OS : Windows 11 &lt;br&gt;
WSL Version : Wsl 2 &lt;/p&gt;

&lt;p&gt;1) First install Debian as by default in C&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--install&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; Debian
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) Shut down wsl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--shutdown&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) Export Debian to your desired location &lt;/p&gt;

&lt;p&gt;In my case its E :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; wsl &lt;span class="nt"&gt;--export&lt;/span&gt; Debian E:&lt;span class="se"&gt;\w&lt;/span&gt;sl_export&lt;span class="se"&gt;\d&lt;/span&gt;ebian-ex.tar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4) Now unregister your old Debian from wsl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--unregister&lt;/span&gt; Debian
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5) Now import Debian to the Disk&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --import Debian "E:\wsl\Debian" "E:\wsl_export\debian-ex.tar"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6) Cleanup &lt;br&gt;
You can remove your backup now and set Debian as default&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --set-default Debian
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Extra tips&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To make your user in debian superuser : 
After migrating you might loose your default login using username you created before . &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Login to Debian , By default you will be logged in as root and hit following&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Change default user
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano /etc/wsl.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace username with your username&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[user]
default=username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;code&gt;wsl --shutdown&lt;/code&gt; and login debian again you should be logged in as your default user with sudo access &lt;/p&gt;

</description>
      <category>windows</category>
      <category>linux</category>
      <category>debian</category>
      <category>wsl</category>
    </item>
  </channel>
</rss>
