Today getting a good raster processing environment is not so difficult. The computers are cheaper, storage components are bigger and prices are lower than any time before. Internet is full of tutorials and tips for people who want to start building their own remote sensing lab. This post will reintroduce three most common open-source raster and vector processing libraries which anyone can use – GDAL, RSGISLib Python library and Orfeo Toolbox.
In this article I have used a 64bit Lubuntu environment in Virtualbox with 2GB RAM and 10GB SATA space dedicated.
Installing GDAL
One of the amazing thing about Ubuntu is that has its own application channel or package archive (PPA) dedicated to spatial analysis and application. It’s called UbuntuGIS. Adopting the original DebianGIS, the stable platform of UbuntuGIS has lot of features providing all the stable releases while the unstable version has all the latest packages and libraries.
Geospatial Data Abstraction Library (GDAL) is a set of open-source command-line spatial data translation and analysis toolset for many data format. The easiest way to install GDAL
with native Python of Lubuntu, use this line
sudo apt-get install python-gdal
And to get GDAL
’s command line utility use this.
sudo apt-get install gdal-bin
Windows users can use a very useful little installer called OSGEO4W which can be used to install GDAL and other important utilities. Here is an amazing tutorial to install GDAL with Python binding in windows.
Making use of GDAL
To get a few of the basic information let’s use the gdalinfo
utility.
>>>import os >>>dataset = "/home/sunbeam/Workspace/LT51370432006355BKT00/LT51370432006_stacked.TIF" >>>os.system('gdalinfo '+ dataset) Driver: GTiff/GeoTIFF Files: /home/sunbeam/Workspace/LT51370432006355BKT00/LT51370432006_stacked.TIF Size is 7991, 7111 Coordinate System is: PROJCS["WGS 84 / UTM zone 46N", GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",93], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], PARAMETER["false_northing",0], UNIT["metre",1, AUTHORITY["EPSG","9001"]], AUTHORITY["EPSG","32646"]] Origin = (142485.000000000000000,2825415.000000000000000) Pixel Size = (30.000000000000000,-30.000000000000000) Metadata: AREA_OR_POINT=Point Image Structure Metadata: INTERLEAVE=PIXEL Corner Coordinates: Upper Left ( 142485.000, 2825415.000) ( 89d26'38.08"E, 25d30'10.41"N) Lower Left ( 142485.000, 2612085.000) ( 89d29'51.97"E, 23d34'47.43"N) Upper Right ( 382215.000, 2825415.000) ( 91d49'39.47"E, 25d32'28.94"N) Lower Right ( 382215.000, 2612085.000) ( 91d50'43.54"E, 23d36'54.22"N) Center ( 262350.000, 2718750.000) ( 90d39'12.82"E, 24d33'52.18"N) Band 1 Block=7991x1 Type=Float32, ColorInterp=Gray Band 2 Block=7991x1 Type=Float32, ColorInterp=Undefined Band 3 Block=7991x1 Type=Float32, ColorInterp=Undefined Band 4 Block=7991x1 Type=Float32, ColorInterp=Undefined Band 5 Block=7991x1 Type=Float32, ColorInterp=Undefined Band 6 Block=7991x1 Type=Float32, ColorInterp=Undefined
Quite self-explanatory. GDAL
can also access Landsat .tar.gz archive.
gdalinfo /landsat/LT51370432006355BKT00.tar.gz/LT51370432006355BKT00_B1.TIF
GDAL
scripting environment can be accessed inside python with os.system
. Using GDALWARP
you can batch reproject many file at once.
gdalwarp -t_srs '+proj=utm +zone=46 +datum=WGS84' raw_spot.tif utm46.tif
Getting RSGISLib
and GDAL
with Miniconda
If you want to make your setup sandboxed and isolated from the default Lubuntu Python environment you might want to use Miniconda. Miniconda is a Python distribution platform and also a lighter version of a more robust platform called Anaconda. It’s completely free and can be used with both Python 2.x and 3.x in both x86 and x64 OS. RSGISLib
is a python library for satellite image processing and analysis. Unfortunately RSGISLIB
has some complication with Anaconda, so I used Miniconda. Miniconda comes with the mighty CONDA
command tool so you can always install and update libraries you need. To install RSGISLib
simply hit this line in the terminal
conda install –c osgeo rsgislib
This should download and install all the necessary libraries to your system. But Ubuntu users may face some dependency issue for DGAL
. For Ubuntu users, use these command before conda
command
sudo apt-get install libgdal1-dev sudo apt-get install libgeos-dev
RSGISLib
is only available for Linux and OSX users, windows users will have to compile from source.
Making use of RSGISLib
Not only for preprocessing, RSGISLib
can be used to do quite high level of raster analysis, image segmentation, LiDAR processing, vector processing and other useful stuff.Here is a small example to mosaic a set of KEA images in a folder.
import rsgislib from rsgislib import imageutils import glob # Search for all files with the extension 'kea' inputList = glob.glob('./TestOutputs/Tiles/*.kea') outImage = './TestOutputs/injune_p142_casi_sub_utm_mosaic.kea' backgroundVal = 0. skipVal = 0. skipBand = 1 overlapBehaviour = 0 gdalformat = 'KEA' datatype = rsgislib.TYPE_32FLOAT imageutils.createImageMosaic(inputList, outImage, backgroundVal, skipVal, skipBand, overlapBehaviour, gdalformat, datatype)
To give projection to an image using another one use this.
from rsgislib import imageutils inputImage = 'image_without_projection.kea' refImage = 'image_with_projection.kea' imageutils.copyProjFromImage(inputImage, refImage)
The segutils
tool can be used for OBIA and image classification
#/usr/bin/env python from rsgislib.segmentation import segutils inputImage = 'palsar_hhhv.kea' clumpsFile = 'palsar_hhhv_clumps_elim_final.kea' meanImage = 'palsar_hhhv_clumps_elim_final_mean.kea' # Run segmentation segutils.runShepherdSegmentation(inputImage, clumpsFile,meanImage, numClusters=100, minPxls=100)
These segments can be used for further analysis with attribution and feature extraction.