pktools
2.6.7
Processing Kernel for geospatial data
|
extract pixel values from raster image using a raster sample
Usage: pkextractimg -i input -s sample -o output
Options: [-c class]* [-t threshold]* [-f format] [-ft fieldType] [-lt labelType] [-b band]*
Advanced options: [-sband band -eband band]* [-bndnodata band [-srcnodata value]*] [-bn attribute] [-cn attribute] [-down value]
The utility pkextractimg extracts pixel values from an input raster dataset, based on the locations you provide via a sample file. The sample should be a raster dataset with categorical (integer) values. The typical use case is a land cover map that overlaps the input raster dataset. The utility then extracts pixels from the input raster for the respective land cover classes. To select a random subset of the sample raster dataset you can set the threshold option -t with a percentage value. You can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es). As output, a new copy of the vector file is created with an extra attribute for the extracted pixel value. For each raster band in the input image, a separate attribute is created. For instance, if the raster dataset contains three bands, three attributes are created (b0, b1 and b2).
-short
or --long
options (both --long=value
and --long value
are supported)-h
shows basic options only, long option --help
shows all options short | long | type | default | description |
---|---|---|---|---|
i | input | std::string | Raster input dataset containing band information | |
s | sample | std::string | Raster dataset with categorical values to sample the input raster dataset. Output will contain features with input band information included | |
o | output | std::string | Output sample dataset | |
c | class | int | Class(es) to extract from input sample image. Leave empty to extract all valid data pixels from sample dataset | |
t | threshold | float | 100 | Probability threshold for selecting samples (randomly). Provide probability in percentage (>0) or absolute (<0). You can provide a threshold value for each class (e.g. -t 80 -t 60). Use value 100 to select all pixels for selected class(es) |
f | f | std::string | SQLite | Output sample dataset format |
ft | ftype | std::string | Real | Field type (only Real or Integer) |
lt | ltype | std::string | Integer | Label type: In16 or String |
b | band | int | Band index(es) to extract (0 based). Leave empty to use all bands | |
sband | startband | unsigned short | Start band sequence number | |
eband | endband | unsigned short | End band sequence number | |
bndnodata | bndnodata | int | 0 | Band in input image to check if pixel is valid (used for srcnodata) |
srcnodata | srcnodata | double | Invalid value(s) for input image | |
bn | bname | std::string | b | For single band input data, this extra attribute name will correspond to the raster values. For multi-band input data, multiple attributes with this prefix will be added (e.g. b0, b1, b2, etc.) |
cn | cname | std::string | label | Name of the class label in the output vector dataset |
down | down | short | 1 | Down sampling factor |
Some examples how to use pkextractimg can be found here