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


9,299 post(s)
#30-Dec-19 13:45

9.0.170.2

Here is a new build.

manifold-9.0.170.2-x64.zip

SHA256: 2ba05678434f5ccf4b9462cf4d1f5300db869d965dd9925f3cf6435bdd1d9d19

manifold-viewer-9.0.170.2-x64.zip

SHA256: d06c950a1bde5cf393d2078677d6472021a36c70cb4501e5c3524438ecd0cf57

adamw


9,299 post(s)
#30-Dec-19 13:46

Changes

Project pane context menus include new commands for working with related components:

The Show Related command finds all components related to the clicked component and displays them in a dialog as a list.

The concept of related components is asymmetric, the idea is to find all components that will need to change if a specific component changes, but not the other way around. Related components include:

  • For a table or query: all drawings and images based on that table or query, all labels based on drawings, all maps that include drawings / images / labels as layers, all layouts that include any of the mentioned components as frames.
  • For a drawing: all labels based on that drawing, all maps that include them as layers, all layouts that include them or maps that include them as frames.
  • For an image or labels: all maps that include them as layers, all layouts that include them or maps that include them in frames.
  • For other components: all layouts that include them as frames.

Finding related components works across all opened data sources. If the list of related components includes components from data sources other than the opened MAP file, the components are sorted by data souce with the innermost data source appearing first (the reverse of the order in the Project pane).

Selecting a component in a list shows components that reference it directly using a distinctive icon on the right. (Eg, selecting a table will put an icon next to all drawings that reference it.)

The Delete Related command finds all components related to the clicked component, displays them in a dialog and allows picking components to delete. The list of related components is reduced to only those components which cannot function without other components on the list (eg, maps are excluded because deleting a drawing will at most delete a map layer and the map will continue to function). Marking a component for deletion marks all components that depend on it for deletion as well. Unmarking a component unmarks all components that it depends on.

The Rename Related command finds all components related to the clicked component, displays them in a dialog and allows picking components to rename. The list of related components is reduced to only those components which cannot function without other components on the list, similarly to Delete Related. Marking a component for rename allows specifying the new name using F2 (or Enter, or double-click). Providing a new name automatically adjusts names of other components marked for rename. Unmarking a component resets the name to the current name.

The Delete Related / Rename Related commands detect read-only data sources and disallow deleting / renaming components on them.

