There are new query functions for spatial overlays that can be used as filters for the primary data set:
- GeomOverlayAdjacentFilter takes a source drawing and an overlay drawing, finds all objects in the source drawing that are adjacent to any object in the overlay drawing, and filters the source drawing leaving only objects which are adjacent to at least one object in the overlay drawing. Unlike the result table of GeomOverlayAdjacent, the result table of GeomOverlayAdjacentFilter contains all fields from the source drawing and no fields from the overlay drawing. GeomOverlayAdjacentFilter also performs faster than GeomOverlayAdjacent.
- GeomOverlayAdjacentFilterPar computes the same data as GeomOverlayAdjacentFilter but allows using more than one thread.
- GeomOverlayContainedFilter / Par, GeomOverlayContainingFilter / Par, GeomOverlayIntersectingFilter / Par, GeomOverlayTouchingFilter / Par are analogous to GeomOverlayAdjacentFilter / Par, but use different spatial criteria.
The result tables returned by GeomOverlayXxxFilter / Par functions contain all indexes from the source table and are writable. It is possible to chain calls to these functions as well as calls to SelectionXxx functions. (For example, the following query returns all states touching selected parcels: EXECUTE CALL GeomOverlayTouchingFilter(states, CALL Selection(parcels, TRUE), 0)).
The result tables returned by GeomOverlayXxxFilter / Par and SelectionXxx query functions perform faster when used from multiple threads.
New templates in the Select pane: Geoms Adjacent, Geoms Contained, Geoms Containing, Geoms Intersecting, Geoms Touching. Each template selects data in a drawing using an overlay drawing and the specified criteria. (Note that the meaning of Geoms Contained / Containing is reversed compared to transforms for Overlay Contained / Containing due to the wording.)
New templates in the Transform pane: Geoms Adjacent, Geoms Contained, Geoms Containing, Geoms Intersecting, Geoms Touching. The templates are similar to those in the Select pane and add the objects that would have been selected as a new component, controlling transferred fields.
Queries generated by the Select pane for map layers refer to layer components instead of to their tables.
Queries generated by the Edit Query button in the Select pane ignore the select mode specified in the pane. (The purpose of the query generated by the Edit Query in the Select pane is to show what the system does to apply a specific template and to produce a reasonable starting point for customizing the query further. The code for combining the output of the template detracts from that. We'd also recommend combining multiple selections differently anyway - through saved selections.)
The map window displays a preview for Geoms Adjacent, Geoms Contained, Geoms Containing, Geoms Intersecting, Geoms Touching templates from both the Select and Transform panes. For the transforms, objects that participate in the transform and have matches in the overlay drawing are shown using the regular blue preview color, and objects that participate in the transform but do not have any matches in the overlay drawing are shown using a lighter shade of the blue preview color. (Currently, the accuracy of the preview for Geoms Adjacent and, rarer, for other new templates might be a bit off in that some of the matches might not be picked up and vice versa. This happens because previews operate on simplified versions of the objects. We are going to fix this.)
Web dataports prioritize fetching tiles closer to the center of the requested area whenever possible. This produces a usable picture noticeably faster than fetching tiles in XY or YX order.
Creating new data source for CSV allows forcing all fields to text, specifying whether the first line contains field names, specifying characters used for list delimiter, decimal separator and text qualifier. The defaults for all options are to autodetect their values from file content. It is possible to keep some options on autodetect and set other options to explicit values. If option values conflict, the dataport ignores the value for the less important option (ie, if list separator is set to autodetect and scanning the file discovers that list separator is a comma, the dataport disallows decimal separator to also be a comma).
End of list.