This topic provides release notes for the very latest builds. For information on different types of builds and a history of recent builds, see the Changes and Additions topic.
Cutting edge build 178.5 provides label overlap management between layers in maps, as well as some technical improvements to multi-threaded rendering of layouts.
The filter button in the Layers pane includes a new Overlap Mode command which shows the overlap mode for label layers and allows changing the overlap mode.
Available overlap modes:
layer - labels in the layer may not overlap each other, but may overlap labels from other layers. This is the default mode.
map - labels in the layer may not overlap each other and may not overlap labels from other layers whose overlap mode is also set to map. Labels from lower layers are given priority over labels from higher layers.
Overlap modes work in map windows, in layout windows, and during printing.
Using map overlap mode only makes sense for multiple label layers. Editing a label layer set to map overlap or turning that layer on or off will re-render other label layers set to map overlap above it. Rendering label layers set to map overlap decreases parallelism as such layers must be rendered in sequence. However, in practice, this does not necessarily decrease rendering performance, as the final number of labels to render also tends to decreases.
Layout windows limit the number of rendering threads for a map frame. This significantly improves performance when rendering maps that contains many layers: instead of trying to render all layers at the same time, the window now starts rendering a few layers and only starts rendering new layers after previous layers finish rendering. This rendering plan was originally introduced for map windows, so now layout windows use the same strategy.
Layout windows limit the number of rendering threads across multiple frames. This helps render layouts with multiple maps.
Layout windows dynamically increase the number of rendering threads if the window becomes active and decrease the number of threads if the window becomes inactive. Map windows also dynamically increase/decrease rendering threads the same way.
The dynamic adjustment of rendering threads has been tuned to work more smoothly for systems with many CPUs.
(Fix) Reading TIFF files with data stored in strips with heights that are not powers of 2 no longer sometimes fails.
(Fix) Performing an EXECUTE [[ ... ]] on a SQL Server data source with a command that returns multiple results no longer returns the number of affected rows instead of the first result table.
Cutting edge build 178.4 provides a variety of conveniences and user interface improvements for grids, North arrows, scale bars, Style, and layouts. It also provides new query functions to work with interactive selections from SQL, a command line option to help manage serial numbers, and important updates to third party software used by Manifold, notably a migration to the latest Visual C++ environment from Microsoft.
Preview controls for styles for areas, lines, points, and text use a single shared preview background color, which persists per Manifold session. The preview color can be changed using the color picker box in the right top corner of the preview panel. This makes it easier to set a desired background color just once without having to set it for each use of style. Previously each control started with the background color of the map which could then be changed interactively, with the changes only persisting until the dialog was closed.
The default preview background color has been set to light blue. The new default makes it easier to see Style effects using white color.
Preview controls for Style dialogs for grids, north arrows, and scale bars use the new, shared preview background color. The preview color can be changed using the color picker box in the right top corner of the preview panel.
The North Arrow and Scale Bar dialogs use a better caption for position options: the Align caption has been renamed to Position.
The Scale Bar dialog allows specifying the desired scale bar length in scale bar units. If the space allocated for the scale bar is too small to show the desired length, the length is computed automatically from the visual size of the scale bar, rounding down to the first two significant digits (same as in the previous builds). The default is to always compute the length automatically.
The Grid, North Arrow, and Scale Bar dialogs include a new Apply button which allows applying changes to the map without closing the dialog, which makes interactive tinkering fast and easy. The button is currently only shown when the dialog is used to edit the style of a virtual layer in the Layers pane for a map. In the future, the Apply button might also be used when the dialog is used to edit the style of a layout frame in the Info pane.
Snapping to a grid in a map window now snaps to the virtual grid layer. Snapping does not require the virtual grid layer to be turned on. Snapping to a grid always uses the base grid step for the virtual grid layer. The Snap Parameters dialog no longer contains means to specify the grid step and grid unit, as there is no longer a separate grid used for snapping.
The Layers pane has new filters for layout frames: North Arrows, Scale Bars, and Samples. The Text Frames filter has been renamed to Text.
When showing data for a layout frame, the Info Pane's Update Record button has been renamed to Update Frame.
The Create Area Sample command for layouts has a new icon.
The Create North Arrow and Create Scale Bar commands for layouts have new icons. The cursor modes for those commands have new cursors as well.
The manifold.exe executable supports a new -showserial command line option:
manifold -showserial
That launches a Manifold session that in the Log window pane shows the first 8 characters of the serial number. The first characters of the serial number are not written into the log file and are only shown in the Log window. This option allows administrators to see what serial number has been used on a given machine. The new command line option works for all editions of Manifold, SQL for ArcGIS Pro, and Release 8, but not for Manifold Viewer (which does not use serial numbers).
The Microsoft Visual C++ (also called MSVC or simply VC) environment used has been updated to 14.34.31933. The VC runtime has been updated to 14.32.31332.0. This adds many minor performance improvements and makes Manifold modules use the same version of the runtime as the latest modules from Microsoft and other major vendors, saving resources that would otherwise be spent on keeping multiple versions of the runtime in memory.
NVIDIA CUDA has been updated to 11.8. GPGPU modules for sm_50 and sm_60 architectures now use slightly fewer GPGPU resources.
The ECW SDK has been updated to 5.5.0.2268. This fixes a couple of minor SDK bugs related to the reading of ECW and JPEG2K images.
Google LIBWEBP has been updated to 1.2.4. This improves the visual quality of compressed WEBP images and fixes several Google bugs related to transparency, etc.
SQLITE has been updated to 3.39.4. This adds support for RIGHT and FULL outer joins (SQLITE did not have them until 3.39) as well as several minor performance improvements. This also fixes a number of SQLite bugs, most notably with join optimizations and with the UPSERT statement.
New query function: SelectionReplace. Takes a table to select records in, a table with keys to select and a flag whether records with the passed keys should be selected or unselected. The keys table should contain fields from the result table of the SelectionKeys function, with compatible types. The keys table may contain other fields as well, which will be ignored if present. The returned value for SelectionReplace is the number of unique keys fetched from the keys table. Since some of the keys might not exist in the table, replacing the selection using this function marks the selection as not knowing the exact number of selected records. To determine the exact number of selected records, click the ? button in the Info pane.
New query function: SelectionReplaceWindow. Same as SelectionReplace, but also takes a window name and a layer name, which allows this function to replace the selection for a dynamic layer based on a query.
In addition to manipulating selections in tables that have been opened, the SelectionReplace and SelectionReplaceWindow query functions will automatically create a selection even within a table that has never been opened as long as it is static (that is, not the result table of a query) and it belongs to a database opened in the Manifold user interface or one of its child databases (that is, not to an arbitrary database opened by a script).
To use the following examples, create a new .map file, open the mfd_meta table, open a new command window, then dock the new command window below the mfd_meta table (right-click the tab for the command window and select Dock Down) so that you can run the example queries and immediately see what they do.
--SQL9
-- example 1
VALUE @a FLOAT64 =
SelectionReplace(mfd_meta, (VALUES (2) AS (mfd_id)), TRUE);
-- example 2
VALUE @a FLOAT64 =
SelectionReplace(mfd_meta, (VALUES (2), (3) AS (mfd_id)), TRUE);
-- example 3
VALUE @a FLOAT64 =
SelectionReplace(mfd_meta, (VALUES (2), (3) AS (mfd_id)), FALSE);
-- example 4
VALUE @a FLOAT64 =
SelectionReplace(mfd_meta, (SELECT * FROM mfd_meta WHERE name='mfd_root'), TRUE);
(Fix) The automatically computed length of a scale bar in a layout frame may no longer round to different values depending on the zoom or print resolution (was caused by incorrect handling of rounding errors).
(Fix) A lattitude / longitude grid for a component in a non-lattitude/longitude coordinate system no longer sometimes uses the wrong unit for the grid step if the grid unit is set to auto.
(Fix) Using the Selection query function to return unselected records in a table that was never opened in a window now correctly returns a full table instead of an empty table.
(Fix) Using the SelectionWindow query function to return unselected records for a table in a window or layer that no longer exists now correctly returns a full table instead of an empty table.
Cutting edge build 178.3 extends North arrow and scale bar capability to layouts. North arrow and scale bar frames can now be added to layouts, with automatic context for those frames taken from component frames in the layout. Grids have also been extended with more options. North arrows, scale bars, and grids have been integrated into the Info pane.
Layouts support North arrow frames. To add a North arrow frame, use the new Create North Arrow cursor mode (keyboard shortcut: Shift-N).
Layouts support scale bar frames. To add a scale bar frame, use the new Create Scale Bar cursor mode (keyboard shortcut: Shift-S).
North arrow frames and scale bar layout frames use data from the topmost component frame below the frame in the display stack, or, if there are no such frames, from the topmost component frame in the layout.
A North arrow layout frame with auto bearing turned on checks if the center of the north arrow shape is inside the component frame used by the North arrow. If the center of the North arrow shape is inside the component frame, the bearing is computed for the geographic location at that center. Otherwise, the bearing is computed for the geographic center of the component frame.
Grids are available for component frames that appear in layouts. Alt-click the component frame, and in the Info pane's Style tab a Grid check box will allow turning on a grid. A preview panel in the Info pane shows the grid style and allows editing it. Click the [...] browse button to launch the Grid dialog to configure the grid. Note: In the current build, if the grid step is allowed to change, the layout window might use different grid steps at different zoom levels. Printing the layout, however, will always use the same step. In future builds, the layout window will also set the grid step to whatever step will be used during printing.
If a map has a grid turned on for the map, dropping that map into a layout as a component frame will not show that same grid in the layout. Instead, Alt-click the component frame, and in the Info pane's Style tab a Grid check box will allow turning on a grid. Using a different grid in layout makes it possible to show a grid that is styled and configured to look good in the layout for printing, while a different grid can be used in the map for interactive work on the computer desktop.
The Grid dialog allows specifying grid step by X and Y. The default is a single step in X and Y using whatever is the coordinate system unit for the map. Grid cells never become smaller than the specified step.
The Grid dialog allows specifying whether the grid step is increased during rendering. The default is on, to allow increasing the grid step. If the option is turned off, the grid step is locked to the specified step and grid cells never become larger than the specified step. If the visible size of grid cells becomes too small the grid is not rendered. The spacing parameter has been removed and has been replaced with internal logic to automatically manage spacing.
Rendering a grid for a latitude / longitude system restricts parallels to the -90 to 90 range. If the Use latitude / longitude option is turned on, rendering a grid also restricts meridians to the -180 to 180 range, otherwise meridians are not restricted.
The Grid dialog allows specifying the unit of measure for the grid step. The default is to use whatever is the unit of measure for the coordinate system in use.
The Layers pane shows icons for grid, north arrow, and scale bar layers in a map.
The Info pane for a North arrow layout frame or a scale bar layout frame shows the North arrow or scale bar style and allows editing it.
Cutting edge build 178.2 introduces virtual layers that provide North arrows, scale bars, and grids in maps. See the First Look - North Arrows video for a quick introduction.
The Layers pane for a map window shows virtual layers for a north arrow, scale bar and grid. Virtual layers can be turned on and off (by default they are turned off). The position of the virtual layers in the display stack cannot be changed. Double-clicking a virtual layer edits its parameters using a dialog.
The state and parameters of the virtual layers are saved in the map component. If the window is not a map component but a drawing, image, or labels window, the virtual layers still work, but changes to their state and parameters are lost when the window is closed. To save these changes, save the window as a map using Edit - Save as Map.
Dialogs that edit parameters for north arrows, scale bars, and grids include a preview that immediately updates after any changes to parameter values.
Configure a North arrow by double-clicking the North Arrow virtual layer. The North Arrow dialog allows setting the following parameters:
(Foreground color) - Foreground and stroke color for shapes and text. Default: black.
(Background color) - Fill color and the color for halos. Some north arrow shapes may use colors that are mixes of foreground and background colors. Default: white.
(Shapes gallery) - Choose a North arrow shape from a gallery of popular shapes. Default: compass. Hovering the mouse over a shape will show the name of that shape in a tooltip.
Stroke - Stroke width for the shape. Default: 1 pt.
Text - Check to show text (captions) near north arrow shapes for NESW directions. Some shapes can show captions in all four directions, some only two directions or one direction. Default: off (do not show text).
NESW - Four boxes for text to use for each of the four directions. Default: empty strings.
(Text font) - Font for text. Fully configurable for typeface, effects, bold, etc. Default: Tahoma.
(Text size) - Font size for text. Default: 8 pt.
Align - Horizontal and vertical position of the North arrow shape relative to the map. Default: right top.
Margin - Horizontal and vertical margins between the North arrow shape and the map's edges. Default: 8 pt margins.
Size - Size of North arrow shape. Default: 96 pt.
Halo - Width of background color halo for shape and text. Default: 1pt. Setting Halo to 0 turns off the halo.
Bearing - The direction of the North arrow, if the Auto box is not checked. Default: 0 (North up).
Auto - When checked (the default), compute the North arrow's bearing automatically. Bearings are first computed using the center of the north arrow shape, and then, if that fails because the north arrow is outside of the coordinate system domain, based on the center of the map.
Configure a scale bar by double-clicking the Scale Bar virtual layer. The Scale Bar dialog allows setting the following parameters:
(Foreground color) - Foreground and stroke color for shapes and text. Default: black.
(Background color) - Fill color. Default: white.
(Shapes gallery) - Choose a scale bar shape from a gallery of popular shapes. Default: rect. Hovering the mouse over a shape will show the name of that shape in a tooltip.
Stroke - Stroke width for the shape. Default: 1 pt.
Text - Check to show text (a caption) with the number of units. Default: on (show text).
(Text font) - Font for text. Fully configurable for typeface, effects, bold, etc. Default: Tahoma.
(Text size) - Font size for text. Default: 8 pt.
Align - Horizontal and vertical position of the scale bar shape relative to the map. Default: right bottom.
Margin - Horizontal and vertical margins between the scale bar shape and the map's edges. Default: 8 pt margins.
Size - Approximate desired size of the scale bar shape in horizontal and vertical dimensions. The actual size is computed based on the units and current scale. Default: 144 pt x 8 pt.
Halo - Width of halo for shape and text. Default: 1pt. Setting Halo to 0 turns off the halo.
Unit - Unit of measure shown in the text caption. Default: coordinate system unit for the map window.
The length of the scale bar is computed automatically based on the specified size, unit and the current scale. The width of the scale bar is slightly reduced so that the reported length is rounded to no more than two significant digits.
Configure a grid by double-clicking the Grid virtual layer. The Grid dialog allows setting the following parameters:
(Foreground color) - Stroke color for grid styles. Default: black.
(Background color) - Fill color. Default: white.
(Styles gallery) - Choose a grid style from the gallery. Default: line. Hovering the mouse over a style will show the name of that style in a tooltip.
Dashes - Dash pattern for lines, using the same conventions as the Dashes parameter for line styles. Default: 3,3 for a 3pt dash and 3 pt space.
Stroke - Stroke width for line and point styles. Default: 0.75 pt.
Point size - Size for point styles. Default: 5 pt,
Halo - Width in points of halo for line and point styles. Default: 0. Setting Halo to 0 turns off the halo.
Spacing - Minimum size of a grid cell. The actual size is computed based on the scale of the map and the units used (either native map units or latitude / longitude). Default: 72 pt. The minimum allowed value is 36 pt.
Use latitude / longitude - Check to create a latitude / longitude grid. Default: off, meaning to use the projection of the map.
The grid step is selected automatically based on the specified spacing and the current scale. The grid step in the units used (either the projection of the map or latitude / longitude) is rounded up to the closest power of 10 multiplied by 1, 2 or 5, resulting in grid steps such as 100, 200, 500, 1000, and so on.
Connections to SQL Server try using specific versions of the MSOLEDBSQL driver if the generic version fails to start due to being misconfigured.
Renamed in the Scales dialog: closest scale to Minimum scale, farthest scale to Maximum scale. The new names help prompt which of the two numbers should be greater.
Exporting a data source to a .map file or to an .mxb file writes tables with an invalid schema as tables with a single default field and no records. Tables with invalid schemas can occur when linking from data sources where a table schema cannot be read due to insufficient permissions for the user role used.
(Fix) Going back and forward between views in a map window no longer fails to update the scale readout in the status bar.
(Fix) The table window showing a table from a MAP file no longer suggests unnecessary refreshes to data after changes to values in non-key fields. Tables from MAP files show such changes immediately without any need to refresh.
Cutting edge build 177.8 provides a variety of user interface conveniences, including the ability to Copy from tables and to Paste into third-party applications like Excel and Notepad.
There is a new style for text fields: c = command line. The table window and the Info pane show command line text values in blue highlight color and allow running them using the context menu. This allows putting Windows command lines into a field, which can then be executed by right-clicking a cell and choosing Run Command.
Refreshing data in the table window either manually or automatically, for example, after deleting records or changing the table schema, keeps filters and orders for fields that did not change.
Table windows sort fields by name in the View - Order submenu.
Table windows showing records for a table from a data source other than MAP mark records that have been deleted in that window as deleted. Previously, deleting records from such a table only suggested refreshing data using the bar at the bottom of the window. Now the window also shows records that it tried to delete.
The status bar includes a new Counts pane (a section in the status bar) that shows the total number of records and the number of selected records in the active component. This shows the number of selected records at all times without needing to switch to the Info pane.
The record counts shown in the Counts status bar pane can be refreshed by right-clicking the section and choosing Refresh in the context menu. That is useful when working with data sources that are stored outside the .map project where the record count might change independently of any work done in the Manifold session.
The Info pane and the Counts status bar pane show the total number of frames and the number of selected frames for a layout.
Copying records from a table window now copies them to the Windows clipboard in both binary format suitable for pasting back into Manifold and in text format suitable for pasting into third-party applications like Excel or Notepad. Copy records by selecting the desired records and then choosing the Edit-Copy menu command. Copying records in text format copies only visible fields. It copies fields in the order they appear in the table window, and formats field values according to field styles. The visible order of records is not preserved. The amount of copied text data is limited to 32 million characters because many third-party applications can only handle limited amounts of text coming from the clipboard. If there are more records than fit into the limit, extra records past the limit do not appear in text data and only appear in binary data (for pasting into Manifold).
The context menu on column heads (right-click on a column head) now includes a Copy command which copies field values in that column from selected records to the clipboard. Copying field values copies them in text format only. The copied values are formatted according to the field style. Empty values are omitted.
(Fix) The Edit - Select Inverse command for a layout window adjusts the final selection for groups in the Layers pane. (Previously the selection could produce a selected group with an unselected child.)
(Fix) Selecting frames using the mouse cursor in a layout window adjusts the final selection for groups in the Layers pane. (Previously the selection could produce a selected group with an unselected child.)
Build 178 is a new Base build, incorporating all improvements in the 9.0.177.x series of builds. It is recommended for all users. The main changes since the prior cutting edge build, 9.0.177.4, are a new system for specifying zoom ranges in maps and also for rendering to a fixed scale. Base builds starting with 9.0.178 for Release 9 and 8.0.34 for Release 8 are now exclusively 64-bit.
Layers pane readouts for opacity, min / max scale,, and field width have been aligned left. The color picker sample box for the virtual background layer has been made wider to be similar to color pickers in the Style pane.
A new, single Min / Max Scale mode readout in the Layers pane replaces the former Closest (Min) Scale and Farthest (Max) Scale modes for map layers. The new Min / Max Scale mode readout shows both scale settings together, to make it easier to compare zoom scales between different layers.
Editing zoom scales is now done using a new Scales dialog: double-click into a Min / Max Scale cell in the Layers pane to launch the dialog. The dialog shows the current scale for reference and allows setting the closes, minimum scale, the farthest, maximum scale, and also a new Render scale value. The dialog allows direct entry of any scale value and also provides a pull-down list that includes even scale values in factors of ten (1, 10, 100, 1000, 10000, etc.) as well as uneven scales used as limits in other layers. That makes it easy to match scales used in other layers.
The Scales dialog shows scales with thousand separators for readability, and accepts scales entered with thousand separators by the user.
Applying scale limits to a layer keeps the layer visible at a zoom scale exactly equal to the closest scale, but hides it at a zoom scale exactly equal to the farthest scale. This allows showing exactly one layer out of a sequence of layers with matching scale boundaries, for example, +10k, 10k-50k, 50k+.
The Layers pane using the Scales dialog allows specifying a Render scale value for map layers that show vector data (drawings and labels). Render scale is applied during rendering in windows and during printing. When a render scale value is specified for a layer, the vector objects and labels in that layer are rendered as if the scale were fixed at that value, so zooming in will make the labels and objects bigger, while zooming out will make them smaller.
Rendering labels and objects with render scale will not render anything if the specified render scale is too small (10 times smaller than the current scale) or too big (100 times bigger than the current scale).
Layout windows render drawings and labels at true scale: zooming in and out will change the visual size of drawing objects and labels. Label placement algorithms may still produce slightly different results on screen vs. on page, or for different zooms on screen, due to different tolerances.
Editing a text style for Labels allows specifying whether the system should prefer placing labels following a line with left / right offset above or below the line. The default is above.
Editing a text style for Labels allows specifying a smooth tolerance factor to be applied to a line for labels following lines. The default is 50% of the font height.
(Fix) Labels following lines no longer sometimes apply bend spacing a little too early.
(Fix) Applying bend spacing to labels following nearly straight lines no longer sometimes (rarely) packs label glyphs into the same location.
(Fix) Placing labels following a line with left / right offset in repeat mode always tries to place labels along all left or all right parts of a branch, instead of stopping after successfully placing labels along one such part.
Build 177.4 provides many controls for line labels and label overlap spacing. It also adds an export control to Manifold Commander and two fixes.
See the updated Style: Labels topic for examples of new label style controls in action.
Editing a text style allows specifying how many labels to place onto a line:
one per branch - (default) The system will try to place a single label for each visible branch of each record. This applies to visible branches, that is, the visible parts of branches, not physical branches. For example, if a physical branch goes off screen and then returns back on screen, it will produce multiple visible parts and the system will try to put a label onto each such part.
one per record - The system will try to place a single label for each record.
repeat - the system will try to place as many labels as will fit into each visible branch of each record given the specified spacing between labels on the same branch. Spacing can be specified either in absolute units, for example, 40, meaning 40 points, or in relative units for example, 800%, the default, meaning 8 times the font size.
Editing a text style allows specifying how to place labels onto a line:
curve - (default) Bend label text to follow the shape of the line.
straight - Place labels without any bends in the direction of the line in the region of the center of the text.
straight horizontal - Place labels without any bends. aligned horizontally.
straight perpendicular - Place labels without any bends aligned perpendicular to the direction of the line in the region of the center of the text.
Placing labels onto lines preprocesses the line metric to make it smoother.
Placing labels onto lines in one per branch or one per record modes prefers positions near the visual center of the line.
Placing labels onto lines produces a tighter and more accurate overlap shape. This improves the accuracy of clicking into labels. This also allows showing more labels in that labels that are close to each other start conflicting later than they did with less accurate overlap shapes.
Editing a text style allows specifying overlap spacing, which controls how close individual labels can be to each other. The default is 1 pt.
Editing a text style allows specifying bend spacing to apply to labels following lines. With bend spacing, placing text onto a line adds small amounts of space between individual letters at each bend to improve readability. The amount of added space depends on the bend angle: sharper turns get more space. Bend spacing defines the maximum amount of space to add to a single bend. The default is 50%, adding up to half of the font size at each bend.
There is a new -export:xxx command for Commander. The command exports the specified component in the input file to the output file. The specified component can be in a nested data source. When using this command the input file is always opened in read-only mode and the value of the -open:xxx option is ignored. For example:
manifoldcmd "c:\world.map" -export:"Main Map" -out:"c:\world_map.gdb"
Sample positions and shapes for layout frames have been localized.
Reading MIF format allows duplicate field names and automatically renames duplicates to make all field names unique, thus automatically dealing with problems that can happen from encoding issues in MIF format files.
(Fix) Writing MIF removes unsupported characters from field names.
(Fix) Clicking a label no longer sometimes picks a wrong label or does nothing.
Build 177.3 adds new capabilities to Manifold Commander, improves labels along lines, provides a vertical text alignment style in layouts, adds new dataports, and provides fixes.
The -runscriptfile:xxx command for Commander works in the context of a data file. The command will open the specified data file and then run the script from the specified script file.
There is a new -runqueryfile:xxx command for Commander. The command is similar to -queryrun:xxx, but the text of the query is taken from the specified file. That allows writing new queries to do workflow using SQL without opening Manifold interactively, including parametrized queries.
There is a new -runquerytext:xxx command for Commander. The command is similar to -queryrun:xxx, but the text of the query is taken directly from the command line. For example:
manifoldcmd data.map -runquerytext:"SELECT * FROM blocks WHERE state='CA'" -out:out.jsonl
Editing a text style allows specifying an offset number for labels following lines. The default is 0 for placing a label for each visible branch directly on top of the line. If the offset is not 0, the system will try to place a label for each visible branch on each side of the line until it succeeds on one side or the other. For example, if the system first succeeds in placing a label on the left side of a particular branch, it will not try to place a label on the right side of that branch.
Editing a text style allows specifying the vertical alignment of the text. Vertical alignment is used when rendering text in layout frames.
Many progress messages have been simplified from mmm (xxx) format to mmm: xxx format for readability and consistency.
Printing geometry to GeoJSON no longer prints optional bounding box data. This reduces output size, particularly for points. In the future, if there emerges a need to include bounding box data, an explicit option will be added to do so.
There is a new dataport for JSONL files. JSONL files are line-delimited JSON, a simple format designed to be friendly to streaming data. A JSONL file contains a single table. Reading a JSONL file parses it dynamically. Each line must be 2 GB or less of text, but the file itself can be any size.
There is a new option to export tables to JSONL files. Binary fields are ignored. The export tracks progress and can be canceled.
There is a new dataport for GEOJSONL files. GEOJSONL files are line-delimited JSON, similar to JSONL, but with GeoJSON data. A GEOJSONL file contains a single drawing. Reading a GEOJSONL file parses it dynamically. Each line must be 2 GB or less of text, but the file itself can be any size. The Geom and Geom_x field names are reserved: properties with these names are ignored.
There is a new option to export drawings to GEOJSONL files. Binary fields except for the geometry field used by the drawing are ignored. Exported geometry is automatically converted to Latitude Longitude WGS84, curves are linearized, and areas are normalized to OGC rules. The export tracks progress and can be canceled.
(Fix) Table windows for a tables, queries, and command windows, for .map files served by Manifold Server fetch and show the number of records specified in the Initial number of records to show (non-MAP) option in the Tools - Options dialog, instead of automatically showing all records.
(Fix) Table windows for tables stored in the .map project no longer autorefresh data after changes to a big table if there is a filter applied and the number of records that pass the filter is small.
(Fix) Writing a TIFF file with FLOAT64 values correctly writes missing pixels as NaN.
(Fix) Writing a TIFF file with INT8U values and a palette no longer fails to write the palette.
(Fix) Writing a JSON file escapes component and field names.
(Fix) Writing a GEOJSON file escapes component and field names.
(Fix) Writing a DBF file no longer sometimes miswrites boolean values.
(Fix) Tracking progress when writing DBF or SHP files no longer sometimes counts every written record twice.
Build 177.2 is a historic build in that it drops support for 32-bit versions of Manifold projects. All Manifold products are now 64-bit and require 64-bit Windows operating systems.
Build 177.2 expands the display viewport size in table windows to 2 billion records. That is way more than anybody can read through, but together with Manifold speed plus reasonable safety measures now built in, increasing the number of records that can be interactively displayed in a table window greatly expands the reach of interactive procedures to very large tables.
Build 177.2 supports ArcGIS Pro 3.x for SQL for ArcGIS Pro, and also adds features to various dataports and provides bug fixes.
Release 8, Release 9, Manifold Viewer, and SQL for ArcGIS Pro no longer include 32-bit modules. Users who require 32-bit versions should use build 9.0.177 for Release 9 and build 8.0.33 for Release8, which are base builds that include 32-bit modules and which never expire.
Manifold 9 products no longer use the Bin or Bin64 folders. DLL and EXE modules are placed directly within the install folder. The Shared folder has been renamed to Extras.
SQL for ArcGIS Pro no longer includes an Open SQL 32-bit button. The Open SQL 64-bit button has been renamed to Open SQL.
Discussion
Manifold was one of the first software companies to ship 64-bit products. Despite being one of the first to move to 64-bit, for over 20 years Manifold has maintained both 64-bit and 32-bit versions of all Manifold products.
Over time most, if not all, Manifold users naturally moved to primarily use the 64-bit versions of the products. At the same time, maintaining obsolete 32-bit code has become a limiting factor for adding new features. Manifold is therefore going exclusively 64-bit from build 177.2 onward. That will make it more efficient to add new features, and will remove limits on how those new features must be designed. That will make many things simpler for new users. The first example of such a new feature is providing 2 billion record displays in table windows, which would have been limited by 32-bit restrictions. Going exclusively 64-bit also reduces the size of the Manifold download to less than 31 megabytes.
There are several areas users may be relying on 32-bit code directly or indirectly:
If you are currently relying on 32-bit code in any way, you don't have to switch immediately. The move to 64-bit only can be gradual. You can use the new 64-bit only builds of Release 8 and Release 9 as portable installs in parallel with the last base builds that still include 32-bit code. Eventually, you may be able to transition to using 64-bit builds all of the time, with only occasional use of legacy portable installs that have 32-bit code.
The maximum number of records that can be shown in a table window is now 2 billion. Tables can contain more records, but only up to 2 billion can be displayed for interactive browsing in a table window.
The table window can either show all records in a table (up to 2 billion) or show a first sample of records. Showing a first sample of records instead of all records is useful when working with external data sources like PostgreSQL, or, say, Manifold Server: not fetching all records immediately protects against wasting server resources and network traffic needlessly. Tables from .map files show all records by default, while tables from other data sources show a first sample of records. This also applies to the result tables of queries, including ad-hoc queries in command windows. The "show a sample from non-.map data sources" is not absolutely bulletproof. For example, a query stored in a .map file may access records in a table stored on SQL Server. When the user runs such a query, the table window will try to fetch all records in the result table, because the query itself is stored in a .map file, even though the records come from SQL Server. In cases like this, the responsibility for not overloading the server for no good reason is on whoever writes or runs the query.
The Tools - Options dialog includes an Initial number of records to show (non-.map) option to specify the size of a first sample of records fetched for non-.map data sources. The available values are: auto (default), all, or a specific number of records. The auto value is currently set to 5000 records. The previous default was as high as 50000 records because it applied to tables in .map files as well. 5000 records is much friendlier to database servers. If 5000 records is too low for the data sources you are working with, you can always change the option to a higher value in the Options dialog.
The Info pane shows the number of fetched records in the table window. If there are more records available, the Info pane also shows a (+) notation. If the table window is showing a first sample of records instead of all records, the Info pane also shows a button to fetch all records. Once a table window has been told to fetch all records for the displayed table, it will keep fetching all records for all further operations that refresh or replace the table.
The Info pane shows the number of displayed records in the table window. That number will be the same as the number of fetched records that pass any filter.
The Info pane shows the Component tab for a command window with a table.
Table windows detect changes to displayed data from a non-.map data source and show an action bar below the record list with a prompt to refresh data manually. To refresh data, use the View - Refresh Data command or click the prompt in the action bar.
A table window displaying data from a .map file does not automatically refresh data after changes to the data if the number of records in the table exceeds 64k. Instead, the window shows an action bar with a prompt to refresh data manually. For example, if a drawing's table is open and the table shows 100000 records, and in the drawing some of the object are deleted, the table will not automatically refresh. Instead it will show an action bar with a prompt to refresh. That allows convenient interactive editing of drawings while their table windows are open without the table window (which might display up to 2 billion records) refreshing itself on every small change in the drawing.
A table window showing over 64k records detects deleted records and shows them in gray background color, with an X icon on the record handle. For example, deleting objects in a drawing window that has 100000 objects when the drawing's table is open will show empty gray rows in the table for the deleted objects. Pressing the refresh prompt in the action bar will refresh the table so those empty rows will be deleted. This provides fast means to delete objects in maps without fully refreshing tables, while still showing which records have been deleted.
The context menu for the fill record in the table window no longer includes a Stop Reading Records command.
The table window always applies filters only to the fetched records. The Filter Fetched Records Only command has been removed. Now that table windows can show up to 2 billion records, always using only the fetched records is no longer a limitation in the vast majority of cases. Tables bigger than 2 billion records can still be filtered using a query composed with the Filter using Query command.
Table windows always apply sort order only to the fetched records. If the table window shows a first sample of records instead of all records and you want to sort the entire table, fetch all records first. The maximum allowed size of field values used for sort ordering is 16 GB.
Watch the new 10 Minute Tutorial - Very Big Table Windows video to see 1.295 million records displayed in a table window. Fast!
SQL for ArcGIS Pro tries to locate manifold.exe using a dialog if it cannot be found automatically. The location of manifold.exe is then saved in an environment variable for future reference.
SQL for ArcGIS Pro supports ArcGIS 3.x. The install packages include two versions of the add-in: a version for ArcGIS 2.x in the ArcGis2 folder and a version for 3.x in the ArcGis3 folder. The EXE and MSI install packages detect the installed version of ArcGIS and register the corresponding version of the add-in.
Failed attempts to connect to a data source are recorded. Subsequent attempts to connect to the same data source are throttled. The delay starts at 1 second and gradually increases to 15 seconds. Errors for failed attempts to connect to a data source are logged with repeat errors (same error message) omitted.
Exporting ECW or JPEG2K tracks progress and can be canceled.
Exporting ECW or JPEG2K aligns reads to tile boundaries for better performance.
Exporting ECW or JPEG2K automatically adjusts internal buffer sizes when exporting very big images for performance (and, in very rare cases, to allow the export to succeed where it previously was failing due to exceeding one of the internal limits on temporary data).
Reading XYZ with a non-space delimiter allows whitespace both before and after the delimiter.
Reading XYZ with integer values that do not fit into INT32 converts all values to FLOAT64.
Reading XYZ skips NaN values. Records with such values have no business being in the file, but they might technically be there and some software packages apparently produce files with them.
Reading XYZ tracks progress and can be canceled.
Reading XYZ supports files bigger than 4 GB.
Reading XYZ protects from tiny drift in XY values to handle regular grids more reliably.
Reading XYZ / NC performs significantly faster, 4-5 times faster, and even faster with big files.
Writing XYZ performs significantly faster, 5-6 times faster, and even faster with big files.
(Fix) Exporting the result of a query with computed fields to MDB, SQLITE, or similar formats no longer fails.
(Fix) Printing geometry to WKT prints points with Z values as POINT Z or MULTIPOINT Z instead of POINT orMULTIPOINT.
(Fix) Printing geometry to WKT no longer ignores Z values for areas.
(Fix) Reading FLT with a malformed HDR may no longer erroneously set pixel scales to zero.
(Fix) Attempting to use components from a data source that fails to connect, for example, because it is referencing a file that does not exist, no longer disrupt the user interface, such as map windows, layout windows, or panes.
(Fix) Reading XYZ no longer ignores the first record if the file starts with UTF8 BOM.
(Fix) Reading NC creates an RTREE index on tiles.
(Fix) Writing XYZ prints all values with full precision. Previously, values that were very small or very large could lose some of the digits.
Build 177.1
introduces in Universal and Server editions a new version of Manifold:
Manifold
Commander is a console application version of Manifold that
provides the full range of Manifold query and scripting capabilities from
a command line, making it easy to automate almost any GIS, DBMS, or ETL
job.
Commander is provided as a manifoldcmd.exe executable file within the Manifold installation hierarchy. The manifoldcmd.exe executable file launches from a command line such as in a Windows Command Prompt window, or in a .bat batch file, or from a Windows PowerShell script and so on. Commander can run either queries or scripts from within a specified .map file, and Commander also can run scripts from a specified script file stored outside a Manifold project. When Commander is used in conjunction with Windows Task Scheduler, you can launch command lines to have Manifold automatically do work on a regular schedule, such as updating a CSV file every night that is served via a CSV server.
Build 177.1 also extends interactive selection capabilities, makes it easy to switch licenses, and provides bug fixes as well as improvements in the MapInfo MIF dataport.
Install packages for Manifold Release 9 (not Manifold Viewer and not SQL for ArcGIS Pro) include a new executable: manifoldcmd.exe, called Manifold Commander in these release notes. Commander is a console application that can be launched from a command line to automate common tasks.
Commander is limited to Universal and Server editions. When launched on a machine activated with Professional edition, nothing happens.
Commander log files use a -cmd postfix, to distinguish them from log files for other Manifold applications.
Commander can run queries within .map files, and can run scripts either within .map files or within script files that contain the desired script text.
Syntax:
manifoldcmd <command> [<options>] [<file>]
Commands:
-runquery:xxx - Open the file and run the specified query component. The component can be in a nested data source.
Supported options: -logfilter:xxx, -logfolder:xxx, -open:xxx, -out:xxx
-runscript:xxx - Open the file and run the specified script component. The component can be in a nested data source.
Supported options: -logfilter:xxx, -logfolder:xxx, and -open:xxx
-runscriptfile:xxx - Run the specified script file.
Supported options: -logfilter:xxx and -logfolder:xxx
Options:
-logfilter:min - Skip dates and prefixes when logging to console
-logfilter:minscript - Skip dates and prefixes, skip non-error non-script messages when logging to console, useful to limit output for further processing with command-line tools
-logfilter:none - Log full data to console (default)
-logfolder:xxx - Folder for log files
-open:readonly - Open file in read-only mode (default)
-open:readwrite - Open file in read-write mode
-open:readwritesave - Open file in read-write mode, save file after operation completes, this includes saving all nested data sources
-out:xxx - Output file, for example, a CSV or JSON. The type is determined by the file extension, .csv or .json, used.
Examples:
A .map project called Mexico.map contains a query called MexQuery that from a linked table generates a result table of all provinces in Mexico with a population greater than 3000000. To run the query and save the result to a CSV file called Mex.csv:
manifoldcmd -runquery:MexQuery -out:"C:\Projects\Mex.csv" "C:\Projects\Mexico.map"
Save the result to a SQLite file called Mex.sqlite:
manifoldcmd -runquery:MexQuery -out:"C:\Projects\Mex.sqlite" "C:\Projects\Mexico.map"
Save the result to a Manifold .map file called Mex.map:
manifoldcmd -runquery:MexQuery -out:"C:\Projects\Mex.map" "C:\Projects\Mexico.map"
Save the result to an Esri file geodatabase within a folder hierarchy C:\Projects\Mex\gdb.gdb\ and create the Mex and gdb.gdb sub-folders:
manifoldcmd -runquery:MexQuery -out:"C:\Projects\Mex\gdb" "C:\Projects\Mexico.map"
Double-quotes around arguments like the names of files are not necessary if there are no spaces in the argument. If the output file already exists, the above will overwrite it with the new version.
The Info pane shows the number of selected records in a table window (this includes table windows opened for query components, but not command windows for ad-hoc queries) or for the current layer in a map window, if that number is known.
There are two scenarios in which the number of selected records is unknown:
The total number of records in a table is unknown and the selection is inverted. This happens with streaming tables. Prime examples are the result tables of queries: such tables compute their data as they are being read so that you can start working with the returned records without waiting until all records are computed. An inverted selection stores keys of the unselected records, so while the system knows how many records are unselected, it cannot compute how many are selected.
The total number of records in a table is known, but the table has changed in a way that could affect the selection after the last selection operation. Examples of changes that can affect the selection are adding or removing records, or changing values in the key fields.
If the total number of records is unknown, the number of records is shown as a question mark, ?. If the number of selected records is unknown, the number of selected records s shown as a question mark, ?. If either of these numbers is unknown, the Info pane shows a Refresh button next to them. Pressing the Refresh button will scan the table and update numbers that are currently unknown. The scan tracks progress and can be canceled.
Manifold Server reports the total number of records in a served table, if the table knows the total number of records.
Combining the results of a selection template with an existing selection performs faster.
The Help - About dialog includes a new Switch License button that allows switching the current license to a different serial number, for example, to upgrade to a different edition of Manifold. The dialog prompts the user to restart the application after the license is switched.
Writing MapInfo MIF format now exports xN and UUID fields as CHAR data type.
(Fix) The Clear Filter command in a table window no longer fails to uncheck the selection filter button in the toolbar.
(Fix) Copying a table with mixed geometry into a database (eg, PostgreSQL) using copy and paste or drag and drop no longer sometimes fails because the new geometry field is wrongly limited to a specific geometry subtype.
(Fix) The Spatial select template that selects data based on a spatial overlay no longer fails to clear the selection when the overlay is empty and the selection mode is replace or intersect.
(Fix) The result tables of SelectionXxx query functions no longer sometimes fail to return data.
(Fix) Reading MapInfo MIF format no longer sometimes ignores the last object.
(Fix) Reading MapInfo MIF format correctly parses DATE, DATETIME, and TIME values.
(Fix) Writing MapInfo MIF format exports INT16U as INTEGER data type (was SMALLINT) and INT32U as FLOAT data type (was INTEGER), to avoid potential data loss.
Build 177 is a new base build, incorporating all improvements in the 9.0.176.x series of builds. It is recommended for all users. The main change since the prior cutting edge build, 9.0.176.7, is the expansion from a single Release 9 Universal edition into three new licensing levels: Professional, Universal, and Server. The three different editions are distinguished by the availability and configuration of Manifold Server. Over time, it is likely that other differentiations will emerge, with higher end features in the higher end editions.
Includes all features and functions of the former Manifold 9.00 Universal license, except Manifold Server.
Manifold 9.00 Professional can connect to Manifold Server as a client and Professional can create project files for sharing by Server installations, but Professional edition does not include Manifold Server to serve data outbound.
Includes all features and functions of the former Manifold 9.00 Universal license, and also includes a limited version of Manifold Server.
Manifold Server in Universal edition is limited to one Server instance on a server machine, it must be launched from a Command Prompt window, and the Server instance is limited to 20 connections.
A Manifold 9.00 Universal license includes simultaneous interactive use of Manifold 9 on the server machine, which makes it easy to configure project files that are served.
Manifold 9.00 Universal is designed to support sharing files via Manifold Server in smaller workgroups, where each user will be running a Universal license that allows running a Server instance as well as an unlimited number of interactive sessions on the user's machine. When most users in the workgroup are hosting Server instances, the total number of Server instances makes it easy for the workgroup to share many files.
Includes all features and functions of the former Manifold 9.00 Universal license, and also includes a unlimited version of Manifold Server.
The unlimited version of Server has no limit to the number of connections, no limit to the number of Server instances on a server machine, and the ability to launch and to manage Server instances as Windows services.
A Manifold 9.00 Server license includes simultaneous interactive use of Manifold 9 on the server machine, which makes it easy to configure project files that are served and also to launch and to manage Server instances as Windows services using the Manage Services dialog.
Manifold 9.00 Server is perfect for serving data from read-only projects to larger workgroups or, with more powerful server hardware, to entire organizations. The ability to launch many instances makes it easy to organize access to different communities of users based on access URLs and credentials. An unlimited number of connections is perfect for taking advantage of cost-efficient, many core CPUs that can provide very many threads on server machines at low cost.
Pressing F1 in the Tools - Manage Services dialog opens the Manifold Server topic in the default web browser.
There is a new style for text fields in tables: file = absolute path to a file. When text fields are formatted using that style, table windows and the Info pane will highlight text in blue color and will show a new Open File command in the context menu when a cell is clicked. If a specific value is a well-formed path, but the file referenced by it does not exist, the Open File command is disabled. The Open File command opens the file using whatever is the default Windows handler for that file type. That makes it easy to have fields in tables that contain file names that are images, PDF files, saved RDP files, or anything else that Windows can open, and to be able to open those files instantly from within Manifold.
Build 176.7 delivers small improvements to the user interface and a set of really convenient additions to Manifold Server. Server can now run as a Windows service. The next build will likely be 9.0.177, a new base build.
Watch the new 10 Minute Tutorial - Manage Services video to see the new Manage Services dialog in action.
Illustration: The new Service dialog makes it easy to create new Server instances on a server machine, without having to launch a Command Prompt window and configure new instances using command lines.
Server binds to the network interface in exclusive mode for security purposes.
When launched in a Command Prompt window, Server sets the console title to Server - addr:port - filename. This hides sensitive information like usernames and passwords and it also shows connection information even if that was not spelled out in the command line.
Server supports a new -logfolder:xxx command-line option to redirect logs.
Server supports a new -service command-line option to run as a service. There can be multiple Server services running on the same machine. If a particular service is configured to run under one of the non-interactive system accounts, such as SYSTEM, running it requires installing the Manifold license for all users. The default location for log files for a service is in the common application data folder, C:\ProgramData\Manifold\v9.0.
There is a new Tools - Manage Services command that lists Server services on the system. For each service, the command shows its name, path to the served file, network address and port, start type (auto, manual, or disabled), status (starting, running, paused, stopping, or stopped) and process ID. This command is not available in Viewer or in SQL for ArcGIS.
The Manage Services dialog allows double-clicking a service in the list of services to show service parameters: service name, path to the Server executable, path to the served file, network address, network port, start type, additional command-line options.
The Manage Services dialog allows refreshing the list of services.
The Manage Services dialog allows adding a new service, editing the parameters of an existing service and deleting selected services. Adding, editing and deleting services requires administrator rights. If the current user has no administrator rights, the dialog disables relevant functionality and shows a prompt to run the program as administrator.
Adding a new service in the Manage Services dialog suggests a network address (the first registered network address) to use and a network port (the first unused port between all listed Server services, starting with the default 9099 and going up) to use. For convenience, it provides a list of all registered and loopback network addresses to select from.
The Manage Services dialog allows starting and stopping selected services. Starting and stopping services requires administrator rights.
Tech Tips: When running Manifold Server on a machine, launch Manifold with administrator rights: right-click the manifold.exe file and choose Run as Administrator. When Manifold launches, in Help - About, press the Install button to install the license for all users if it has not yet been installed for all users. To manage Server services, always launch Manifold with administrator rights.
Illustration: The new Manage Services dialog makes it a lot easier to manage Manifold Server instances running as services, without needing to hassle with Windows services dialogs. Click the New toolbar button to add a new Server instance. Ctrl-click a row to select it, and then press start, stop, or delete buttons as desired. Double-click a row to change settings like auto or manual launch on system reboot.
There is a new View - Panes - Fit to Screen command that puts all undocked panes and windows onto the screen. If there are multiple monitors, the command chooses the nearest monitor for each pane or window and puts the pane or window onto that monitor. The command helps locating panes and windows that have been accidentally moved nearly offscreen using the cursor or ended up being completely offscreen due to changes in monitors (may happen with remote desktop connections, among other scenarios).
The Register pane shows automatically placed control points with a distinctive icon. Any editing done to an autoplaced control point removes the autoplaced flag.
Alt-clicking a control point in the Register pane pans the map window to that control point.
Creating a new RTREE index for tiles suggests using fields starting with x and y for XY values.
Editing a traverse allows entering a traverse command for the insert coordinate. This allows entering geometry data as a sequence of traverse commands, with visual feedback at every step.
(Fix) The TileGeomOverlayCount query function on longer allows specifying a non-numeric field as an argument. Either specify either no field by passing an empty string, or specify a numeric field.
Build 176.6 introduces dramatically faster spatial overlay functions and faster LiDAR performance with LAZ files. Big jobs that previously took over two and a half hours now can be done in six minutes.
GeomOverlayXxx (non-topology) query functions can be canceled in the initial data collection phase.
GeomOverlayXxx (non-topology) query functions optimize cases where a big source table has a small overlap area with an overlay table, as long as the source table has a spatial index.
GeomOverlayXxx (non-topology) query functions optimize cases where a source table has a small overlap area with a big overlay table, as long as the overlay table has a spatial index and the source table can determine its bounds without being read in full (this usually means that the source table also has a spatial index and is static, that is, not a query).
GeomOverlayXxx (non-topology, non-filter) query functions now only return pairs of records for the actual overlay incidents. Previously they were also returning a single record for each record in the source table which had no corresponding records from the overlay table, similarly to a LEFT JOIN. We changed the behavior to be similar to an INNER JOIN, because otherwise the functions have to return at least as many records as there are in the source table, which is frequently undesired and just makes processing the result slower. If there is a need to obtain records from the source table that have no overlay incidents, that can be done separately after.
GeomOverlayXxxFilter query functions perform proportionally to the number of records that have overlay incidents. Previously, fetching all records of the overlay filter required going through all records of the source table. This and other changes to GeomOverlayXxx functions apply to various UI tools that use them, eg, they apply to the spatial overlay select templates and to the Join dialog when it transfers data between drawings.
SelectionXxx query functions perform proportionally to the number of selected records. Previously, fetching all selected records of a table required going through all records of that table. The change applies to various UI tools that work with selections, eg, copying a few selected records from a large table now performs much faster. The only exception is that selections that have been inverted continue to perform proportionally to the size of the table, not to the size of the selection.
Opening a LAZ file with a COPC index validates index data and turns off the index if its data is invalid.
Reading a LAZ file no longer progressively caches uncompressed data on disk and instead uses multiple reading heads. This significantly improves performance.
Performing a spatial search on a LAS or LAZ file with a COPC or .mapindxp index works faster.
The above improvements significantly improve the performance of spatial overlays when input data sets are not similar in size or do not significantly overlap. That is a very common situation since often a smaller data set, such area objects for a particular town or parcel, is used to extract data of interest from a very much larger data set, which might cover an entire county or province. The exact performance gains depend on the overlap size, and can easily be 5x, 10x or more. For LAZ, the improvements are even bigger. A test example used a LAZ file 375 million points with a COPC index and fetched 3.5 million points covered by an area in a different drawing using GeomOverlayTouchingFilter. The time to complete the job in prior builds was two hours and 38 minutes (9230 seconds). Using build 176.6 the time dropped to only six minutes (363 seconds), 25 times faster. If the area was even smaller, extracting fewer points from the LAZ file, the task would have taken even less time.
(Fix) Selecting records in a table with an identity index on text fields with external collates (for example, as in an external database) no longer sometimes fails to work.
(Fix) Writing a BIL, FLT, GRD, IMGERDAS, or TIFF file with pixel scale expressed in units other than meters no longer writes wrong local offsets to the accompanying .MAPMETA accessory file.
(Fix) Rendering a LAZ file with a COPC index no longer sometimes prunes search too aggressively.
Build 176.5 expands the license activation system to add an option for enabling installation of a license for all users on a machine at once. That simplifies use for some organizations, for server use, and for IMS use in Release 8, which uses the same activation system.
Build 176.5 also introduces a new, integrated, parallel Download Manager, Manifold's new, high speed, parallel system for downloading tiles from web servers such as image servers, TMS servers, WMTS servers and ArcGIS REST servers. The download manager is a built-in feature within Manifold that works automatically in background. There is no need to install, configure, or administer any modules or other software. Just use Manifold the way you always do and web servers seem to be much faster and more responsive.
This build also provides conveniences such as persistent data types in the Schema dialog remembering the last-used type, Drag and Ctrl-Shift-Drop to link data sources read-only (which facilitates creating projects for Manifold Server and other shared use), a new email style in tables for rapid emailing, and a Suggest Locations toolbar button in the Register pane for faster georeferencing. A variety of other features and a few fixes are also in the new build.
Manifold licenses optionally can be installed (activated) for all users on the same system. The About dialog shows whether the license in use has been installed for all users, and it allows installing or removing the license for all users. Installing or removing the license for all users requires administrative privileges and will prompt the user for administrative credentials.
The Activate dialog includes an option to install (activate) a Manifold license for all users on the same system. The option requires administrative privileges and will prompt the user for administrative credentials.
Manifold licenses installed for all users on the same system work for restricted user accounts for web applications managed by IIS. This allows using Manifold 8 IMS in web applications served by Windows 10+ IIS without any extra configuration for the application pools.
The download manager caches downloaded data in an application-wide cache which is only cleared when the running application, such as desktop Manifold, Manifold Server, or a third-party application using Manifold through the scripting API, is closed. That allows the system to reuse downloaded data between multiple dataports connecting to the same server even across different MAP files.
The download manager allows the user interface to cancel outstanding downloads in the middle of those downloads without waiting for the network. This prevents freezes when a map window that shows a web image is getting panned or scrolled or closed in cases when requests for tiles being downloaded could take a long time to determine if they will complete or fail.
The image server dataport uses the new application-wide download manager.
The TMS dataport downloads tiles using the new download manager.
The WMTS dataport downloads tiles using the new download manager.
The ArcGIS REST dataport downloads tiles using the new download manager. Note that ArcGIS REST servers can be configured to serve some images as screens rather than tiles. Such servers and images will work, but without the benefits of parallel downloads and reliable cancels provided by the download manager.
The Field dialog in the Schema dialog saves and restores the last used data type when creating a new field. This allows quickly adding multiple fields of the same type, for example, quickly adding a series of fields that are all text fields when altering a table's schema.
Drag and Ctrl-Shift-Drop - Dragging and dropping files into the Project pane with both the Ctrl and Shift buttons pressed will link those files in read-only mode. That makes it easy to create projects with read-only data sources, a great convenience when creating projects that will be shared by other users or served by Manifold Server.
The Project pane shows disconnected data sources that are linked in read-only mode using a lock icon. That makes it easy to see which data sources are read-only even before they are used.
Tables now provide a new style for text fields that are email addresses. Email addresses are shown using the same color as URLs. Right-clicking an email address shows a new Send Email command in the context menu, which automatically launches your mail client, such as Outlook, with the email address loaded in a new email message. That makes it very easy to compose and send an email to the right-clicked address.
New query function: StringEmailValid - takes a string and returns true if the string is a valid email address. The validation is permissive and should only be used to filter out strings that are certainly not email addresses.
New query function: StringUrlValid - takes a string and returns true if the string is a valid URL.
The Manifold ODBC driver allows connecting to a new temporary database using DRIVER=...;DBTYPE=TEMP; in the connection string.
The SQL Server dataport supports DATETIMEOFFSET and DATETIME2 data types. DATETIMEOFFSET values are automatically converted to the timezone for the current user on both read and write. Reading a date with a timezone converts data to the timezone for the current user. Entering a date without a timezone will use the timezone for the current user.
(Fix) Importing a TIFF file no longer sometimes fails to create an RTREE index on x-y-tile fields (a regression).
(Fix) Alt-clicking a tile in an image in a linked TIFF file no longer sometimes fails to show pixel values.
Build 176.4 introduces Manifold Server, Manifold's new, high speed, fully parallel, multiuser spatial database. Server provides very powerful new technology for sharing vast amounts of data from Manifold .map project files, enabling many users at once to use data in projects shared by Server. Server is a built in part of Manifold Release 9 Universal edition, build 176.4 or more recent. Build 176.4 also includes new features for the Manifold ODBC driver, improvements to ArcGIS REST, GDB, ECW and TIFF dataports, as well as fixes.
Manifold Server, called Server for short, is a read-only spatial database server that shares the contents of a Manifold project to one or more Manifold clients. Clients are regular Manifold desktop sessions, or even free. Because .map projects can contain nested links to other .map projects, the project shared by Server can be the top level entry point to a hierarchy that shares the contents of thousands of .map projects, containing many terabytes of data.
Manifold Server is automatically installed when installing Release 9 Universal. Server can run on a machine at the same time as a regular Manifold session, and multiple Server instances can run at the same time on the same machine, with each Server instance sharing out a different .map file.
See details in the new Manifold Server topic. See also the First Look - Manifold Server video.
Easy to Launch, Load, Administer - Server is the easiest to administer multiuser database server around. Simply launch Server in a command line with the Manifold project file containing data to use. No need to mess around with loaders. Change the data in the database? Stop the server and then launch it again with an edited project, or an entirely different project. Share the contents of the database with someone else? Send the .map project file and you're done. Same with backups - easy!
Many Clients and Many Servers - Many Manifold client sessions can run on the same machine, with each such session connecting to many different Server instances on that same machine or on other machines. Many Server instances can run on the same server machine, with each Server instance using a different port and/or IP address, and each Server instance can serve many Manifold clients from other machines or from the same machine.
Parallel Connections - Manifold client sessions connect to Server using asynchronous, multithreaded, parallel connections for significantly better performance than narrow technology like ODBC. Many threads are balanced on the fly to handle both large and small threads.
Server-Side Rendering Pipeline - When rendering big layers most of the work is setting up the rendering task. Server prepares layers for rendering server-side with full parallelism with only the final stages of rendering happening in the client. That allows very large data in Server to be browsed by clients almost as fast as if it were local. Server-side rendering eliminates the need to send tens or hundreds of gigabytes through the network connection to a client for rendering. You can pan and zoom through a 100 GB vector project through a Server connection almost as fast as if it were local.
Server-Side Execution - Queries in projects shared by Server are executed on the server machine, sending only results to clients. Queries can be executed within the Server, within the client, or in a mix of both. Executing queries within Server avoids sending large amounts of data through network connections.
Distributed Parallel Computation - Manifold clients can connect to many different Server installations at the same time, pulling layers from those different Server installations to use together in maps. If a map includes three different layers from three different Server installations on three different machines, when that map is panned and zoomed each of the three different layers will be prepared for rendering and otherwise serviced by the Server machine sharing that layer, so that the computational resources of three different machines will be utilized. Instead of parallel processing on a single computer handling all three layers, parallel processing on four different machines, the three Server machines plus the client machine, will be used to speed up the rendering pipeline for the map. That can result in visibly faster response with big layers.
Database / Data Source Tunneling - Tunneling allows users to reach through Server to utilize data sources within Server. If a project shared by Server contains data sources that are databases, such as SQL Server, Oracle, PostgreSQL and others, a Manifold session connecting to Server can open those data sources in the Server hierarchy and reach down into them to use their contents. Other data source content, such as linked files, linked Manifold .map projects, linked Esri geodatabases, and other data sources is also automatically tunneled. Web sources like Bing or Google image servers or ArcGIS REST servers reachable through Internet is not tunneled, but instead automatically set up for direct connections from the Manifold client session to the web source. In both cases layers and data sources shared through Server can simply be used without users worrying about the details of whether they are tunneled or not.
Servers Nested within Servers - Projects shared by Server can contain Manifold Server data sources, with nested Server data sources automatically setting up pass-through tunneling. For example, a project shared by Server on machine A might include Server data sources using Server installations on machines B and C. A Manifold client connecting to Server A will see the Server B and Server C data sources within that project and will be able to open them and use the data and links they contain. Server A will automatically arrange pass-through tunneling to Servers B and C, which will in turn automatically arrange pass-through tunneling to the data sources they share.
Automatic Version Negotiation - Different build levels can be used for a Server installation and for Manifold clients connecting to that Server installation. When the connection is formed the different versions will negotiate to use a common feature set despite different build levels.
Easy User Interface - Both Server and client user interfaces have been kept as simple as possible. Server launches in a simple command line, with a few simple configuration options. Connections to Server within Manifold clients use the same New Data Source interface used for other databases and data sources.
Copy / Paste Server Data Source - Server data sources in a Manifold project are just like any other data source. They can be saved as Favorites for one-click addition to any new projects, they can be copied from one Manifold session and pasted into a different Manifold session, and they are saved as part of the project whenever a Manifold client project is saved, with automatic reconnection when the saved project is opened.
Secure Access - Server can be launched with a user login and password required, to control access when accessible from public Internet.
manifoldsrv [<options>] <file>
The file is required and can be of any type supported by 9. If no file is provided, Server prints the command line syntax and exits. If the file is provided, Server opens it and starts serving connections to it.
-addr:xxx -- network interface to listen on, the default is the primary network interface.
-port:xxx -- port to listen on, the default is 9099, currently unassigned by IANA.
-user:xxx -- user required to connect, the default is none.
-password:xxx -- password required to connect, the default is none, ignored if user required to connect is not specified.
-connections:xxx -- maximum number of connections, the default is 20, use 0 to remove the limit.
-workers:xxx -- number of worker threads to process requests, the default is 4, the number can vary between 1 and 128.