Subscribe to this thread
Home - Cutting Edge / All posts - Manifold System

9,757 post(s)
#07-Feb-20 16:59

Here is a new build.

SHA256: 03b1a2fe0657d6b48ff0603dfba4c74a7b91c32414a75df1327a8a1a6db87728

SHA256: 9aacbdff79ab9a1c3e5f4ccf7c46a7b7ab0d20e54b29e266fe321f6e08727642


9,757 post(s)
#07-Feb-20 17:04


(Fix) The Best Fit / Best Fit Title commands in a table window correctly handle very long strings.

The filter button in the New Map dialog is renamed from Selected to Picked.

(Fix) The New Map dialog no longer gets stuck in showing no layers once all layers are unpicked and filter is set to show only picked layers.

The New Map dialog allows filtering layers by name.

The New Map dialog allows adding a base layer using one of the favorite image servers. Adding a base layer creates a new data source for the specified image server or reuses an existing data source if it already exists.

The New Map dialog saves the last used base layer between sessions.

Google image servers in the default favorite data sources are switched from v2 to v1 to work without an API key.

Dropping layers into an empty map no longer sets the projection of the map to that of the first layer.

(Fix) The Component pane for a map window shows the name and projection of the map if the map is empty (was showing nothing).

Double-clicking text in a comments / query / script / log window selects:

  • whitespace (a sequence of space / tab and similar characters), or
  • a word (a sequence of non-whitespace characters) enclosed in one of the recognized bracket pairs such as (), [], {}, ##, or
  • an identifier (a sequence of letters / numbers / underscores), or
  • an ellipsis (a sequence of repeating punctuation characters like ----- or //////).

Opening a map zooms to the extents of all layers excluding layers for image servers.

The list of styles for areas includes a style for solid fill with resizable border.

Clicking the active cell in a grid starts editing its value (repeat-click).

(Fix) Editing the value of a grid cell adjusts the height and position of the edit control to avoid clipping its top edge.

(Fix) The Find and Replace dialogs for a table window only list fields currently visible in the window (attempting to use hidden fields was doing nothing).

The Replace dialog for a comments / query / script window allows replacing all occurrences of text using the Replace All button.


The layout window paints all frames with anti-aliasing and other advanced features of the Normal graphics engine. (Previously, component frames were painted using whatever graphics engine was specified in the Options dialog, but text frames were always painted using the Basic graphics engine due to performance requirements.)

The Record pane separates the coordinates for a layout frame into a separate Position tab. In addition to left / right / top / bottom coordinates, the Position tab also shows width and height, and switches between editing any two of the left+bottom / width+height / right+top combinations with the third being computed automatically using radio buttons.

The Record pane saves the last used unit for layout frame coordinates between sessions. (The idea is that you mostly set it once and then forget about it for all layouts.)

Applying changes to a layout frame in the Record pane using the Update Record button or picking a different layout frame in a layout window using Alt-click preserves the active tab (Style or Position).

Layouts may include frames for color / area / line / point / text samples. Sample frames show a formatting sample and an optional text. The width of the formatting sample is computed automatically from the frame height but can not exceed half of frame width. The layout window allows inserting sample frames, moving / deleting them, and editing their content in the Record pane.

The layout window allows generating a legend for a component shown in the layout using the Create Legend command (eg, in the View - Mode submenu). The command shows the New Legend dialog which allows picking a component to create a legend for. If the component is a map, the dialog allows picking specific layers to include in the legend and setting their order (by default, hidden layers are excluded and the order is the same as in the map). Creating a legend generates one or more sample or text frames.

  • For a drawing, the legend includes separate sections for areas, lines and points. If a section uses no thematic formatting, it includes a single sample frame with default formatting. If a section uses thematic formatting on a single field, it includes sample frames showing the field values and the formatting assigned to these values. If a section uses thematic formatting on multiple fields (multi-variate formatting) or on a single field but with different value splits, it includes sample frames for each thematic split.
  • For a labels component, the legend includes a single section for all labels, with the same rules as for drawings.
  • For an image with a palette applied to a channel, the legend includes sample frames showing the field values and the colors assigned to these values. If an image uses RGBA channels and channel min/max ranges are the same, the legend includes a sample frame for black color and a sample frame for white color, showing the min/max values. If an image uses RGBA channels and channel min/max ranges are different, the legend includes sample frames for red, green and blue colors showing the min/max values for each.

The Record pane allows editing the border color and border size for a layout frame. The default is no border (border color set to transparent, the border can also be hidden by setting border size to 0 pt).

The Record pane allows editing the padding for a layout frame. The default is no padding (0 pt). In sample frames, padding between the sample and the text is only applied once.

Creating a virtual layout for a map window using the Print Preview command captures the current center and scale of the window and zooms the layout to the same area.

The New Legend dialog allows specifying a caption for the legend. If the caption is set to an empty string, it is not created.

The New Legend dialog allows creating a base frame for the legend. The base frame is a text frame with no text, used for its solid background (white) and border (black, 0.5 pt), put underneath all other legend frames.

Layout frames created for a legend are put into a separate folder with subfolders for component sections, to allow quick operations with the entire legend or its parts.

The New Legend dialog includes an 'Ignore unused geometry types' option, which checks whether drawings actually have objects of a specific geometry type (and whether labels have any objects at all) before including them into the legend. If a drawing cannot determine the geometry types of objects it contains (eg, if it is based on a query, or if it comes from a data source other than a MAP file or a file which stores its spatial index in a MAPCACHE file, etc), it ignores the option.

The layout window paints the active layout frame using the 'computed' color (light blue), and shades the content of selected layout frames using a semi-transparent 'selected' color (unless the graphics engine is set to Basic).

The active layout frame uses 8 drag handles (corners and edges) instead of 4 (corners) to avoid accidentally resizing the frame when meaning to move it but clicking close to the edges.


The Fill Sinks transform uses a new, faster algorithm to fill sinks when there is no limit on fill flow, and an even faster variation of that algorithm when there is no limit on fill height either (indicated by setting the fill height parameter to 0 - this is a change from prior builds which were interpreting the fill height parameter being 0 as a parameter error).

Quick look at the performance: (4500x4500 raster, fill height of 100000 that fills everything), Fill Sinks: 571.896 sec (same raster, fill height of 0 that fills everything), Fill Sinks: 11.464 sec

The Closest Path Xxx transforms ran on lat/lon rasters keep XY scales in degrees (instead of converting them to meters using approximate scale at the center of the raster) to interpret costs in the same manner as ESRI products.

The Closest Slope Path Xxx transforms include an option to switch the path direction. The option is called 'Start from source', if it is turned off (the default), paths are computed from drawing objects to pixels, otherwise paths are computed from pixels to drawing objects. (The direction matters because a downward slope path is shorter than the reverse upward path.)

The Closest Euclidean Xxx transforms include an option to use invisible pixels as barriers. (This was a big recent addition to similar ESRI analysis tools.)

(Fix) Exporting data to GPKG writes projections.

(Fix) Exporting data to GPKG no longer sometimes puts 'no such table: sqlite_sequence' into the log window.

Reading KML supports downloading data referenced by URLs, recursively. The recursion limit is specified via a link depth option in the New Data Source dialog. Eg, if a KML references a different KML that references a JPEG, to download it all, the link depth option has to be set to 2. By default, link depth is assumed to be 0 = download nothing.

There is a dataport for web KML, to link KML data from web resources.

(Fix) Reading LAS library no longer sometimes fails to read projection data.

The LAS / LAS library dataports build their spatial index in background, to allow doing other things in the same Manifold session while the index is building. (Previously, attempting to access LAS components was waiting until the index is built, which could take significant time, particularly for a LAS library, and this operation could not be canceled.)

(A note for the current build: if you open a LAS drawing while the spatial index is still building, the map window will report that there is no spatial index and will suggest building a temporary one. Do not do it, this is counterproductive. Wait until the dataport finishes building its own persistent index. We will let the map window know that it shouldn't suggest anything in this case.)

The LAS library detects LAS and LAZ files with the same name and ignores the LAZ file.

Reading a LAS / LAZ file reads projection from the accompanying PRJ / PAM XML files.

(Fix) Pasting or inserting a new drawing / labels component which references a non-existent table component into a GDB no longer fails.

Reading a NITF file supports reading embedded JPEG2000 data.

End of list.

(Apologies for the long wait, we were writing and re-writing legends.)

891 post(s)
#07-Feb-20 22:01

Some good news on the PDF front. My problem has been that for large print areas (36x42 inches) printing a PDF from the Layout would cut off at something like 36 inches on the width. I'm not sure I'm comparing apples to apples, because I'm not using the same computer (same vintage and specs, tho), and now this one has a GT 730 GPU while the other one was onboard Dell whatever. I am now using Foxit PDF, versus Adobe Acrobat Pro previously, and it printed full size to 36x42 inches. Speed seems to be based on the number of elements within the Layout frame.

When I try to print the file with any Google background, I get a Tile Size too Big error. Printing the Google Earth background with high enough resolution to recognize features is my ultimate printing goal. That seems vague, but right now I can't print any Google backgrounds.


6,803 post(s)
#08-Feb-20 05:19

Try Microsoft Print to PDF. Adobe print to PDF reduces the resolution of images drastically by compressing the image. is a zipped version of a Microsoft generated PDF (had to zip it to get it under the 2MB limit for attachments in the forum). Note the fine detail in streets in the image server image is perfectly visible.

legend11.pdf is exactly the same layout printed by the Adobe PDF engine. It's much smaller but detail is totally absent in the image server layer. Use a quality PDF reader (like Acrobat) and zoom in to both PDFs and you'll see what I mean.

By the way, image server layers in layouts soon will be "locked" to the resolution level you see in the map window, so what appears in the legend will be WYSIWYG, and not using tiles for the resolution of the print engine (which results in too much detail).


891 post(s)
#08-Feb-20 18:10

That is an impressive difference. I'm using Win 7 so no MS Print to PDF here. I do have MS XPS Document Writer which can print to another PDF driver, but that's where we go right back to Foxit PDF. And I still get the Tile size too big error with MS XPS Document Writer. Do you not get that error with MS Print to PDF?


6,803 post(s)
#09-Feb-20 05:28

Do you not get that error with MS Print to PDF?

No, I've never seen anything like that with (which I think is a printer software error message, not a Manifold message) with Microsoft print to PDF. Adobe, by the way, can be much slower than Microsoft. You might try FreePDF as well.

Mike Pelletier

1,927 post(s)
#08-Feb-20 15:10

Lots of great stuff going on here. Thanks!

One thought is the desire to quickly see a layers style. Currently, we can drill down through the style dialogs to see various parts but to see it all in one place, we need to use the new legend tool. Currently, it seems to be a static legend.

What is the thinking for a legend that updates and used within the map project rather than a printed map? I suppose we could build a legend within the layout component and just pull it up as needed. A little brainstorming here. Since the layer pane is quickly accessible, perhaps it could have a toggle to show a legend of the layers turned on.


9,757 post(s)
#08-Feb-20 15:36

We are thinking of adding a dynamic legend, yes - and we are thinking of it as a means to manipulate data in addition to just seeing the formatting. That could be part of the Layers pane or something else entirely. The legend we did for layouts is a little different - its purpose is to allow making good, informative reports, fairly easily, printed or electronic. It has to be very customizable and reconfigurable. The user should be able to completely rearrange frames, delete some of them, insert a mini-map into the middle, alter any text and any font, emphasize some of the samples to stand out, etc, etc, etc - complete control over the content and the looks. An interactive legend will be much more dynamic - and much less customizable because of this. Both types of legends have their place, we are doing the first one now, the second one possibly later.

Mike Pelletier

1,927 post(s)
#10-Feb-20 18:50

Great. Here are some thoughts on the interaction between layer pane, legends, and styles. The layer pane is seemingly becoming the hub. The folder options are super.

I'm wondering if a single left click should make the layer active rather than a right click, active for speed and use with touch screen. Then if the user wants to see the layer's style, click the contents pane and click style if not already active. Then have style default to display the total symbol that uses thematic formatting. Next allow an alias column in the thematic formatting dialog (ie, high, medium, low to describe numeric values) which also shows up in the legend tool.

225 post(s)
#11-Feb-20 00:34

Double-clicking text in a comments / query / script / log window selects:

  • whitespace (a sequence of space / tab and similar characters), or
  • a word (a sequence of non-whitespace characters) enclosed in one of the recognized bracket pairs such as (), [], {}, ##, or
  • an identifier (a sequence of letters / numbers / underscores), or
  • an ellipsis (a sequence of repeating punctuation characters like ----- or //////).

This is great. Its a very small thing but it makes building a query now way more comfortable. Thanks. Any plans to include this capability in the expression tab of the Transform pane?


9,757 post(s)
#11-Feb-20 06:46

Yes, absolutely, we'll add it there as well.

Good catch!

148 post(s)
#11-Feb-20 13:18

A wonderful day !

The click selection in texts is really better than before and improves the SQL edition, merci.

The replace all is back in my daily work, merci.

The legend is at first less intuitive but so easily customizable once we get the logic, merci.

I'm loving the legend in the map of M8 for some planing works but I will have to get used to the fact it is restricted to layouts in the M9, or I missed something.

Great work and always a delight to discover the enhancements you propose in M9



6,803 post(s)
#11-Feb-20 14:44

One big enhancement that would be great... it's been a while since the French localization file has been updated. It would be really great for someone who has good French to update it! :-)

148 post(s)
#12-Feb-20 07:24

If I can understand the interest of an updated version of the French localization file, I have to be honest and mentioned not being the right person for that. I'm lost with French name of GIS functions working for years with English versions. But currently enhancing the SQL color syntax of M9 in EditPad Pro.


6,395 post(s)
#23-Feb-20 18:31

German ui-file for version

Please report typos, errors or misconceptions


Do you really want to ruin economy only to save the planet?


6,803 post(s)
#24-Feb-20 12:31

Thanks Klaus!

There's also a new Russian localization filein the ui.zipfile collection that can be downloaded, contributed by Andrei Busnyuk. Andrei has translated the entire interface except for Builder, Template and Value tags. He's now adding those.

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