Subscribe to this thread
Home - Announcements / All posts - Radian Studio 9.0.162
adamw


10,447 post(s)
#28-Jun-17 06:37

A new update for Radian Studio is now available.

The update adds support for LIDAR data (LAS and LAZ), parallel triangulation and Voronoi diagrams, and many improvements to the UI including reworked dialogs for creating new components and the info tool (Record Values). The object model has been extended to expose all its features to COM languages such as VBScript. The documentation for the object model has also been extended and now includes many examples in VBScript and in IronPython.

The installation packages are now EXE instead of MSI and include all pre-requisites with the exception of .NET.

Changes

251. There is a new LAS dataport for LIDAR data sets. The dataport exposes LAS data as a table with the fields set up according to the LAS record type used in the file.

252. The LAS dataport can work with LAZ files, which are a compressed version of LAS files.

253. The LAS dataport analyzes the layout of LAZ files and caches uncompressed data accordingly. This significantly improves performance.

254. The LAS dataport parses coordinate system info from GeoTIFF tags (a variant of storing coordinate system info for LAS files).

255. The LAS dataport exposes classification table stored in the data set, if it is available.

256. The LAS dataport exposes extra fields added via variable-length records.

257. The LAS dataport can export table data as a LAS or LAZ file. Record type is deduced automatically from the supplied fields.

258. The 000 dataport (S-57) supports ISO 8859-1 and ISO 10646 string values.

259. (Fix) The WFS dataport no longer requires the metadata for each layer to provide an URL for the GetFeature command (the standard allows specifying the default URL, the dataport now uses it correctly).

260. The MFD, MIF and TAB dataports no longer sometimes fail to return data without .MAPCACHE.

261. (Fix) Attempting to perform a compacting save on a SHP file in the same location no longer fails.

262. Parsing a coordinate system from WKT recognizes additional WKT sequences (FITTED_CS, etc).

263. The query builder shows syntax for joins.

264. Dropping a layer with data into a map window with an empty map (either with no layers or with layers that are all empty) automatically zooms the window to the extent ot the new layer.

265. (Fix) Traversing a BTREEDUP or BTREEDUPNULL index in a MAP file in the order of decreasing keys no longer sometimes skips the initial key value.

266. (Fix) Double-clicking an error in a script window scrolls the script text to the error location.

267. The table window shows boolean values as 'true' and 'false', the same format as accepted on input.

268. The query engine allows converting boolean values to numeric values and back via CAST.

269. The table window shows xN values with square brackets. Editing an xN value accepts them either with or without square brackets.

270. The table window can copy and paste individual values to the clipboard, via right-click menu. Attempting to copy or paste a value from the record that is being edited works with the values that have not yet been sent to the table. Attempting to paste a value into a record that is not being edited changes the record without putting it into the edit mode (and cancels all pending edits to other records if there are any).

271. The Set to NULL command used to clear the value of the edited record in the table window is renamed to Delete and can be used with records that are not being edited. Attempting to delete the value in a record that is not being edited changes the record without putting it into the edit mode.

272. Copying a table value into the clipboard allows pasting it as text into other applications (useful for viewing long strings). Pasting a table value from the clipboard accepts text copied from other applications.

273. GeomOverlayXxxPar and GeomOverlayTopologyXxxPar query functions no longer take the number of threads as a numeric value and instead take a JSON string with the description of a thread configuration. The number of threads is encoded in JSON as "threads". There is a new query function named ThreadConfig that takes a number of threads and returns the JSON string with the thread configuration.

274. New query functions: GeomTriangulatePar and GeomTriangulateLinesPar, parallel versions of triangulation functions. The functions have the same parameters as their non-parallel versions plus an additional string parameter for the thread configuration. Accepted values in the thread configuration are: "threads" - desired number of threads, the default is 1; "batch" - minimum number of coordinates to allocate for a thread, the default is 1000.

275. New query functions: GeomVoronoiPar, GeomVoronoiLinesPar, GeomVoronoiPointsPar, parallel versions of functions building a Voronoi diagram. The functions have the same parameters as their non-parallel versions plus an additional string parameter for the thread configuration. Accepted values in the thread configuration are the same as for parallel triangulation.

276. The Transform dialog uses parallel versions of triangulation and Voronoi functions as long as the 'Allow using multiple threads' option is turned on.

277. The Delete command in the layer context menu is renamed to Delete from Map.

278. The Toggle command in the layer context menu is renamed to Visible and has a checkmark indicating whether the layer is shown or hidden.

279. The layer context menu includes the Open Table command to open the table with the layer data.

280. (Fix) Map window no longer sometimes continuously blinks in the presence of layers referring to non-existing tables or fields.

281. (Fix) Attempting to update a batch of records in a MAP file table disallows altering values of the key fields for the index used to update.

