Transforms which appear in the template list when a raster data field, of type tile, has been picked in the Transform pane.
Tech Tip: Manifold runs CPU parallel and also GPU parallel, as discussed in the GPGPU topic. Having a GPU can make a huge difference in speed for many transforms that work with raster images, for example, when computing Curvature or Slope or Aspect using a radius of 3 or more. Manifold running without a GPU installed will automatically use CPU parallelism instead for spectacular parallel speed, but with a GPU installed Manifold can often run dramatically faster. Installing at least one, inexpensive NVIDIA GPU card in our systems allows such operations to run with astonishing speed, at times reducing computations from minutes to seconds or from hours to seconds. A wide range of GPU cards costing from under $100 to around $250 will make a spectacular difference.
Transforms for raster images will out put float64 data type by default. If our input image use integers or some other numeric data type for the channel we use, we can change the data type used for output by choosing whatever numeric type we want in the Channel type parameter that appears in the Transform pane.
For examples and illustrations of options and available operations, click on the template's link to jump to that template's topic.
Basic arithmetic operations, allowing choice of Channel in multichannel raster images, automatically providing choice of a second parameter, specified in the Value box and typically allowing a field, a specific value, or an expression, for operations that use an additional parameter. Save the result into the specified Result destination using the specified numeric type.
|
|
Compose a tile value, either a new tile value composed from specified channels or a rearrangement of an existing tile field by rearranging existing channels:
|
|
Using values in the specified Channel of a raster image as heights of terrain, create a drawing with vector areas or vector lines representing contours for the terrain heights from the specified minimum height to maximum height, using intervals of the given Step. Each area record will have ValueMin and ValueMax attribute fields giving the minimum and maximum height for that contour area.
Clicking Full Range will automatically load the Start and End boxes with minimum and maximum elevation values found in the channel. Checking Round start and end to step will round the values of the start and end contours to align as round numbers with the step amount.
The Split into shapes option, when checked (default), will automatically split all areas for the same range of contour interval values into separate area objects. Unchecking this option will result in the creation of a single, multibranched area object for each contour interval value range. This makes for a simpler results table and the ease of selecting all like areas with a single Ctrl-click, but when starting with larger raster data it can result in very large areas, consisting of millions of coordinates to cover all of the branches.
|
|
Provides numerous operators to extract or to compute pixel or tile characteristics and to save to the specified Result destination, using the data type required and providing options for each operation. Available operations include:
|
|
Save the numeric result of the given expression into the specified numeric Result destination, creating new fields using the specified numeric type.
|
|
Fills tile pixels in a specified channel using one of three operations:
|
|
Provides numerous operators to compute image characteristics using matrix filters and to save to the specified Result destination, using the data type required and providing options for each operation. The Radius value sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter: A Radius of 1 results in a 3x3 pixel array. The Shape parameter allows choosing a matrix filter shape that is a circle, cross, diamond, or square (the default). Available operations include:
Note: GPU parallelism switches to CPU parallelism at a Radius of 9 or greater.
|
|
Basic hyperbolic trigonometric operations, allowing choice of radial unit from Arc Minute, Arc Second, Degree or Radian. Save the result into the specified Result destination using the specified numeric type.
|
|
Limit values of a specific channel in a tile:
|
|
Template options that compute closest path analytics, similar to the Distance tools in ESRI's Spatial Analyst toolset. The transform provides three basic Path types. Each of those can compute results in three different Output types, providing a total of nine different combinations of Path type and Output type. See the Raster Paths topic for a conceptual background.
The Path transform should be launched with the focus on an image layer in a map that also contains a vector drawing layer that provides points for starting locations. Points used in path computations can be restricted to only those selected, using the Start from selection only check box. The Path transform allows a choice of Channel to use in multichannel images.
Path type options:
Output type options:
Value options:
Parameters for cost for slope:
|
|
Rounding operations. Save the result into the specified Result destination using the specified numeric type. The Round to box allows choosing the decimal position for rounding, for example, rounding to decimal fractions like 0.001 or rounding to whole decimal positions like 10000.
|
|
Performs a sieve operation on an image channel, running until there are no more areas to merge.
A sieve operation creates a new raster image from a source image. The operation analyzes pixel values in the source image to find regions of like-valued pixels. It then builds a result raster where smaller regions of like-valued pixels, those below the size threshold specified, are merged into larger neighboring regions. The result is like removing the "noise" of smaller pixel regions and leaving only the "bigger picture" regions.
|
|
Transforms for computing slope and other characteristics related to tilt, aspect and curvature of a surface, treating pixel values as heights that imply the surface. The Channel to use may be specified in multi-channel images. Templates typically provide a Radius value that sets the number of pixels from the center pixel to the edge of the matrix used to compute the filter: A Radius of 1 results in a 3x3 pixel array.
The Unit of measure to be used for the result can be picked from Arc Minute, Arc Second, Degree, Grade or Radian.
Caution: Slight increases in Radius can cause disproportionately large increases in the computation time required. Without a GPU a Radius of 3 is slow but tolerable because Manifold will run CPU parallel for better speed. With a GPU, even incredibly large computations involving a Radius of 7 or even 8 are possible on a desktop machine, as Manifold will automatically GPGPU parallelize the aspect calculation. Without a GPU, start with a Radius of 1 and then scale up slowly to see where patience ends. As a practical matter, there is not much gain in accuracy of aspect computation when increasing Radius beyond 4 or 5. GPU parallelism switches to CPU parallelism at a Radius of 9 or greater, so it makes sense to use a Radius of 8 or less with bigger images.
|
|
Bessel function operations, with specification of Order. Order may be taken from a field, or specified by a value or by an expression. Save the result into the specified Result destination using the specified numeric type.
|
|
(Formerly called Trace Areas) Using values in a raster image, create a drawing with vector areas covering regions of similarly-colored, that is, similarly-valued, pixels. Each area will also have a Value attribute field giving the pixel value for which it was created. The template can create areas whether values for pixels are intended as colors or as elevation or other values.
The Similarity factor gives the range within which pixel values will be considered to be in the same classification. A Similarity of 10 would group values of 11, 14, and 18 together in one group and values of 20, 23 and 27 in a different group. The default value of 1 for Similarity means to treat pixels within the same integer values as unique. A value of 0 for Similarity would treat each unique pixel value found as a separate classification (using 0 is often a mistake given there might not be an intended difference between close pixel values such as 1.00003 and 1.000031).
The Split into shapes option, when checked (default), will automatically split all areas for the same class of color into separate area objects. Unchecking this option will result in the creation of a single, multibranched area object for each class. This makes for a simpler results table and the ease of selecting all like areas with a single Ctrl-click, but when starting with larger raster data it can result in very large areas, consisting of millions of coordinates to cover all of the branches.
|
|
Basic trigonometric operations, allowing choice of radial unit from Arc Minute, Arc Second, Degree or Radian. Save the result into the specified Result destination using the specified numeric type.
|
|
Given a map that contains a raster image layer with heights in pixel values and also a vector drawing layer that provides the locations and heights of observers as points, the Viewshed template computes viewsheds, that is, visibility of regions from the various observer points.
The template provides five different Output options, two of which report results by creating a new drawing, and three of which report results by creating a new image.
Output options that create a vector drawing:
Output options that create a single channel, raster image:
The heights of observers can be taken from a numeric attribute field in the observer points table, or directly from Z geometry values for points (the default). If Z values are taken from a numeric field, they can be computed relative to the raster height (on by default) or taken as an absolute height.
There are options to specify refraction (the default is 0.13), minimum angle ( default -90 degrees), maximum angle (default 90 degrees), radius (default is 0 = no limit), and whether or not to use datum curvature (the default is not to use). Observer points can be restricted to only selected points.
See the Viewsheds topic.
|
|
Compute watersheds in terrain elevation data in the specified Channel and output the watershed analysis in various forms. The Minimum flow parameter specifies the minimum total flow in the basin required to create a watershed area or stream line. Smaller Minimum flow values will result in many more, smaller areas or streams. Larger Minimum flow values will result in fewer, larger areas or streams. The Water channel parameter allows choosing a channel in the image that provides relative water amounts dropping onto each pixel.
Available Output forms:
Fields created:
|
|
(Formerly Fill Sinks) Fills sinks in terrain elevation data based on specified criteria, a necessary first step before many Watershed operations.
Choice of Fill height and Fill flow control how sinks are filled as follows:
Fill height and Fill flow allow us to specify whether we want to fill sinks on the basis of their vertical depth or on the basis of their areal size or on a combination of both characteristics.
Fill height is a measure of the vertical depth of the sink. Sinks that are deeper than the Fill height specified will not be filled and will be left unchanged. Sinks that can be filled with the Fill height specified will be filled.
Consider a lake formed by a dam where the lip of the dam is 50 meters above the height of the lake. The lake is a sink until the level of the lake rises up above the lip of the dam and can spill over past the dam downstream. The lake is a sink with a vertical depth of 50. The Fill height required to fill it is 50. At any Fill height values of 50 or greater, the lake as a sink is filled. At any Fill height less than 50 the lake is unfilled and remains as a sink.
If we use a very large value for Fill height, such as 20000 (a very big height difference whether we are measuring in feet or meters) that will be enough to fill in any sink.
Fill flow is a measure of the areal size of the sink. A sink is a closed drainage basin, the total flow of which is found by assuming one unit of water falls on every pixel within the basin. To fill the entire basin we must have at least that much flow available to fill the basin. If a sink is 1000 pixels in areal size we must have at least 1000 in Fill flow available to fill it.
If we choose 1000 as the value for Fill flow that will be enough to fill all sinks that are 1000 pixels in size or less. Sinks that are larger than 1000 pixels in size will be too big to fill with the Fill flow we have specified. A Fill flow specification of 500 would be enough to fill a sink that is 400 pixels in size, but it would not be enough to fill a sink that is 1000 pixels in size and thus requires a minimum of 1000 in flow to be filled.
|
Sample image - Many illustrations for transforms for raster images use an Elevation Raster sample image, a version of the formatted example of importing an SDTS format DEM from the Example: Import DDF SDTS DEM Raster File topic. The example project may be downloaded from the Downloads page on the Manifold web site.
Bounds set to pixel extents - New images created by transforms have their bounds automatically set to the extents of visible pixels, and not to the extents of tiles.
Automatic Style - New images created by transforms use an automatic style computed from pyramid statistics, with the lowest available pixel values being set to black, the highest to white and the rest to a shade between black and white. The automatic style applies to all images which have a spatial index and which do not have an explicit style set, which also is helpful for images created by user queries and scripts. Automatic style for images with UINT8 channel values is special-cased to always map 0 to black and 255 to white, for compatibility reasons and because this is the desired behavior in the majority of cases.
Virtual images and selections in the image - Operations on tiles use a table with a tile field, a pair of X and Y fields, and a spatial index connecting these fields together. Images on some data sources, for example, web images, use a slightly different structure with a non-spatial index on X and Y fields, sometimes also including a level field, instead of the spatial index. Such images have to be converted to images with a spatial index prior to the operations. A query function that operates on tiles can accept either a physical image component stored in a database, or a virtual image created on a tile field (using the ComponentFieldImage function) of a table or of a query component . A virtual image supports all functions available for regular components. Both physical and virtual images can be limited to using only selected records but the result will not be accepted as an image by query functions and will only work as a plain table with no spatial context. Planes are to extend selections in images to be per-pixel and after that is accomplished, the result of limiting an image to only selected pixels also will work as an image.
Rectangles ignored - The rectangle value stored in an image component is used solely for display purposes and is ignored for both selects and transforms. Previously, some selects and transforms ignored the rectangle and others used it. Starting with this build, the system treats the rectangle as a strictly visual display frame that limits what part of the data is shown on the screen, similar to how a table window can limit which records are shown in the list by filtering field values, and ignore it for selects and transforms. Operations that do not depend on tile placement and which treat pixels independently from each other may operate either on all or on selected records. Operations that depend on tile placement always operate on all records. After per-pixel selections are implemented, all operations on images will be able to operate on only selected pixels.
Legacy rectangle issues - There is a potential issue with ignoring image rectangles for data analysis. Since some transforms previously used the rectangle value to limit queried data, it might have been possible for an image to contain garbage outside of the rectangle without this being noticed. It is also possible that some of the older dataports created such images during the import. Preliminary checks on archived test files that were created with old builds have found no such images existing de-facto, but it is possible that they exist. If any such images exist in the wild, running a transform on it will read data outside of the image rectangle that might not have been read in prior builds, and the results of the current transform may differ from the results from previous builds, likely to the worse. To understand whether an image contains data in pixels outside of the image rectangle, one can force the image rectangle to the extent of visible pixels. This currently requires using a query (see the changes to the ComponentBounds function). Upcoming builds will allow changing the image rectangle to cover all visible pixels via the UI. Upcoming builds likely will also allow cropping the image to the current rectangle, throwing away all data outside of the rectangle. Any instances indicating that a particular dataport or a UI tool may create an image with data in pixels outside of the image rectangle should be reported as a bug, to allow investigation and an immediate fix.
Everything Math - For a handy reference to anything in mathematics, see the Wolfram MathWorld site. Thank you, Wolfram!