pkcomposite(1)

โœจ pkcomposite(1) โ€” NAME โœจ

pkcomposite โ€” program to mosaic and composite geo-referenced images ๐Ÿ’–


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

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

๐ŸŒธ DESCRIPTION ๐ŸŒธ

okay so bestie, pkcomposite is the girl who can {mosaic} and {composite} a whole pile of (georeferenced) raster datasets at once. ๐Ÿ’…

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. no cap ๐Ÿซถ

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

๐Ÿ‘‘ OPTIONS ๐Ÿ‘‘

  • -i filename, --input filename โ€” Input image file(s). If input contains multiple images, a multi-band output is created ๐ŸŒˆ
  • -o filename, --output filename โ€” Output image file ๐Ÿ’พ
  • -b band, --band band โ€” band index(es) to crop (leave empty if all bands must be retained)
  • -dx xres, --dx xres โ€” Output resolution in x (in meter) (empty: keep original resolution)
  • -dy yres, --dy yres โ€” Output resolution in y (in meter) (empty: keep original resolution)
  • -e vector, --extent vector โ€” get boundary from extent from polygons in vector file
  • -cut, --crop_to_cutline โ€” Crop the extent of the target dataset to the extent of the cutline โœ‚๏ธ
  • -eo options, --eo options โ€” Special extent options controlling rasterization: ATTRIBUTE|CHUNKYSIZE|ALL_TOUCHED|BURN_VALUE_FROM|MERGE_ALG, e.g., -eo ATTRIBUTE=fieldname
  • -m mask, --mask mask โ€” Use the first band of the specified file as a validity mask (0 is nodata)
  • -msknodata value, --msknodata value โ€” Mask value not to consider for composite
  • -mskband value, --mskband value โ€” Mask band to read (0 indexed)
  • -ulx ULX, --ulx ULX โ€” Upper left x value bounding box
  • -uly ULY, --uly ULY โ€” Upper left y value bounding box
  • -lrx LRX, --lrx LRX โ€” Lower right x value bounding box
  • -lry LRY, --lry LRY โ€” Lower right y value bounding box
  • -cr rule, --crule rule โ€” Composite rule (overwrite, maxndvi, maxband, minband, mean, mode (only for byte images), median, sum ๐Ÿงฎ
  • -cb band, --cb band โ€” 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
  • -srcnodata value, --srcnodata value โ€” invalid value for input image
  • -bndnodata band, --bndnodata band โ€” Bands in input image to check if pixel is valid (used for srcnodata, min and max options)
  • -min value, --min value โ€” flag values smaller or equal to this value as invalid.
  • -max value, --max value โ€” flag values larger or equal to this value as invalid.
  • -dstnodata value, --dstnodata value โ€” nodata value to put in output image if not valid or out of bounds.
  • -r resampling_method, --resampling-method resampling_method โ€” Resampling method (near: nearest neighbor, bilinear: bi-linear interpolation).
  • -ot type, --otype type โ€” Data type for output image ({Byte / Int16 / UInt16 / UInt32 / Int32 / Float32 / Float64 / CInt16 / CInt32 / CFloat32 / CFloat64}). Empty string: inherit type from input image
  • -of GDALformat, --oformat GDALformat โ€” Output image format (see also gdal_translate(1)). Empty string: inherit from input image
  • -co NAME=VALUE, --co NAME=VALUE โ€” Creation option for output file. Multiple options can be specified. โœจ
  • -a_srs EPSG:number, --a_srs EPSG:number โ€” 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)
  • -v, --verbose โ€” verbose ๐Ÿ—ฃ๏ธ

๐ŸŒˆ Advanced options ๐ŸŒˆ

  • -file, --file โ€” write number of observations (1) or sequence nr of selected file (2) for each pixels as additional layer in composite. Default: 0
  • -w weight, --weight weight โ€” 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. โš–๏ธ
  • -c name, --class name โ€” 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.
  • -ct filename, --ct filename โ€” colour table in ASCII format having 5 columns: id R G B ALFA (0: transparent, 255: solid) ๐ŸŽจ
  • -align, --align โ€” Align output bounding box to first input image
  • -scale value, --scale value โ€” Scale value output=scale*input+offset
  • -off value, --offset value โ€” Offset value output=scale*input+offset
  • -d description, --description description โ€” Set image description

๐Ÿ’– EXAMPLE ๐Ÿ’–

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

๐ŸŽ€ FAQ ๐ŸŽ€

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 โœจ


okay that's literally the whole page bestie, you're so welcome ๐Ÿ’œ this was pkcomposite(1), dated 01 January 2025 โ€” go mosaic something iconic, periodt ๐Ÿฆ‹๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from