282. GeomTriangulateXxx functions can use multiple threads when triangulating lines or areas (constrained triangulation), and perform significantly faster even with a single thread. Triangulating an area only keeps the triangles inside the area (to get the previous behavior, which was to keep all triangles in the convex hull, convert the area to a line prior to performing the triangulation).

283. New Transform dialog template: Decompose to Triangles - decomposes areas to triangles.

284. The new Edit - Export Results command allows exporting the results of a query. (For example, this command can be used to export a subset of a LAS file as a new LAS file.)

285. The New Xxx dialogs used to create new components no longer show target folder path and no longer include means to specify description. If a new component is created in the context of the root MAP file, the data source path is hidden as well, otherwise the dialog shows the info regarding the target data source in a special area at the top. The OK buttons are renamed to Create <component type>, made larger and moved to the left, similarly to Transform, Select and other dialogs.

286. The New Xxx dialogs used to create new components include the Edit Query button. The button generates the query for the dialog actions without performing these actions.

287. The New Xxx dialogs used to create new components check names of components and fields prior to performing any operations, to fail early instead of mid-way through a create sequence.

288. The New Table dialog edits table schema using the standard Edit Schema dialog. If the target data source is not a MAP file, the dialog sets initial table schema to use an INT32 ID field (instead of an INT64 MFD_ID field) and a BTREE index on that field.

289. The New Drawing dialog is reworked to ask for the name and type of the geometry field, the coordinate system, and whether or not to create a spatial index. If the target data source is not a MAP file, the identity field is an INT32 field named ID, similarly to New Table.

290. The New Drawing dialog allows creating a drawing based on an existing table and geometry field. If the specified geometry field does not have an associated spatial index, the dialog suggests creating one. The coordinate system associated with the field can be edited.

291. The New Image dialog is reworked to ask for the names and types of the X and Y fields, the name, pixel type and size of the tile field, the coordinate system, the initial rectangle of the image and whether or not to create a spatial index. If the target data source is not a MAP file, the identity field is an INT32 field named ID, similarly to New Table.

292. The New Image dialog allows creating an image based on an existing table and tile / X / Y fields. If the specified combination of fields does not have an associated spatial index, the dialog suggests creating one (an RTREE index on X-Y-tile fields is used for MAP files, a BTREE index on X-Y fields for all other data sources). The coordinate system associated with the tile field can be edited. Using the same field for X and Y is disallowed.

293. The New Image dialog allows creating an image based on an existing image, adjusting its bounds. The new image uses the exact same fields and indexes as the original image. If the original image uses a level field, the dialog shows its name and type.

294. The New Image dialog verifies the bounds of the new image to be valid.

295. The New Labels dialog is reworked to ask for the name and type of the display field, and the coordinate system. The created drawing uses a GEOM field and includes a spatial index. If the target data source is not a MAP file, the identity field is an INT32 field named ID, similarly to New Table.

296. The New Labels dialog allows creating a labels component based on an existing drawing.

297. Invoking the New Drawing dialog from the Project pane via right-clicking a table automatically selects the clicked component in the dialog. Right-clicking a drawing or labels automatically selects the producing table as long as it is in the same data source.

298. Invoking the New Image dialog from the Project pane via right-clicking a table or an image automatically selects the clicked component in the dialog.

299. Invoking the New Labels dialog from the Project pane via right-clicking a drawing automatically selects the clicked component in the dialog. Right-clicking a labels component automatically selects the producing drawing as long as it is in the same data source.

300. The names for new components suggested by the New Xxx dialogs are cleaned up from component type postfixes and short numeric postfixes like '2' in 'Labels 2'.

301. (Fix) Connecting to a data source set to use a temporary .MAPCACHE file no longer reports that cache is going to be rebuilt.

302. Localized strings may include '{productname}' escape sequence that expands to product name.

303. Product icon includes hi-res versions with true transparency.

304. Installation packages include Visual C++ runtime modules. Installation packages are now EXE instead of MSI.

305. The About dialog reports the name of the available GPGPU device, if there is only one.

306. The About dialog checks for latest available version of the product. The check is performed in background, the dialog can be closed without it completing. The Help - Check for Updates command is removed.

307. Alt-clicking a drawing object in a map window displays field values for the object record in the new Record Values dialog. Alt-clicking a different object updates the dialog.

308. Alt-clicking an image tile in a map window displays field values for the tile record in the Record Values dialog.

309. The Record Values dialog highlights context object or tile in the map window.

310. The Record Values dialog automatically adjusts the width of the column with the field names. The column uses between 20% and 40% of the total list width.

311. (Fix) Updating a record in a MAP file table by setting the values of the MFD_ID field and one or more other fields simultaneously no longer sometimes fails.

