DOKK / manpages / debian 12 / pktools / pkcomposite.1.en
pkcomposite(1) pkcomposite(1)

pkcomposite - program to mosaic and composite geo-referenced images


pkcomposite
-i input [-i input] -o output [options] [advanced options]

pkcomposite can be used to {mosaic} and {composite} multiple (georeferenced) raster datasets. A mosaic can merge images with different geographical extents into a single larger image. Compositing resolves the overlapping pixels according to some rule (e.g, the median of all overlapping pixels). This utility is complementary to GDAL, which currently does not support a composite step. Input datasets can have different bounding boxes and spatial resolutions.

Example: Calculate the maximum NDVI composite of two multispectral input images (e.g., red is band 0 and near infrared is band 1)

pkcomposite -i input1.tif -i input2.tif -o output.tif -cr maxndvi -cb 0 -cb 1

Example: Calculate the minimum nadir composite of two input images, where the forth band (b=3) contains the view zenith angle

pkcomposite -i input1.tif -i input2.tif -o minzenith.tif -cr minband -cb 3

Example: Calculate the minimum of two input images in all bands

pkcomposite -i input1.tif -i input2.tif -o minimum.tif -cr minallbands

Input image file(s). If input contains multiple images, a multi-band output is created
Output image file
band index(es) to crop (leave empty if all bands must be retained)
Output resolution in x (in meter) (empty: keep original resolution)
Output resolution in y (in meter) (empty: keep original resolution)
get boundary from extent from polygons in vector file
Crop the extent of the target dataset to the extent of the cutline
Special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname
Use the first band of the specified file as a validity mask (0 is nodata)
Mask value not to consider for composite
Mask band to read (0 indexed)
Upper left x value bounding box
Upper left y value bounding box
Lower right x value bounding box
Lower right y value bounding box
Composite rule (overwrite, maxndvi, maxband, minband, mean, mode (only for byte images), median, sum
band index used for the composite rule (e.g., for ndvi, use --cband=0 --cband=1 with 0 and 1 indices for red and nir band respectively
invalid value for input image
Bands in input image to check if pixel is valid (used for srcnodata, min and max options)
flag values smaller or equal to this value as invalid.
flag values larger or equal to this value as invalid.
nodata value to put in output image if not valid or out of bounds.
Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation).
Data type for output image ({Byte / Int16 / UInt16 / UInt32 / Int32 / Float32 / Float64 / CInt16 / CInt32 / CFloat32 / CFloat64}). Empty string: inherit type from input image
Output image format (see also gdal_translate(1)). Empty string: inherit from input image
Creation option for output file. Multiple options can be specified.
Override the spatial reference for the output file (leave blank to copy from input file, use epsg:3035 to use European projection and force to European grid)
verbose

Advanced options

write number of observations (1) or sequence nr of selected file (2) for each pixels as additional layer in composite. Default: 0
Weights (type: short) for the composite, use one weight for each input file in same order as input files are provided). Use value 1 for equal weights.
classes for multi-band output image: each band represents the number of observations for one specific class. Use value 0 for no multi-band output image.
colour table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid)
Align output bounding box to first input image
Scale value output=scale*input+offset
Offset value output=scale*input+offset
Set image description

Create a composit from two input images. If images overlap, keep only last image (default rule)

pkcomposite -i input1.tif -i input2.tif -o output.tif

Create a composit from two input images. Values of 255 in band 1 (starting from 0) are masked as invalid. Typically used when second band of input image is a cloud mask

pkcomposite -i input1.tif -i input2.tif -srcnodata 255 -bndnodata 1 -dstnodata 0 -o output.tif

Create a maximum NDVI (normalized difference vegetation index) composit. Values of 255 in band 0 are masked as invalid and flagged as 0 if no other valid coverage. Typically used for (e.g., MODIS) images where red and near infrared spectral bands are stored in bands 0 and 1 respectively. In this particular case, a value of 255 in the first input band indicates a nodata value (e.g., cloud mask is coded within the data values).

pkcomposite -i input1.tif -i input2.tif -cr maxndvi -rb 0 -rb 1 -srcnodata 255 -bndnodata 0 -dstnodata 0 -o output.tif

Create a composite image using weighted mean: output=(3/4*input1+6/4*input2+3/4*input2)/3.0

pkcomposite -i input1.tif -i input2.tif -i input3.tif -o output.tif -cr mean -w 0.75 -w 1.5 -w 0.75

Create a median composit of all GTiff images found in current directory that cover (at least part of) the image coverage.tif. Values smaller or equal to 0 are set as nodata 0 (default value for -dstnodata)

pkcomposite -i large.tif $(for IMAGE in *.tif;do pkinfo -i $IMAGE --cover $(pkinfo -i coverage.tif -bb);done) -cr median -min 0 -o output.tif

Q1. First question

A1. For individual invalid value(s) in input image, use -srcnodata

Usage: use unique value for each invalid bands set in --bndnodata or use a single value that will be applied to all invalid bands

Example:

pkcomposite -i input1.tif -i input2.tif -o output.tif -srcnodata 0 -srcnodata 255 -bndnodata 0 -bndnodata 1

will consider 0 in band 0 and 255 in band 1 of input images as no value

pkcomposite -i input1.tif -i input2.tif -o output.tif -srcnodata 0 -bndnodata 0 -bndnodata 1

will consider 0 in both bands 0 and 1 of input images as no value

For range(s) of invalid values in input images: use -min (--min) and -max (--max) Usage: use unique range set for each invalid bands set in -bndnodata

Example:

pkcomposite -i input1.tif -i input2.tif -o output.tif -min 0 -max 200 -min 0 -max 2 -bndnodata 0 -bndnodata 1

will consider all negative values in band 0 and 1 of input images as invalid. Values larger or equal to 200 in band 0 will be invalid, as well as values larger or equal to 2 in band 1

Q2. If I take the mean value as composit rule for multi-band input images, will the output image contain the mean value of overlapping images in each band?

A2. Yes

01 December 2022