Functions The TileFilter and TileFilterSum query functions produce missing pixels if the filter shape covers no valid pixels (were producing pixels with the value set to 0). This is consistent with other TileFilter functions. There are new query functions for tile filters: TileFilterStDev / StDevPop / Var / VarPop / Count. Each function has a GPGPU variant. (The GPGPU.DAT file is updated.) Each function has a corresponding transform. The TileGeomAvg / Diversity / DiversityIndex / Major / Max / Median / Min / Sum query functions take a channel number as a parameter, to work with a single channel in a multi-channel image. There are new query functions for geom tile statistics: TileGeomStDev / StDevPop / Var / VarPop. The functions take a channel number as a parameter, to work with a single channel in a multi-channel image. There is a new query function for capturing a sample pixel value under a geom: TileGeomSample. This is the fastest way to capture data for a geom from an image. The function takes a channel number as a parameter, to work with a single channel in a multi-channel image. (We might add functions which take multi-channel samples in the future.) The GeomConvexHull query function takes a boolean parameter which controls the behavior of the function when the produced convex hull is a single point or a straight line segment. If the parameter is false (former behavior), the function returns NULL. If the parameter is true (optional new behavior), the function returns an area with coincident coordinates. Join (drawing -> drawing) The Join dialog allows joining data from one drawing to another (spatial overlays). To perform a join between drawings, open a map containing both drawings as layers, make the drawing layer you want to transfer data to active, then invoke Edit - Join. The Join dialog for drawings is the same as the one used for joining data between tables, however, the list of source components is limited to map layers. This both extends the range of possible joins in that you can use the dialog to join components from different data sources, and reduces it in that you don't see all drawings from the data source of the target drawing. Joining data between drawings allows selecting a join condition from the list of usual spatial operations: adjacent to / contains / contained in / intersects / touches (the default), etc. Joining data between drawings is always x:N, that is, a single target record gets values from zero or more source records - there's no uniqueness which sometimes exists with joins between tables. Consequently, transfer rules are always aggregates - min / max, etc. Joining data between drawings uses multi-threaded GeomOverlayXxx function variants. The update query, if saved, is created in the data source of the map to allow joining data between any pair of layers. (If the update query was created in the data source of the target drawing, the source layer might have been unreachable.) Join (image -> drawing) The Join dialog allows joining data from an image to a drawing (an extended version of the transfer heights feature in 8). To perform a join from an image to a drawing, open a map containing both components as layers, make the drawing layer active, then invoke Edit - Join. The Join dialog will allow joining data from either a drawing or an image. The only available join condition is: contains, but the name of the condition is separate from the similar condition used with joins from one drawing to another, so that it can be localized differently. When joining data from an image, you select a channel instead of a field. Joining data from an image to a drawing is always x:N, that is, a single target geom gets values from zero or more source pixels. Consequently, transfer rules are always aggregates. The list of available aggregates is similar to that available for numeric fields, except the 'copy' rule (which for an aggregate means 'use any value out of multiple values from multiple matching records') is replaced with 'sample' (which does the same thing, just faster). Joining data from an image to a drawing uses multiple threads through a nested SELECT with THREADS. The update query, if saved, is created in the data source of the map to allow joining data between any pair of layers. Miscellaneous (Fix) The Stack Vertical command in layout window no longer stacks frames in bottom up order instead of top down order. The ValueFieldChannelF1 localization string is replaced with ValueFieldChannel to force unique channel names even if the localized version of the string messes up and omits the {0} escape sequence for the channel number. The Join dialog can be used on a persistent query, if the result table is writable. This allows joining data to, for example, a table alias (TABLE [datasource]::[table]) or a selection in an existing component (TABLE CALL Selection([component], true)). (You cannot join data to an ad-hoc query shown in a Command Window because that query has no persistent name and, as such, cannot be addressed from an update query.) The Join dialog allows adding multiple fields at once using the Fields command (shows a dialog) in the dropdown menu for the Add toolbar button. The number of fields listed in the dropdown menu is limited to 20. The Join dialog automatically copies coordinate systems for the new geom and tile fields from their specified source fields. The Center and Convex Hull transfer rules now work for all types of geometry (were working for lines and areas). End of list. Things we are working on: registration / labels / join into an image.
|