Manifold Viewer Changelog

What's new in Manifold Viewer 9.0.180.3 Edge Build

Jun 25, 2023
  • ODBC:
  • The ODBC driver supports extra connection options required by newer versions of Excel 365.
  • Serving Web Maps:
  • Set web map size - The HTTP server allows -cx:xxx and -cy:xxx command line options to specify the image size in pixels. The maximum allowed value for each option is 4096. If neither CX nor CY is provided, the image size is 800 x 800 pixels. If both CX and CY are provided, the image size is CX by CY. If only CX or CY is provided, the image size is CX by CX or CY by CY, providing a quick way to set square image sizes by specifying only one parameter.
  • The HTTP server better handles invalid requests with attached content. (Previously they were being rejected later than they could have been.)
  • Attempting to create a second instance or to reinitialize an existing instance of the Javascript control provided by the HTTP server does nothing. There can currently be only one instance of the Manifold Javascript control per web page. This limitation will be removed in the future.
  • The HTTP server provides safeties if the image size is specified to be very small: If the size of the Javascript control (the web UI) provided by the HTTP server is less than 200 x 200 pixels, the control reduces to a static image and the toolbar will be turned off for lack of space. Panning and zooming using the cursor also will be turned off for lack of a way to get back to the original extent (also, because the image might be too small to do panning and zooming in general.)
  • The HTTP server shows the description of the served component below its name. When providing the description for a map, make sure to edit the description of the map component instead of the description of the active layer.
  • The Javascript control (web UI) provided by the HTTP server puts the toolbar directly onto the top edge of the map without any gaps, to better use the available space.
  • Cache priorities - The HTTP server uses the following priorities for the image cache: full view is prioritized over any other view, and views showing default layers are prioritized over views with some layers turned on or off.
  • Adapt to mobile devices - The Javascript control (default web page) provided by the HTTP server adjusts the UI for devices with a touch screen such as phones: toolbar buttons are made bigger to make them easier to tap with a finger, hover effects for toolbar buttons are turned off, and panning and zooming the map using the cursor is turned off. Tapping or clicking on the map re-centers it to that spot.
  • Locations Toolbar Button - The HTTP server includes available locations in the configuration data for the Javascript control (web UI). The Javascript control shows locations provided via the configuration data in a drop down menu and allows zooming to those locations.
  • Turn Layers On and Off - The HTTP server includes layers that can be turned on or off in the configuration data for the Javascript control (web UI) . The Javascript control layers toolbar button shows layers provided via the configuration data in a drop down pane with check boxes and allows turning them on or off and then saving changes using an Apply button. The default list of layers that be turned on or off is composed according to the following rules:
  • Hide layer groups - If the served component is a map, top level layers can be turned on or off but layers inside layer groups cannot. The distinction allows maps to have both layers that can be controlled via the web UI and layers that cannot be turned on and off via the web UI.
  • Last layer stays -If the served component is not a map, its only layer cannot be turned on or off.
  • REST Endpoints - Changes to HTTP server endpoints:
  • /config - A new endpoint: returns the configuration data for the served component as plain text, this is useful as a reference when setting up a web site.
  • /map - Supports a new parameter: layermod=hXXsYY... to turn layers on or off, the value of the parameter is a string of hXX and sYY commands where hXX forces a layer with an ID equal to XX to be hidden, and sYY forces a layer with an ID equal to YY to be shown unless it is oherwise hidden due to the current scale being outside of the layer's min-max scale range. h is a mnemonic for hide and s is a mnemonic for show. Layer IDs are found in the configuration data for the component.

