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.
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.