Subscribe to this thread
Home - Cutting Edge / All posts - Manifold 9.0.178.4 + 8.0.34.1
adamw


10,439 post(s)
#20-Nov-22 13:06

9.0.178.4

manifold-9.0.178.4.zip

SHA256: 2f079f84eed0461314d7f6d4f09e1d32f3c8a2f901da6003f4ea3592be855283

manifold-viewer-9.0.178.4.zip

SHA256: 35f4a588f0c009f4195797d533ef415dce6d0f164d9bca56ad48a88deee94e46

sql4arc-9.0.178.4.zip

SHA256: 022f5bc11e4a7c75806f997b59215fccec8105c2bb251b05ace8ff6f09ac91f3

8.0.34.1

manifold-8.0.34.1.zip

SHA256: 58de976aa07a9fad5e5c3efdf559730d03d82e40c0d3b21c9884f0da9e1497a0

adamw


10,439 post(s)
#20-Nov-22 13:09

Manifold 9

VC is updated to 14.34.31933. VC runtime is 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 big vendors, saving resources that would otherwise be spent on keeping multiple versions of the runtime in memory.

CUDA is updated to 11.8. GPGPU modules for sm_50 and sm_60 architectures now use slightly less GPGPU resources.

ECW SDK is updated to 5.5.0.2268. This fixes a couple of minor bugs related to the reading of ECW and JPEG2K images.

LIBWEBP is updated to 1.2.4. This improves the visual quality of compressed WEBP images and fixes several bugs related to transparency, etc.

SQLITE is updated to 3.39.4. This adds support for RIGHT and FULL outer joins (SQLITE didn't have them until 3.39) as well as several minor performance improvements. This also fixes a number of bugs, most notably with join optimizations and with the UPSERT statement.

The Create Area Sample command for layouts has a new icon.

The Create North Arrow / Create Scale Bar commands for layouts have new icons. The cursor modes for these commands use new cursors.

Preview controls for area / line / point / text style use a single shared preview background color per Manifold session (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 is closed).

The default preview background color is set to light blue (previously white, the new default makes it easier to see white halos).

Preview controls for grid / north arrow / scale bar style use the shared preview background color and allow changing it using the color picker box in the right top corner.

The North Arrow / Scale Bar dialogs use a better label for position options: Align -> 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.

(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 due to an incorrect handling of rounding error.

The Grid / North Arrow / Scale Bar dialogs include the Apply button which allows applying changes without closing the dialog. (The button is currently only shown when the dialog is used to edit the style of a virtual layer in the Layers pane. In the future, we might also show it when the dialog is used to edit the style of a layout frame in the Info pane.)

The Layers pane has new filters for layout frames: North Arrows / Scale Bars / Samples. The Text Frames filter is renamed to just Text.

The Info pane showing data for a layout frame changes the name of the Update Record button to Update Frame.

(Fix) A lat/lon grid for a component in a non-lat/lon coordinate system no longer sometimes uses the wrong unit for the grid step if the grid unit is set to 'auto'.

Snapping to grid in a map window now snaps to the virtual grid layer. Snapping to grid always uses the base grid step. Snapping does not require the virtual grid layer to be turned on. The Snap Parameters dialog no longer contains means to specify grid step and grid unit for the formerly separate snap grid.

(Fix) The Selection query function asked 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) The SelectionWindow query function asked to return unselected records for a table in a window / layer that no longer exist now correctly returns a full table instead of an empty table.

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 SelectionKeys, with compatible types. The keys table may contain other fields as well, they will be ignored. The returned value 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.

For the examples below, create a new MAP file, open MFD_META, open a new command window, then dock it below MFD_META (right-click the tab for the command window and select Dock Down) so that you can run example queries and immediately watch what they do.

Examples:

--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);

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.

The SelectionReplace / SelectionReplaceWindow query functions automatically create the selection for a table that was never opened as long as it is static (not the result table of a query) and belongs to the database opened in the UI or one of its child databases (not to an arbitrary database opened by a script).

MANIFOLD.EXE supports the new -showserial command line option that shows the first 8 characters of the serial number in the log window. The first characters of the serial number are not written into the log file and are only shown in the window. The option works for all editions of Manifold and SQL for ArcGIS Pro, but not for Manifold Viewer.

Manifold 8

VC is updated to 14.34.31933. VC runtime is 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 big vendors, saving resources that would otherwise be spent on keeping multiple versions of the runtime in memory.

MANIFOLD.EXE supports the new -showserial command line option that shows the first 8 characters of the serial number in the History pane.

End of list.

tjhb
10,071 post(s)
#21-Nov-22 23:02

Belated thanks for SelectionReplace and SelectionReplaceWindow.

(I haven't found time to test them yet, so just wanted to say thanks now.)

I love the design logic you have applied here. Very flexible and usable.

I suspect there has been substantial reworking behind the scenes. There was a time during beta development when selection sets belonged not to components, but to the windows they were presented in--so that we could have any number of different selection sets for a given component (one for each window containing it). This was dropped in favour of synchronization per component (because the extra flexibility was not worth the potential for confusion). But perhaps the underlying implementation has only now been reworked to match the user experience--and this has allowed writing selection sets from SQL. (My hunch here could be completely wrong, and anyway doesn't matter.)

Thanks again. This new feature is going to be massively useful for data exploration and analysis.

Tim

adamw


10,439 post(s)
#22-Nov-22 11:09

Thanks. :-)

A minor note on the current state of selections: currently, selections for static tables (table components) belong to, roughly speaking, databases that contain these tables, while selections for dynamic tables (result tables for query components) continue belonging to windows. Because in the latter case different windows might actually have different data for the same query. Because, for example, you might open a couple of windows, then change the text of the query, then open a couple of windows again -- older windows will not automatically recompute their version of the query until you explicitly ask them to do so using Refresh Data or something similar. So, things are slightly more complex than all selections being global.

A general note, too: we expect replacing selections from a query to be useful mostly in an open-ended form in interactive scenarios. Eg, you can write a query that would establish the selection using some complex / repetitive criteria so that then you can copy / paste the selected records somewhere using the UI, or maybe filter the table window to only show the selected records and inspect them visually. Or you can write a query that will take whatever is currently selected and do something with it. However, if you find yourself writing a query that both creates the selection and then uses it, you don't really need to use the selection in the first place, it is better to alter the query to simply do whatever it finally does on the records that satisfy the selection criteria. That is, instead of taking all records with POP>1000 and putting it into the selection, then taking the selection and doing an UPDATE to set TYPE='BIG' on them, we suggest you just do an UPDATE to set TYPE='BIG' on records with POP>1000.

rvrsabbs21 post(s)
#22-Nov-22 23:44

Thanks Adam,

That has solved the issue in the thread 'SELECT NONE (Ctl + Shift + A) equivalent in SQL' where I can now use SelectionReplace to deselect all records, works perfectly. Much appreciated!

Manifold User Community Use Agreement Copyright (C) 2007-2021 Manifold Software Limited. All rights reserved.