New in Manifold Viewer 9.0.180.1 Edge Build (May 9, 2023)

  • Launching Manifold in the context of an external application via ODBC, COM or .NET no longer places any restrictions onto the COM threading model of the calling thread. (Previously, the calling thread must have been using COM STA, otherwise attempting to launch Manifold would fail.)
  • MANIFOLDSRV allows specifying the server type using the -type:xxx command line option. Specifying -type:http runs the HTTP server, specifying -type:tcp runs the TCP server (the default).
  • The Universal edition is limited to a single server instance regardless of its type (you can only run a single TCP server or a single HTTP server, but not both simultaneously).
  • The HTTP server serves a single component (drawing / image / labels / map). The name of the served component is specified using the -component:xxx option, the default is 'Main'.
  • The HTTP server implements HTTP/1.1. The supported methods are: GET / HEAD. All text is returned as UTF-8. All images are returned as PNG.
  • The HTTP server accepts multiple HTTP requests queued to the same connection without waiting until the first requests are processed.
  • The HTTP server, similarly to the TCP server, can run as a service.
  • The HTTP server does not use the -workers:xxx option. Threads used by the HTTP server are organized differently from threads used by the TCP server, the number of threads for the HTTP server is managed automatically.
  • The HTTP server does not use the -user:xxx and -password:xxx options. (In the future, we might support them for HTTP authentication, but this is not a priority, it is generally better to use client-side authentication.)
  • The HTTP server defaults to port 80 (unlike the TCP server that defaults to port 9099).
  • MANIFOLDSRV shows the server type in the window caption when running in a console window.
  • Map images rendered by the HTTP server have the 'manifold.net' watermark in the right bottom corner.
  • The web page served by the HTTP server is organized so that the map UI is put into a Javascript control and the page itself merely creates and initializes that control. This allows putting the map served by the HTTP server onto an existing web site with minimal changes. See the post for web developers below for details.
  • The web page served by the HTTP server shows the name of the served component in the page title and above the map.
  • The map UI used by the HTTP server allows panning the map using the cursor. Pressing Escape while panning cancels the operation.
  • The map UI used by the HTTP server allows zooming the map using the wheel. Multiple zooms from the wheel are combined together, the map is updated after the wheel is not scrolled for 1 second.
  • The map UI used by the HTTP server shows buttons in the left top corner of the map: zoom in, zoom out, zoom to fit. The extent used by zoom to fit ignores layers for web images such as Google or Bing unless all other layers in the map are empty.

