Land Use/Land Cover Change Detection in Python
Published on by Gajanan Kothawade, Graduate Research Assistant, Washington State University, Pullman in Non Profit
It is easy to perform land use/land cover change detection in any GIS software like ArcGIS, QGIS, but difficult when we want to integrate/deploy it to the development platform.
To resolve this issue it's better to use any programming language.
How can I perform LULC change detection analysis in Python?
Taxonomy
- GIS
- Hydrological Modelling
- Hydrological Modelling
- Land & Water Development
- Land Use
- Water Software
- Software Solutions
- r programming
4 Answers
-
You don't mention scale or if you already have appropriate land use data classified by others, but you do mention deployment. If you want open source tools to create web services based on land cover change, you might consider the Django-raster package (https://github.com/geodesign/django-raster). It lets you create tiled map services feeding slippy-maps, or raster polygon area statistics as tables or json. If you don't need that level of control, you could use a spatial web service like ArcGIS Online (ESRI), or Data Basin (https://databasin.org).
If you don't actually have the change data classified, but instead have raw pixels, then you need classification tools. For programmatic classification of multispectral imagery, we use and recommend scikit-learn (http://scikit-learn.sourceforge.net). Its got a steep learning curve, but once over the hump supports a huge range of state-of-the-art classification techniques (SVM, Random Forests, etc). You can get excellent land cover results at 10m resolution with Sentinel-2 (free 13-band imagery from ESA). Better resolution than Landsat and 3x more frequent coverage, but same principles apply.
Keep in mind that scikit-learn and similar classifiers work well only when spectral color at pixel level is enough to separate classes. If your 'change' is harder, imagery shallower, or in a place with lots of clouds and atmospheric interference, then you need approaches like atmospheric correction and deep learning. PlanetLabs and similar high-res imagery fit here. Online platforms for this are only just emerging, but check out Google's Earth Engine (https://earthengine.google.com) and DigitalGlobe's GBDX (https://platform.digitalglobe.com/gbdx/).
Lastly, for hydrological classifications, we've had some success that using vegetation and impervious cover indices to generate basic hydro model inputs. You can get a long way with the NDVI (normalized vegetation difference index), for example. This avoids the supervised classification step, and just uses "band math" within a single image to show relative greenness. If you ultimately need impervious cover plus vegetation aggregated per sub catchment, such as for SWMM, then you can save substantial time simply thresholding indices "by eye." You don't get the confidence intervals of a formal supervised classification, but can get a near-immediate results on very recent imagery.
-
Remote Sensing (RS) and Geographic Information System (GIS) are now providing new tools for advanced ecosystem management. The collection of remotely sensed data facilitates the synoptic analyses of Earth - system function, patterning, and change at local, regional and global scales over time; such data also provide an important link between intensive, localized ecological research and regional, national and international conservation and management of biological diversity Digital change detection techniques by using multi-temporal satellite imagery helps in understanding landscape dynamics.Supervised classification methodology has been employed using maximum likelihood technique in ERDAS 9.3 Software. The images of the study area were categorised into five different classes namely vegetation, agriculture, barren, built-up and water body. The results indicate that during the last two decades, vegetation and built-up land have been increased by 3.51% (9.39 km2) and 3.55% (9.48 km2) while agriculture, barren land and water body have decreased by 1.52% (4.06 km2), 5.46% (14.59 km2) and 0.08% (0.22 km2), respectively.
Software Used
Basically, five software were used for this project viz;
(a) ArcView 3.2a – this was used for displaying and subsequent processing and enhancement of the image. It was also used for the carving out of Ilorin region from the whole Kwara State imagery using both the admin and local government maps.
(b) ArcGIS – This was also used to compliment the display and processing of the data
(c) Idrisi32 – This was used for the development of land use land cover classes and subsequently for change detection analysis of the study area.
(d) Microsoft word – was used basically for the presentation of the research.
- Microsoft Excel was used in producing the bar graph.
Land cover refers to the physical characteristics of earth’s surface, captured in the distribution of vegetation, water, soil and other physical features of the land, including those created solely by human activities e.g., settlements. While land-use refers to the way in which land has been used by humans and their habitat, usually with accent on the functional role of land for economic activities. The land use/cover pattern of a region is an outcome of natural and socio-economic factors and their utilization by man in time and space. Information on land use/cover and possibilities for their optimal use is essential for the selection, planning and implementation of land use schemes to meet the increasing demands for basic human needs and welfare.
-
We process land use dat for use with integrated hydrologic models like MF-OWHM (One Water) so contact us if interested to know more at the US Geological Survey at rthanson@usgs.gov
-
I am assuming that you just want to find the difference between two images. In that case import both the images using gdal and read them as numpy arrays. After that you can play anything between the two numpy arrays (Cell by cell comparison , statistics etc) .
you need gdal and numpy to do this.