312. (Fix) Switching the component type filter or sort order in the Project pane no longer sometimes crashes.

313. (Fix) Building a triangulation or a Voronoi diagram using multiple threads no longer sometimes produces no result due to a misallocation of work between threads.

314. The TileBuilder object supports IDisposable to allow extending it to contain resources that have to be disposed of explicitly in the future.

315. (Fix) The collections exposed by the Schema object have non-generic names, complying with the documentation.

316. The ExpressionParser.CreateExpression script function has a variant that does not take expression parameters.

317. The Expression.Evaluate script function has a variant that does not take expression parameters.

318. Renamed script function: TypeConverter.GetType is renamed to TypeConverter.GetTypeClr.

319. Renamed script function: TypeConverter.GetTypeName is renamed to TypeConverter.GetTypeManifold.

320. Changed script function: Curve.Type now returns a string instead of an integer value.

321. Changed script function: Geom.Type now returns a string instead of an integer value. GeomBuilder.StartGeom now accepts the type of a new geom value as a string as well.

322. New script function: Tile.TypeClr returns pixel type as a .NET type object.

323. Changed script function: TileBuilder.StartTile now accepts pixel type as either the name of a Manifold type or as a .NET type object.

324. Changed script function: Value.Type now returns the name of a Manifold type. Value.TypeClr returns a .NET type object.

325. New script function: Schema.Field.TypeClr sets or returns field type as a .NET type object.

326. New script function: Schema.IndexField.TileTypeClr sets or returns pixel type accepted for a tile field as a .NET type object.

327. Renamed script function: the variant of TileBuilder.StartTile that takes an existing tile object is renamed to TileBuilder.StartTileCopy.

328. New script function: ValueSet.GetValueNames returns the names of all values as a string array (which can then be passed to one of the Table.SearchXxx functions).

329. Script functions working with .NET type objects are made unavailable for COM languages. (After the additions above this no longer harms functionality, because for each function taking a .NET type there is now a function taking the name of a Manifold type.)

330. Script functions that have multiple variants can be used from COM languages. (Previously in these cases all but one variants were getting renamed, and the writer of a script in a COM language had to guess the name of the variant he needs. Eg, instead of ValueSet.AddValue, one had to call ValueSet.AddValue_2.)

331. Script functions that take arrays as parameters accept arrays created by COM languages (in VBScript, Array(x, y, z)).

332. Script collections can be used from COM languages. Collections that allow indexing by integer or string value determine which particular type of indexing is being performed by a COM client at runtime. All collections expose the EnumObj property which returns an object that can be iterated by a COM language using For Each (instead of writing 'For Each field in schema.Fields', write 'For Each field in schema.Fields.EnumObj').

333. New script functions: Application.CreatePoint, Application.CreatePoint3, Application.CreatePoint4 create point objects. Application.CreatePointObj, Application.CreatePoint3Obj, Application.CreatePoint4Obj create point objects that can be used from COM clients ("regular" point objects use generic types that can not be used by COM clients directly, the new functions return wrapper objects that can be used to work with underlying generic point objects).

334. New script functions: TypeConverter.ConvertObj, Value.DataObj, ValueSet.AddValueObj take and return point objects from COM clients.

335. Changed script functions: constructors for curve objects have been replaced with GeomBuilder.AddCurveCircle, GeomBuilder.AddCurveCircle3, GeomBuilder.AddCurveEllipse, GeomBuilder.AddCurveEllipse3, GeomBuilder.AddCurveSpline, GeomBuilder.AddCurveSpline3 functions that can be used from COM clients.

336. New script functions: CurveCircle.CoordObj, CurveCircle3.Coord3Obj, CurveEllipse.CenterObj, CurveEllipse.CoordObj, CurveEllipse3.Center3Obj, CurveEllipse3.Coord3Obj, CurveSpline.CoordObjs, CurveSpline3.Coord3Objs take and return point objects from COM clients.

337. New script functions: Geom.Branch.CoordObjs, Geom.Branch.Coord3Objs, Geom.CoordObjs, Geom.Coord3Objs return point objects to COM clients.

338. New script functions: Tile.PixelObjs, TileBuilder.PixelObjs take and return point objects from COM clients.

339. New script function: PropertySet.EnumObj exposes a enumerator for COM clients.

340. New script function: Database.GetComponentType returns type for component with a specified name.

341. New script function: Application.GetTechnologyForFile attempts to detect technology for a file with the specified name.

342. New script function: Database.ExportFile exports a component to a file with the specified name, detecting export technology from the name.

343. New script function: Sequence.Recompose takes a sequence and returns a new sequence with rearranged or filtered output values. The function is used with batch updates.

The update is available on the Product Downloads page.

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