(Caveat: deleting or renaming components using regular means in the Project pane continues to behave as it did before and does not do anything to the related components. In the future, we might make those regular means a little smarter than they currently are, although we don't want to lose being able to, say, rename a component from 'Cities' to 'Cities Temp' and then rename 'Cities Backup' to 'Cities' without making any other changes whatsoever to any other components.)

Component windows no longer close when their main component is renamed and adjust to the new name. All types of renames are supported - those made in the UI as well as in query or script. (The feature requires support from the database that hosts the component, but we believe we adjusted all of the dataports that we have to provide such support. Also, we are currently not tracking renames for components other than the main component of a window - eg, if you open a drawing, creating a virtual map, then drop a second component into the virtual map, we will currently detect if the original drawing is renamed, but not when the second component is renamed. We will extend the feature to track renames of all components. In the meantime, save the virtual map into a real map.)

There are new query functions and transforms to create rasters with Euclidean / shortest paths to points:

  • TileDistanceMake / TileDistanceMakePar - take a raster and the distance type, return a distance buffer that can be used in further calls. The distance type can be 0 (Euclidean distance, default), 1 (shortest paths avoid missing pixels) or 2 (shortest paths avoid missing pixels and use values in valid pixels as distance / travel cost). TileDistanceMakePar is a parallel variant.
  • TileDistanceTilesClosest / TileDistanceTilesClosestPar - take a distance buffer and a drawing with points, return a raster with each pixel set to the Z of the closest point. (Use the Set Geom Z transform to set Zs to the value that you want.) TileDistanceTilesClosestPar is a parallel variant.
  • TileDistanceTilesDirection / TileDistanceTilesDirectionPar - take a distance buffer, a drawing with points and the direction type, return a raster with each pixel set to the direction of the shortest path from the pixel to the closest point. The direction type can be 0 (direction to the closest point, degrees between 0 and 360, Euclidean distances only, default), 1 (direction to the next pixel on the shortest path to the closest point, degrees between 0 and 360, path distances only), 2 (direction to the next pixel on the shortest path to the closest point, quadrant value between 0 and 7, -1 for pixel under the closest point, path distances only), 3 (direction to the next pixel on the shortest path to the closest point, quadrant value between 1 and 8, 0 for pixel under the closest point, path distances only).
  • TileDistanceTilesLength / TileDistanceTilesLengthPar - take a distance buffer and a drawing with points, return a raster with each pixel set to the distance from the pixel to the closest point.

Corresponding transforms:

  • Closest Euclidean, Direction - produces a raster with Euclidean directions, in degrees.
  • Closest Euclidean, Distance - produces a raster with Euclidean distances.
  • Closest Euclidean, Source - produces a raster with Z values of closest points using Euclidean distances.
  • Closest Weighted, Direction - produces a raster with path directions, in degrees. The 'Use equal weights' option switches between just walking around missing pixels and also using pixel values as walking costs.
  • Closest Weighted, Length - produces a raster with path distances. The 'Use equal weights' option works as above.
  • Closest Weighted, Source - produces a raster with Z values of closest points using path distances. The 'Use equal weights' option works as above.

(In the future, we are planning to extend these functions to allow working with lines and areas, or to start from a raster with pixels pre-filled with IDs of source objects.)

Resolving plateaus for watersheds has been adjusted to use the new algorithm for shortest paths, which produces much more robust results (previously, paths might have varied depending on the order of processing tiles, which is unpredictable for parallel execution) and is a little faster.

There is a new dataport for a folder of LAS / LAZ files ('laslibary'). There is an option to recursively include files in subfolders. The dataport exposes a single composite drawing for all files and manages access to individual files dynamically. If individual LAS / LAZ files are of different detail level, the composite table exposes fields for the most verbose level and files at lower detail levels have fields that they don't have return NULL values. If individual LAS / LAZ files use different coordinate systems, the library picks a random coordinate system and projects data from all files to that system dynamically.

Accessing each LAS / LAZ file in a LAS library for the first time captures some metadata and stores it in JSON format near the file to avoid having to re-capture it later, for better performance.

Spatial indexes used by LAS / LAZ data have been adjusted to perform better, particularly as part if the file is part of a library.

Exporting a drawing to GPKG puts the coordinate system of the drawing in WKT format into the GPKG system table, where it can be accessed by third-party applications. Same for copying and pasting a drawing into a GPKG database.

End of list.

Happy New Year!

BerndD

148 post(s)
#30-Dec-19 15:24

Nice build. I like the LAS improvements.

Happy New Year to you as well.

2019 was a year with tremendous progress. Can't wait to see all the good stuff that will be added in 2020.


The Future of Spatial Data // www.drahola.com // www.geocockpitug.de

tjhb

9,320 post(s)
#01-Jan-20 03:05

I'm really happy about this build but am puzzling a bit about the TileDistanceMake/Par functions, with their different options.

What I understand so far is that Manifold has combined several ESRI equivalents--distance, direction, path distance, path direction, path allocation, cost distance, cost direction, cost allocation--into one function. Clever and very welcome.

If I get as far as making a clear example I will post it.

Dimitri

6,104 post(s)
#03-Jan-20 07:47

Manifold has combined several ESRI equivalents

I think the overall objective is to give people the ability to solve the same sorts of problems in Manifold that now require Spatial Analyst in ESRI, but with better performance, greater reliability, larger capacity, greater recombinant flexibility, and without the legacy issues that have accumulated over the years in the ESRI tools.

ESRI's Spatial Analyst tools have been built over a long time by what seem to be different teams, with a varied and apparently not always consistent approach to options. While on the one hand it would reduce the learning curve to have an exactly 1:1 match between Manifold tools and ESRI's, just doing a clone would fail to take advantage of progress to make workflow easier, where some ESRI options are not necessary because of built-in Manifold capabilities, or because there are better ways in Manifold to accomplish what those options offer.

So, while there is no interest in being different just for the sake of being different, the comparable Manifold toolset is not a 1:1 clone of ESRI tools. In the weeks and months ahead, I think the challenge for everyone who uses the tools or builds them is to seek areas of commonality (perhaps using common nomenclature where it makes sense) while taking advantages of broader functionality within Manifold for faster and easier workflow. Words are easy to change to whatever the community prefers, as for example the recent change of "metes and bounds" to ESRI-style "traverses."

It's also a challenge for Manifold to present, with clear documentation, videos and marketing, exactly how somebody who has problems that traditionally would be solved with Spatial Analyst could do what they want better/faster/easier using Manifold. Surprisingly, Manifold already covers about 90% of what Spatial Analyst does, but that needs to be better packaged, I think, both in terms of UI (not requiring SQL) and in terms of presentation/education.

By the way, I don't see the above as in any way trying to talk people out of buying ESRI or using Spatial Analyst: I see it more as a symbiotic augmentation, where ESRI people who are using Spatial Analyst are hitting performance or capacity or complexity issues and would like to pull out a supplemental tool (Manifold) from their toolbox that solves the problem and lets them get on with their job.

dchall8
760 post(s)
#03-Jan-20 21:12

...where ESRI people...would like to pull out a supplemental tool (Manifold) from their toolbox that solves the problem and lets them get on with their job.

I'm smiling about that. I had ArcMap on my computer at the office for one task. That was to create shape files with the entire package of ESRI files included. I used it once a week (for about 5 minutes) to import the Manifold exported shape files and turn around and export ESRI shape files with the additional files. I suppose I could say I was an ESRI user who used Manifold as a tool to do 99.79% of everything else.

In the appraisal biz in Texas we deal with a couple different contractors hooked into ESRI "standards". One got by with the .dbf, .prj, .shp, and .shx files, but they required an ESRI geometry check. Another one required the above files plus the .cpg, .sbn, and .sbx files also. Apparently nobody in corporate memory remembers why all the files are needed, but their software does not work without the full set.

Remember the good old days prior to about 2006, when Manifold was compatible with everything, but to use AreView with Word you needed an $800 per year add in and Acrobat, Excel, and PowerPoint required $1,600 per year add ins each. Good times.

BerndD

148 post(s)
#03-Jan-20 21:54

...but to use AreView with Word you needed an $800 per year add in and Acrobat, Excel, and PowerPoint required $1,600 per year add ins each. Good times.

And in return you got "Segmentation violation". A LOT.


The Future of Spatial Data // www.drahola.com // www.geocockpitug.de

gjsa80 post(s)
#13-Jan-20 01:57

Gpkg export still fails to transfer CRS, at least in some cases - example attached

Try exporting the included map which contains 4 drawings and re-import the gpkg and CRS for the layers from the original project (EPSG 28355) has been lost.

Exporting a single layer as a gpkg produces the same failure.

Attachments:
project1.mxb

Dimitri

6,104 post(s)
#13-Jan-20 05:10

Important to send a bug report for things like this. A post in the forum relies on somebody else to notice the post and file a bug report.

gjsa80 post(s)
#20-Jan-20 02:29

Ok noted. Will do in future.

adamw


9,299 post(s)
#14-Jan-20 12:23

Thanks for the note. The issue exists in 170.3 as well. We'll fix it.

rk
395 post(s)
#05-Jan-20 10:44

Estonian translation file updated to 9.0.170.2

Happy New Year!

Attachments:
ui.et.txt

rk
395 post(s)
#05-Jan-20 21:03

I created custom ui.en.txt from default.ui.txt by modifying and adding access keys.

I made existing access keys more unique and added them to modal dialogs.

Attachments:
replace.png
ui.en.txt

adamw


9,299 post(s)
#20-Jan-20 09:53

On access keys, there might be times where you get unlucky and the name for the option you want to put an access key to is too short and neither of its letters look like a good candidate for an access key. In these cases, the UI guidelines suggest that you stop trying to fit an access key into a short name and don't replace a good short name with a worse long name just for a good access key, and instead append the access key into the name like this: 'Name (&P)' -- forcing the access key to be 'P' even though there is no 'P' in 'Name' (assuming all other letters in Name are a bad choice because, say, they are already taken). This looks weird at first, but Microsoft products actually do this and the reports are that this works well.

This is just a general thought for cases which you might run into.

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