New in Manifold Viewer 9.0.178.5 Edge Build (Dec 30, 2022)

  • Label Overlaps:
  • 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.
  • Layouts:
  • 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.
  • Fixes:
  • (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.

New in Manifold Viewer 9.0.173 (Dec 31, 2020)

  • Panes and Windows:
  • Individual panes have been taken out of the Contents pane and are now standalone can be shown simultaneously and independently.
  • Windows and panes can be docked, moved between top and bottom rows, undocked or closed using the context menu.
  • Panes can also be moved between left and right side docking.
  • Floating windows and panes snap to each other when moved or resized.
  • New Info Pane:
  • The former Component and Record panes have been merged into the Info pane.
  • The pane shows various new data for components: dimensions for an image, language for a script, page size for a layout, editable descriptions for all components, and more.
  • Editing a record in a table shows record data into the Info pane: geometry values can be expanded to show coordinates and tile values can be expanded to show pixels in a separate tab. A new Related tab allows searching for records in a secondary table related to the picked record.
  • Illustration:
  • Creating a buffer zone using a formula for the distance, with kilometers as units of measure, and then saving the result to a new geometry field in the table with a drawing automatically created to visualize that new geometry.
  • New Select and Transform Panes:
  • The Select and Transform panes have been redesigned to use a new workflow that provides better use of screen space, greater persistence and the ability to more rapidly, iteratively reapply operations with changes in parameters and targets.
  • Both panes remember their state on a per-window basis, allowing switching between windows while retaining Select and Transform settings for each window.
  • Both panes show a list of last-used templates, and allow pinning last used templates for use between sessions, and to allow quick repeats of more popular commands.
  • The Transform pane now easily redirect results to the desired destination, including creating new components on the fly with easier editing of names directly in the Transform pane.
  • Many transforms that previously required creating new components now allow putting the results into a new field as an option.
  • Transforms provide broader control over the amount of parallel CPU and parallel GPU computation resources used by a template.
  • Enhancements include easy picks from a vast range of units and not just the base unit used in a coordinate system.
  • There are numerous new templates and extensions to existing templates.
  • Queries generated for templates are shorter, with queries for transforms having clearly separated setup and repeatable parts, allowing rapid customizing and recycling of queries.
  • Previews:
  • A new system for Select and Transform pane previews in table windows and visual windows provides greater accuracy and speed with larger data, with better visual presentations for data science and "what if" visualizations.
  • Separate query generation paths are used for preview queries, with new supporting machinery in the query engine for increased speed. Previews using full data sets are now often faster than previous previews only limited, partial data.
  • Previewing the results of a select or transform in a table now uses a separate preview field that can be dragged in position as desired for rapid comparisons, resized, or temporarily hidden.
  • Previewing the results of a select or transform in a map uses a separate preview layer, which can be resized to cover the full width of the window, or shown in split screen mode with the display partially previewed and partially without preview, with a draggable splitter line to allow sizing preview/no preview display as desired.
  • A single click can toggle 100%, 75%, 50% or 25% opacity for previews to compare proposed results with see-through background data.
  • All data for the preview layer is computed with full accuracy at the beginning rather than dynamically on zoom or pan, using multiple threads, ensuring very fast subsequent display.
  • Transforms that previously lacked previews now have them.
  • Previews persist on a per window basis, allowing multiple simultaneous previews in different windows.
  • Previews persist through other operations, allowing pan and zoom, adding new layers, turning layers off and on and much more without losing a preview.
  • Queries
  • There are hundreds of new query functions.
  • Many raster functions have been extended to allow operating on a specific channel of a multi-channel image.
  • Many vector functions for 3D data have been extended to allow choice of a field giving Z data.
  • Dataports (File Formats and Data Sources)
  • Dataports for databases detect disconnects and automatically attempt to reconnect. Dataports for databases optimize batch operations for faster performance, automatically breaking big transactions into manageable portions to avoid failures.
  • GPKG always utilizes built-in support for SQLite.
  • Exporting a GPKG performs faster and produces files conforming to the latest version of the GPKG spec.
  • Reading a TIFF recognizes pyramid data stored within the file.
  • Geocoding servers and Reverse Geocoding Servers of different types are now available, merged together with URLs for individual services specified separately.
  • Geocoding servers for Bing / Google / Here / MapBox / MapQuest / Yandex support search services that allow locating features near a lat/lon location with a filter.
  • Linking an ArcGIS REST server supports vector (feature) data as well as raster data.
  • Various web dataports have been strengthened to work around server errors.
  • Infrastructure:
  • The limit on temporary data used internally in 64-bit Manifold has been increased to 1 TB.
  • Spatial indexes for tiles have been extended to support a number of operations which help the UI: computing bounds limited to visible pixels, computing approximate statistics, etc.
  • Spatial indexes for tiles are supported in .map files and in file dataports that store data in MAPCACHE files.
  • Virtual drawings:
  • Operations on geometry can use any table with a geometry field. The geometry field does not have to be part of a spatial index, although having such an index will frequently help performance.
  • Query functions that operate on geometry can accept either a physical drawing component stored in a database, or a virtual drawing created on a geometry field (using the ComponentFieldDrawing function) of a table or of a query component.
  • Virtual drawings support all functions available for regular components: for example, reporting coordinate systems or the name of the underlying component.
  • Both physical and virtual drawings can be limited to using only selected records with the result being accepted as a drawing by query functions.
  • Virtual images:
  • 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.
  • Virtual images support 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.
  • Numerous UI Improvements:
  • Enhanced Layers pane functionality with new commands and capabilities.
  • Layouts can now zoom a frame to the location of a different opened window, or to a saved Location.
  • Layout frames can save a Location from that frame.
  • Editing text windows like comments, locations, queries or scripts automatically saves changes every 5 seconds or on switch to a different window.
  • 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.
  • Automatic style applies to all images which have a spatial index and which do not have an explicit style set, which is helpful for images created by user queries and scripts.
  • Updates since 172.7
  • The default number of neighbors for Kriging / gravity parts of the Interpolate transform has been changed to 10 (Voronoi neighbors) from 0.
  • (Fix) The value of the radius parameter for Kriging / gravity parts of the Interpolate transform has been adjusted for output resolution.
  • Kriging computes model parameters in units of the output coordinate system, to make the model resolution-neutral.
  • Computing the automatic radius for Kriging has been adjusted to better represent the model. Previously, computing the automatic radius might have produced a value that was somewhat too small, as a result of being reduced too aggressively based on the number of neighbors. Logic has been adjusted to match logic used in ESRI products.
  • Previews for transform operations in a table window show only values for selected records when the Transform selection only box has been checked.
  • For Select and Transform pane previews, the context menu for the preview caption bar in map windows now provides commands to set the opacity of the preview results:to 100% Opacity, 75%, 50%, or 25%, allowing a view of layers below the preview results.
  • The minimum width of a field header in a table window required to show icons, like used to show the target of a preview or to show sort order, has been reduced to enable showing icons in as narrow a field as possible.
  • (Fix) The LIKE operator in queries correctly handles non-alphanumeric characters in the search pattern.

New in Manifold Viewer 9.0.172.6 Edge (Nov 4, 2020)

  • The first in a two-build series introducing new preview capabilities for Select and Transform panes. This build provides contains the core capabilities for table windows, including changes to panes, separate query generation paths for preview queries, new supporting machinery in the query engine for the preview queries and more. The second build in the series will be released in a week and will add refinements for table windows and extend previews to map windows.
  • Previews:
  • Select and Transform panes include a Preview button to show a preview of the operation. In the current build, previews are limited to table windows. The next build will provide previews in map (drawing, image, etc.) windows as well. See the Transform Pane topic for a quick introduction.
  • Previews for a transform operation in a table window show a virtual preview column in blue preview color on top of table columns. The name of the preview column is set to the name of the transform template. Previews values are computed dynamically as the table is scrolled. Preview columns cannot be scrolled out horizontally and are always visible.
  • Previews for a select operation in a table window show a virtual preview column on top of table columns, but reduce the preview column to its caption, with records in the table changing background color as follows:
  • white = the record is currently unselected and will stay unselected,
  • red = the record is currently selected and will become unselected,
  • blue = the record is currently unselected and will become selected,
  • violet (red + blue) = the record is currently selected and will stay selected,
  • gray = the selection value is being computed.
  • The name of the preview column for selections is set to the name of the select template. Previews values are computed dynamically as the table is scrolled
  • Preview columns can be hidden using a Hide Preview command in the context menu popped open by right-clicking on the preview column head.
  • Preview columns for a transform can be temporarily collapsed to the caption (column head only) or expanded back to caption and values using the Values command in the context menu (works as a toggle), or by clicking on the up/down arrow icon on the right side of the caption.
  • Preview columns can be resized by dragging either of the borders. Dragging the border of a preview column snaps it to a border between regular fields, with reasonable tolerance.
  • Preview columns can be dragged left or right in the table using either the caption or the column body with values. Dropping the preview column onto a regular column makes the preview column start at the left border of the target column. Dropping the preview column close to the right border of the rightmost table column makes the preview column start at that border.
  • Previews for a transform operation that saves results into an existing field will mark that destination field with a large dot icon in the column head for that field.
  • Previews for a transform operation that produces geometry, tile, or binary values in a table window reduce the preview column to its caption and show a tooltip reporting that the preview is unavailable. Operations that produce geometry or tile values should be previewed in a map window. Operations that produce binary values are not previewed because checking whether a particular binary value is intended is impractical without a highly specialized UI.
  • Previewing the result of a select or transform operation and then changing the parameters for the operation in the relevant pane does not update the preview automatically. To update the preview, click the Preview button again. Previews for select and transform operations override each other. For example, clicking the Preview button in the Transform pane will show a preview in a table window. Clicking the Preview button in the Select pane will hide the transform preview and will show the Select preview. Going back and forth between pressing Preview in the Transform and Select panes will alternate between Transform and Select previews. Performing a select or transform operation by clicking the Select button or Transform button applies the operation and removes the preview from the active window.
  • Switching between windows does not remove previews. It is possible to have multiple previews in multiple different windows shown simultaneously.
  • Other:
  • Renamed transform parameters: cuts -> parts, Cut with: -> Split with:, Cut with selection only -> Split with selection only, coordinates with step -> line coordinates. (Relevant Transform topics have been updated.)
  • Renamed query function: GeomToCuts -> GeomToParts.
  • Renamed query functions: GeomSplitToConvex and GeomSplitToConvexPar -> GeomToConvex and GeomSplitToConvexPar.
  • New query function: GeomPartLine - computes part of a line between two specified distances. If the begin distance is larger than the end distance, the returned part goes in the direction opposite to that of the line.
  • New query function: GeomToPartsLineSequence - splits a line into parts between specified distances. If the begin distance is larger than the end distance, the returned parts go in the direction opposite to that of the line. The result table includes minimum and maximum distance for each part.
  • The Split transform template for geometry values allows splitting lines into line parts.
  • For compatibility with other packages, the rules for world file extensions have been changed to: (a) take the original extension and add W, (b) take the first letter, take the last letter and add W.
  • The Reshape transform template for geometry values rotates geometry values clockwise. The GeomRotate query function keeps rotating geometry values counterclockwise, with the the template merely changing the sign of the parameter value.
  • The Copy transform template for geometry values support copying a rectangle to an x4 field.
  • The ArcGIS REST dataport supports ArcGIS servers with vector data. Downloaded vector data can be cached in the parent data source via the 'Save cached data between sessions' option. For an example, see the server that powers the dashboard for COVID-19 data from Johns Hopkins University, at https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer
  • The GDB dataport attaches EPSG codes to coordinate systems with equivalent WKID codes, to allow using grid-based and other EPSG coordinate transforms when re-projecting components with these systems.
  • The WMS dataport detects server errors that aren't flagged as errors and reports them in the log window.
  • The WMS dataport performs additional filtering of layer coordinate systems to better work with servers that report unsupported coordinate systems in bounding box data.
  • Dataports for SQL Server, Oracle, DB2, and MDB wrap batch insert, batch delete, and batch update operations into transactions for robustness and performance. Dataports for other databases were already doing this, with this addition providing this feature for all dataports for databases.
  • Dataports for all databases automatically break big transactions for batch operations into manageable portions. Without this feature, most databases will fail with an overflow error after the amount of data about to be committed exceeds a certain limit. The limit is frequently not a very big one either, usually being in the range of 15,000 to 20,000 records or 50 MB to 100 MB of record data. Those values are far too low for GIS work so Manifold protects against overflows.
  • The SQL Server dataport supports the newest ODBC driver for SQL Server available from Microsoft, v17. A notable addition to support the new Microsoft ODBC driver is that the dataport recognizes custom types for geometry, geography, and XML fields reported by the driver.
  • The MDB dataport automatically corrects names of newly inserted tables to fit into the limits imposed by MDB, for example, (no leading spaces, no double quotations, no periods, and so on.
  • (Fix) Computing viewsheds for all observers using visible area from all, or visible level from all no longer sometimes fails to handle tiles without observers.

New in Manifold Viewer 9.0.172.2 Edge (Jun 4, 2020)

  • Panes and User Interface:
  • The Record pane has been renamed the Info pane.
  • The former Component pane now is a Component tab in the Info pane. When the Info pane has no picked records, the Component tab is the only tab shown. When the Info pane has a picked record, the Component tab is shown last.
  • The Component tab in the Info pane separates data for a map and the active map layer using a separator instead of a text caption.
  • The Info pane shows '(no index)' for a drawing / image / labels with no spatial index.
  • The Info pane shows the text field used for labels.
  • The Info pane shows the language for a script.
  • The Info pane shows the number of lines for a comments / location / query / script text.
  • The Info pane shows the page size for a layout.
  • The Info pane shows the number of fields for a drawing / image / labels / table.
  • The Info pane shows the dimensions for an image.
  • The Info pane shows and allows editing the description for any component.
  • The Project pane reduces the description of a component to a single line (the first line) in the tooltip. (Previously it was trying to show the entire description.)
  • Editing entire records in a table window has been reworked to use both the table window and the Info pane. Alt-clicking a record cell or a record handle puts the record into the Info pane and starts editing it. Any changes to the record values made in the table window show in the Info pane and vice versa. Attempting to edit a cell for a new record automatically starts a new record and puts it into the Info pane as well. If the table is read-only, Alt-clicking a record cell or a record header puts the record into the Info pane for viewing. Alt-clicking empty white space in a table window clears the Info pane.
  • The Info pane allows undoing changes to a single value using an Undo Changes command in the context menu.
  • Changing a value in the Info pane and then changing it back to the old value is interpreted as undoing changes to the value.
  • Pressing Escape in a table window clears the Info pane if it contains no uncommitted changes, similar to maps.
  • The Info pane for a table window can move between the fetched records. The Zoom command has been renamed to Go, to make sense for a table. The icon has been changed as well. Future builds will likely allow moving beyond fetched records.
  • Reordering records in a table window keeps the picked record.
  • Filtering records in a table window keeps the picked record unless it does not pass the filter or the filter is applied to the whole table instead of to the fetched records.
  • The Info pane for a table record allows viewing coordinates for a geometry value using a View Coordinates command in the context menu.
  • The Info pane for a table record allows viewing pixels for a tile value using a View Pixels command in the context menu.
  • The context menu for a record handle in a table window includes an Edit Record command which puts the record into the Info pane. (This is an alternative to Alt-click.)
  • The Info pane allows searching for records in a secondary table that are related to the picked record. To show such records, pick a record, switch to the new Related tab, then click the Setup button in the tab toolbar to specify the relation. The button will open the Related dialog which allows selecting the source table and a pair of key fields, similar to how the Join dialog works. After the dialog is closed the system will search for records in the source table with the value of the key field equal to that in the record picked in the Info pane, and show the first 10 found records in the Info pane. The Refresh button in the tab toolbar repeats the search. The relation parameters are saved in the component window so that they can be used multiple times.
  • Searching for related records in the Info pane uses a BTREExxx index on the key field if the source table has one.
  • Searching for related records in the Info pane tracks progress and allows canceling. If the search is canceled, it returns however many records were collected prior to the cancel.
  • Specifying the source table and search criteria for the related records in the Info pane allows specifying fields to show for the related records.
  • Switching the Info pane to a different record automatically refreshes the related records if the Info pane is shown and the Related tab is active.
  • Other UI Features:
  • The layout window allows zooming a layout frame for a map to a location, either stored in a Location component or to the location (viewport) of a different opened window. To zoom to a location, double-click the frame to make pan and zoom commands apply to the frame rather than the layout, then use the location commands in the View menu or in the toolbar.
  • The layout window allows saving the location for a layout frame for a map. This is useful for zooming a different window to the same location as used by a layout frame.
  • Editing a comments, location, query, or script automatically saves changes every 5 seconds. Switching to a different component window saves changes immediately. Changes are not saved on every keystroke because that does not work well when a component is stored on a remote database and the connection is slow. Saving every 5 seconds is a big improvement in usability for such connections. If saving every five seconds is reported to be still too frequent in some cases, future builds could allow either setting the save frequency explicitly or auto-adjusting the frequency of saves based on connection performance.
  • Comments, location, query, and script components no longer support the New Window command, to avoid conflicts when saving between multiple windows.
  • Migrating a MAP file created by Release 8 merges component notes into descriptions.
  • The command window for a script can be saved as a script using the Save as Script command.
  • (Fix) Resizing the Properties dialog avoids visual artifacts near the bottom. The minimum size of the dialog has been increased to avoid clipping controls.
  • (Fix) Using the color picker on a multi-monitor system no longer sometimes uses an inappropriate color format for the clicked monitor, thus picking a wrong color.
  • (Fix) Editing a record in a filtered or reordered table window no longer sometimes shows edits as applying to a wrong record.
  • Input / output:
  • Dataports for databases detect disconnects and automatically attempt to reconnect once. If the attempt to reconnect fails, the Project pane shows the data source as disconnected. Most database drivers automatically close connections after they are not used for some time, to conserve resources. Previously this was putting the data source into a state where it could not return any data and the only method to get it working again was to recreate it or to close and reopen the MAP file. Now, such cases automatically are detected and reconnected seamlessly.
  • The Project pane allows reconnecting to a data source using a Reconnect command in the context menu. The reconnection is forced, that is, the existing connection, even if it is alive, is shut down and a new connection is established.
  • Refreshing a data source using the Refresh command from the context menu in the Project pane automatically reconnects to the data source if the connection has been lost.
  • (Fix) Reading a TIFF no longer sometimes creates extra images for files with pyramids.
  • (Fix) Exporting a GPKG writes application ID and user version according to the GPKG spec, to mark the file for third-party clients. Manifold supports the latest available version of the GPKG spec. At the present time, the latest version of QGIS appears to only partially support this latest version, and will notify the user of that limitation when opening a GPKG written by Manifold.
  • Connecting to a GPKG no longer loads spatial extensions like Spatialite and instead always uses the built-in version of SQLite.
  • Exporting an image to a GPKG performs significantly faster. If the image has intermediate levels, they are exported as well, otherwise only the export only writes the base level.
  • Creating a geometry field in a GPKG table set the field type to the appropriate flavor of geometry instead of to 'binary', to conform to the GPKG spec and to allow creating spatial views.
  • Attempting to write to a geometry field in a GPKG table rejects values of disallowed geometry types if the field has type restrictions. Previous versions of the GPKG spec relied on triggers to reject such values. The latest version of the spec requires filtering without triggers, so Manifold does that. This is a good change, much welcome.
  • (Fix) Linking an ArcGIS REST server no longer sometimes leaks memory.