Want to learn
#Python
for
#Geospatial
Analysis? We just launched our "Python Foundation for Spatial Analysis" course on YouTube - completely free and optimized for self-study. Check out the playlist at (1/n)
After hearing from many people who were interested in my
#QGIS
and
#Python
courses, but could not afford the online instructor-led classes - I have made all 6 courses available for free for self-study. Full material and data packages are at
Happy to announce my new course Mapping and Data Visualization with
#Python
. This has been in the making for over a year and excited to be able to share it with the world! The full course is free for self-study and shared under an open license. An overview thread below 👇 1/n
I finally managed to finish my most ambitious project to date. Years in the making, I am releasing the full material for my 'End-to-End Google
#EarthEngine
' course under an open license - allowing anyone to learn, teach and adapt it. Check it out at
Happy to announce my new 'Introduction to
#QGIS
' course. This has been in the works for a while and is now available online. Completely free for self-study with step-by-step instructions. Check out the course at
Built a script today to create a building density map for anywhere in the world using Google
#EarthEngine
and the
@Microsoft
Global ML Building Footprints dataset from the GEE Community Catalog. Try out the script on your own region of interest
Want to learn advanced
#QGIS
for spatial analysis and data visualization? We are launching our Advanced QGIS course on YouTube and have designed a challenge
#30DaysOfQGIS
. Spend 30 mins every day for the next 30 days learning QGIS. Interested? Check out
I'll be teaching
#QGIS
Network Analysis tomorrow for
#QGISOpenDay
event. We will cover a range of problems including routing, location-allocation, and service area analysis. The event is open to everyone and will be live-streamed. Learn more
New Post: Mapping Building Density with Open Building Datasets and Google
#EarthEngine
. The post contains open-source
#GEE
code and step-by-step instructions to create building density maps using Microsoft and Google's Open Buidings datasets.
Want to take your Google
#EarthEngine
skills to the next level over the holidays? I just published a video series with 3 End-to-End Guided Projects that can help you learn and master
#GEE
with step-by-step instructions - completely free and with open-source code. 1/n
I am teaching a workshop on
#QGIS
Automation using Actions at
#qgisuserconf2023
today. Lots of new examples of adding a bit of 'magic' to your QGIS projects. If you are not at the conference, you can still follow along with the materials at
A thread about the newly launched
#DynamicWorld
landcover dataset by
#Google
. I had early access and explored this dataset in detail. You may be very excited about this dataset, but likely for the wrong reasons. Sharing some insights, potential use cases, and pitfalls. 1/n
Releasing a new Google
#EarthEngine
workshop titled "Creating Publication Quality Charts with GEE" with completely open materials and code. A structured guide to help you create beautiful and informative visualizations from climate and earth observation datasets. A thread (1/n)👇
Wrote a new tutorial on Creating Maps with
#GeoPandas
where I introduce the main concepts and show how to create map layouts, multi-layer maps, and add labels. If you have found it hard to get started with matplotlib for mapping in
#Python
, check this out
New
#QGIS
tutorial: Calculating Street Intersection Density for
#walkability
analysis and
#transportation
network design. Using OpenStreetMap dataset and native QGIS tools, you can compute this measure for any city in the world. Here's a step by step guide
I am happy to launch my course "Google
#EarthEngine
for Water Resources Management" covering real-world applications of
#GEE
. For the first time - we are also releasing videos along with code for all the modules - completely free. Get started at (1/n)
We have put together comprehensive learning plans to help you master
#QGIS
,
#Python
,
#EarthEngine
, and
#GDAL
from our vast collection of courses, tutorials, and videos. Get started at
If you have been wanting to learn GEE - check out my new Introduction to Google
#EarthEngine
workshop - which now includes professionally edited videos from the
#GeoforGood23
conference. Suitable for beginners with no programming background. Get started at
Turn contour lines into a 3D map with
#QGIS
expressions. Want to try it out? Step-by-step instructions in our new tutorial in collaboration with
@newgeographer2
Never thought I would see this day! NRSC has implemented ISRO's India Space Policy 2023 and started releasing 5m resolution ResourceSat2 LISS4 imagery as open data. You can sign up and download data from NRSC's Bhoonidhi Portal (1/n)
Helping a student detect central-pivot irrigation farms from a Landsat NDVI image. This was done in just 1 minute using the Segment Geospatial
#Python
package in Colab . Check the tutorials by
@giswqs
at
As promised, I am sharing my revamped course materials - freely and under an open license. First is 'PyQGIS in a Day'. that starts from basics and cover all topics related to Python programming in
#QGIS
. Would be useful for trainers and learners alike.
New Tutorial: Calculating Raster Area in
#QGIS
A step-by-step guide on quantifying land-use within a region using QGIS Processing Tools using the amazing ESA WorldCover dataset.
New Post: Learn how to do regressions in Google
#EarthEngine
and best practices for setting up your machine learning workflow. The post shows how to predict Aboveground Biomass by fusing Sentinel-2 data with GEDI L4A. (1/n)
We are making the videos for our course on data visualization with Google
#EarthEngine
available to everyone for self study. Access the complete playlist with ad-free videos at
Releasing a new Google
#EarthEngine
workshop titled "Creating Publication Quality Charts with GEE" with completely open materials and code. A structured guide to help you create beautiful and informative visualizations from climate and earth observation datasets. A thread (1/n)👇
I am leaving
#Google
today after 15 years! From a lucky break in 2005 getting hired through Keyhole acquisition, it's been an amazing journey working on Earth Enterprise, Maps, Maps Engine, Earth Outreach and Earth Engine. Full steam ahead on now.
I conducted a workshop on Monitoring Land Use Land Cover Changes with Google
#EarthEngine
and
#DynamicWorld
at
#InGARSS2023
. Sharing the full workshop material that has some new monitoring examples with JS and
#Python
code. See the thread below for details and explanation 👇(1/n)
Happy to announce a major update to my 'Mastering GDAL Tools' course. The course now includes OGR tools and has new sections for downloading WMS layers, Working with KML files, and much more. Completely free and shared under an open license. Check out
My "Mastering
#GDAL
Tools" course is now available on YouTube! This course is the result of my 20 years of experience processing large volumes of imagery and building data pipelines. Check out the playlist at . More in the thread below (1/n)
Many researchers are interested in studying the effects of climate change and the urban environment. Thanks to open-source
#EarthEngine
code and
#Landsat
data, it is now possible to study these interactions at high spatial and temporal resolutions. A thread with code below 1/n
Spent the day building the code for automatic extraction and creation of spectral profile plots for different landcover classes in Google
#EarthEngine
. Quite a complex workflow but quite pleased with the results. Code with documentation available at
New Post: Automated Coastline Extraction from Satellite Images using Google
#EarthEngine
. This was a long pending post where I outline the methodology and share code for implementation in
#GEE
.
#QGIS
Pro Tip: The Processing Toolbox has a built-in algorithm for calculating the 'Pole of Inaccessibility' for polygon layers. This is desirable over a plain centroid for many situations.
Coastline Detection Fun using Google Earth Engine. Spent a few days building a
#GEE
script to automatically extract coastline from satellite imagery - all in GEE. A proper blog post coming soon but thought of sharing for some early feedback. More details and code below. (1/n)
New Post: I share my experience of attending the
#QGIS
International User Conference 2023 along with some resources from the talks and workshops presented at the conference.
#GIS
Pro Tip: Need to deal with topology issues or data gaps in your layers? Mapshaper is THE best open-source tool out there to fix them - without needing to install anything or uploading your data. Head over to
The video recording of my full workshop on "Monitoring Land Use Land Cover Changes with Google Earth Engine" delivered at
#InGARSS2023
is now available. The workshop contains 3 case studies with both Javascript and Python code. Access the video at
Finally managed to publish code for a most user-requested
#EarthEngine
analysis. Applying Savitzky-Golay Filter on noisy and cloud-masked NDVI time series at each pixel. Pre-process images and apply the SG filter from OEEL by
@mathieuGravey
. Code at
New
#opensource
#QGIS
tutorial! With many open landcover datasets now readily available - this was a popular request from users to learn how to analyze LULC rasters with QGIS. Check out this step-by-step guide with urban planning use cases.
A long-overdue blog post summarizing
#GIS
Applications in Urban Planning in 6 thematic areas with concrete examples on how to model and solve them using
#QGIS
and open-datasets.
Another important launch at
#GeoForGood23
. A new cloud mask dataset for Sentinel-2 called CloudScore+. I am impressed at its ability to generate clean and very precise masks for clouds and shadows. Much more accurate than current methods.
My favorite algorithm for automated detection of water from optical satellite imagery is 'waterdetect' . I implemented it in Google
#EarthEngine
so you can run this at scale. Check out my video explanation with a link to the code at
Heading out to Netherlands for the
#QGIS
International User Conference! Looking forward to meeting all the geo peeps Stay tuned for updates from
#qgisuserconf2023
Just published a long-awaited
#QGIS
tutorial showing how to use the powerful Aggregate (Dissolve-with-Statistics) algorithm in
#QGIS
for calculating area-weighted means. Open hydrological datasets and open-source tools for computing areal precipitation
Spent the Christmas break playing with the recently released
#LISS4
satellite imagery from
#ISRO
and am happy to share
#Python
open-source code using
#XArray
and
#Dask
for fast parallel processing of large datasets. A thread with details (1/n)
Sharing my thoughts and advice for anyone looking to start a career in the
#geospatial
industry in a 10-minute video. Check out the "Essential Geospatial Skills for Students and Researchers" video at and slides at . Agree/Disagree?
Running
#GDAL
commands in a Notebook! Built a notebook showing how to install and run GDAL programs and also integrate them with
#Python
workflows. You can try the entire content of my Mastering GDAL Tools course in this Colab notebook
I finally managed to write one of the most requested
#QGIS
tutorial on Multi Criteria Overlay Analysis. It is one of the basic GIS topics, but wasn't easy to translate these to step-by-step guide using QGIS. Feedback welcome!
I was looking forward to teaching my new 'Intro to Spatial Data' with
#QGIS
class today, but had to cancel the workshop due to COVID19. Nevertheless, I am sharing my materials openly for learners worldwide who may benefit from it
#QGIS
Pro Tip: Square Buffers! Buffers need not always be round. If you want to create a buffer zone around land parcels - a square buffer is more appropriate. Use the 'Miter' join style to create a buffer with edges that are offset from the polygon edges.
New
#SpatialAnalysis
Challenge: Can you figure out a workflow to connect each building's road-facing edge to the nearest point on the street segment? Use your favorite spatial analysis tool and sample data at Read the thread below for more details
Just published! A
#EarthEngine
guided project on LandCover Analysis. These video tutorials with open-source code show how to work with landcover data in GEE. Starting from very basics to some advanced map/reduce code for large-scale analysis. Check out
Some Saturday morning 'Action'. A user wanted to highlight all points within a certain distance when you select a line from another layer in
#QGIS
. Wrote a bit of PyQGIS to create an action to do just that. Code here
#QGIS
Pro Tip: Want to see selected features in a different style than the default? Use the Rule-based styling with the expression is_selected() = True to render selected features differently. You can also change color from Project → Properties → General → Selection Color
New
#QGIS
Tutorial in our series exploring creative use of expressions for visualization with
@newgeographer2
. We show how to use geometry generator symbol layer to transform contour lines and create a stunning 3D visualization just from contour lines.
I put together a learning plan for each of the technologies I teach. This takes all of my open learning materials and gives a structured guide to work through them. Check it out and let me know what you think
#QGIS
,
#GEE
,
#EarthEngine
,
#Python
,
#GDAL
New
#QGIS
Tutorial: Basic Filtering and Styling with Expressions contributed by
@newgeographer2
. Glad to have Steve share his cartography tricks in this simple walkthrough that explores QGIS expressions for filtering data and creating a beautiful map.
New
#QGIS
tutorial. This new tutorial is adapted from our urban planning course and shows how to access data from an ArcGIS REST server in directly in QGIS and create a land-use map. Step-by-step instructions at
#QGIS
Pro Tip: Want to find the nearest roads for a point layer? Use 'Join Attributes by Nearest'. Gets you the distance as well as attributes of the nearest feature. Even better - use the 'Create points layer from table' and 'Join by Hub Lines' to visualize the results.
I will be teaching Advanced Vector Operations using
#EarthEngine
today at
@EEFAbook
Author-led training. I will cover how to visualize vector data, create maps, do spatial queries, and perform spatial joins at a global scale! Register and join for free at
I gave a talk on Time-Series Processing using Google
#EarthEngine
at
#GeoforGood22
focused on understanding joins to effectively solve many challenging problems. If you want to level up your
#GEE
skills - do check out the video recording of the session
I just published 3 brand new tutorials related to Network Analysis in
#QGIS
. First one shows how to visualize a road network and uses built-in processing tools to do basic routing
I am teaching a month-long course with
@AurozOgra
offered via the University of Johannesburg. This course is the result of months of work developing 100+ scenarios where GIS - particularly
#QGIS
can be applied in Urban and Regional Planning. A thread 👇
Join me to learn all about
#QGIS
Actions at the
#QGISOpenDay
event tomorrow! I'll cover Actions from the very basics and shows some fun demos of how you can automate your GIS workflows with a bit of action magic! YouTube Livestream Link at
New Post: Teaching Remote Sensing to Kids. Sharing my experience teaching Kids about Satellites and Earth Observation. I also share my content for other educators to use and adapt. Check out the post at
Save the date: I will be presenting at the next
#QGIS
Open Day on 25 August 2023 on the topic "Solving Complex Spatial Analysis Problems with QGIS". The session will be live-streamed and recorded. Check out more details and local times at
Absolute honor to meet
@giswqs
in-person who has inspired me and countless others with his skill and generosity. In words of one of my students "
@giswqs
is my favorite person on the internet!"
New Post: Running
#QGIS
algorithms and models on the command-line with the qgis_process utility. I cover examples for both Windows and Mac that will help you get started and automate your QGIS workflows. Check out the post and let me know your thoughts.
Published my first YouTube video. A 45-min lecture on 'Introduction to Remote Sensing' that is almost entirely taught using pictures and charts. Hope you like it. The slide-deck here
Registrations are open for the next cohort of our most popular course End-to-End Google Earth Engine. Join this 3-week live online instructor-led program to learn
#GEE
from the ground up using both
#Javascript
and
#Python
. Register at
New tutorial: Cleaning Up Vectorized Polygons using
#Mapshaper
. Filter/Clean/Update & Dissolve 100k polygons in under 5 seconds using the awesome open-source tool. Check out the video
#QGIS
Actions are my favorite way to automate tasks using
#Python
in QGIS. Built a new action today to select first- and second-degree neighbor polygons from a layer. Simple, yet magical. Check out the step-by-step instructions with
#PyQGIS
code
#QGIS
Pro Tip: You can use the 'Execute SQL' processing algorithm to run SQL queries on ANY vector layer within QGIS. Here's an example of calculating group statistics on a vector layer. This also allows you to run SQL queries in a model.
Whenever I show
#QGIS
editing tools to someone it blows their mind. But they can be hard to use, so I am making these mini videos on using them. Check out this new one published today. Using the Vertex Tool to Edit Geometries (QGIS Advanced Data Editing)
My 3yo daughter always asked for her own 'Q' t-shirt whenever she saw me wearing the 'classic'
#QGIS
shirt. I finally relented and got her a custom t-shirt printed. Proud dad moment when I overheard her explain the t-shirt to a friend "you can make maps with it" 😀
New Post: GDAL and Google Cloud Storage (GCS). GDAL can directly read or write data to a cloud-storage bucket. The tricky part is setting up authentication. I document and explore best practices for using
#GoogleCloud
Storage with
#GDAL
Tools.
#GDAL
Tip: If you are dealing with compressed aerial or drone imagery, you may end up with edge artifacts in the mosaics. This is caused by JPEG compression and is hard to clean up.
@GdalOrg
provides a handy 'nearblack' program to remove them. See
Learn how to compute Vegetation Condition Index (VCI) and Temperature Condition Index (TCI) for drought monitoring using open-source Google
#EarthEngine
code. Code and Video Guide
Why anyone doing data processing, especially GIS folks, should learn scripting. A user sent me a ASCII file of 2.5D polygons in an esoteric format wanting to open in
#QGIS
. 15-lines of Python code to create a nice CSV with WKT geometries and you are done!
Happy to announce that my company Spatial Thoughts LLP is now a sustaining member of the
#QGIS
project! QGIS is a critical piece of software for the open-source geospatial ecosystem. If your organization uses QGIS - please encourage them to support it!
Part-1 of new series exploring the Google Earth Engine plugin for
#QGIS
. Here I show how to extract a NDVI time series for a farm and render a map template in QGIS to create an animation.
@gena_d
During my
#QGIS
class yesterday, the participants were interested in more remote sensing tools, so I did a demo of the Google Earth Engine plugin for QGIS. Needless to say, everyone was blown away!
Continuing my series to explain the most frequently encountered challenges faced by beginners in Google
#EarthEngine
, here's a new post on techniques for calculating areas - including formatting and post processing of the results
@EarthEngineBot
Today's ChatGPT win! Needed to use a color ramp from QGIS in a Javascript map and a single prompt did the perfect conversion saving me a lot of data wrangling.
New
#QGIS
tutorial: Learn how to create stunning visualization of topography using a hex grid and creative uses of QGIS expressions. A step-by-step guide with expression magic contributed by
@newgeographer2
. Check out the tutorial at
Detecting when a pond/reservoir was created using Earth Engine and Global Surface Water dataset across the globe with just a few lines of code. Example script showing aquaculture ponds and when the water was first detected at those pixels
#GEE
#QGIS
Pro Tip: A proportional circle map is a great way to turn boring spreadsheets into informative visualization. Use 'data-defined override' to set the size of the symbol from a field and 'data-defined size legend' to add a legend.
#QGIS
Pro Tip: The Processing Toolbox has an algorithm 'Geometry by Expression' that can be used to create layers from coordinates stored in the attribute table. Here's an example of importing a plain CSV file with bounding box coordinates as a polygon layer using an expression.
We have been modernizing and updating our
#QGIS
urban planning course material and publishing them as individual tutorials making them more accessible. Check out the newly published tutorial on "Determining Landuse Buffer Zones"
New Post: Split Polygons into Equal Parts using
#QGIS
. While I miss having an iterator within the QGIS Modeler, this post shows how one can use the 'Feature Iterator' to run a model on each polygon of a layer and then merge the results.
The whole course is organized as a series of
#Jupyter
notebooks that can be run on
#Colab
with zero configuration. I hope this makes the exercises approachable to beginners. Check out the full course on our OpenCourseWare site and start learning!
My
#Python
Data Visualization class has a lot of fun with this notebook I put together to explore
#Contextily
and
#Matplotlib
. You can choose from a variety of basemaps and create a hi-res stitched image. Try it out and share your result in the thread!
#QGIS
Pro Tip: The Processing Algorithm "Save vector features to file" can be used to append features to existing layers. Perfect for ETL workflows to update a database from a model. Example of appending some new road features to an existing layer inside a GeoPackage!
I am hosting a live online class this Saturday called 'Automating GIS workflows with QGIS'. This is a 1.5 hour class at a US-friendly time where I'll teach you how to get more productive and automate spatial analysis. No coding required! Sign-up now!
The most requested
#QGIS
3 update for the python plugin tutorial is now live. This was one of the toughest ones to produce as it is a complex topic addressed at beginners. Would appreciate feedback. Thanks to
@ijturton
for helping jump-start this update.