Released 2019-09-25 (Framework version 5.4.14)
- Data in pyramid levels is now stored and drawn successfully when a new raster band is added through the Python API. Raster bands added in older versions of the Python API may not display when zoomed out - these bands may need to be deleted and recreated.
- BICUBIC level policies can now be used; previously MAX had been used instead. Creating a band with a BICUBIC level policy will result in the coverage not being able to be opened in older software.
- The level policy used to create a new band is now stored as metadata in the BandInfo for raster bands.
Released 2019-07-31 (Framework version 5.4.8)
- Only files that have been successfully uploaded as attachments to a BDB Server database are now shown as attachments.
Released 2019-05-28 (Framework version 5.4.6)
Released 2019-05-17 (Framework version 5.4.5)
- Support for the
set_string_tablefunction has been added for CSAR clouds and raster surfaces.
- Attribute type information can now be displayed using the __str__ function.
.maxOccursattribute can now be used to determine whether an attribute type supports only one value or multiple values.
- Remaining references to environment_python.xml file have been removed. No functional changes are expected.
Released 2019-05-01 (Framework version 5.4.4)
- Added better support for multiple values in a single attribute.
Released 2019-04-17 (Framework version 5.4.3)
- Support was added for flag set bands such as Status. The Status band is now listed as a band for point clouds, and when applicable, the band values can be modified.The
queryfunction for point clouds now has an optional parameter named flags that can be used to limit which values of flag set bands pass the filter. flags=((‘Status’, (‘Rejected’),())) or flags=(‘Status’,’Rejected’) can be used to exclude all rejected points, whereas flags=((‘Status’,(),(‘Designated’))) can be used to only include designated points.
- Entries in a string table are no longer escaped for use in a regular expression. They will now be escaped according to the rules for python strings.
Released 2019-03-28 (Framework version 5.4.1)
- Filter expressions can now use the IS and CONTAINS operators.
- It is now possible to iterate over the points in a point cloud stored with 2D positions (X, Y).
- Iterating over the points in a point cloud no longer causes the application to close if an empty chunk is found. This could happen if the extents of the point cloud included large areas with no data.
Released 2019-01-30 (Framework version 5.3.5)
- The overlaps feature query now only returns the features that overlap with the specified geometry.
Released 2019-01-09 (Framework version 5.3.3)
- Currently, when reading geometries defined in the GML format, the coordinates are always expected to be defined as (longitude, latitude) coordinate pairs. However, geodetic geometries were typically written in (latitude, longitude) coordinate pairs. This resulted in a mismatch when dealing with data such as features in a BDB Server database, which are always stored in the WGS 84 coordinate reference system (CRS). This mismatch could occur, for example, when using the geometry of one feature to query for other features in the database.Now, geodetic information is stripped out of the CRS before writing the geometry to GML. This ensures that coordinates are consistently written in the (x, y) format, i.e. (longitude, latitude). This resolves the inconsistency between writing and reading the coordinates. It also allows the Python API to be used to retrieve the geometry of a feature in a database and then use that geometry to make subsequent queries.
Released 2018-11-29 (Framework version 5.3.1)
- User-specified no data values are now respected.
- Issues with setting band values after creating or deleting a band in the raster have been fixed.
Released 2018-10-26 (Framework version 5.2.0)
- The coordinate reference system well-known text descriptions for coverages now have datum names that are compatible with third-party systems using the GDAL third-party library.
Released 2018-09-25 (Framework version 5.1.8)
- Added read-only access to the bounding polygon of a coverage through the
bounding_polygonattribute, which contains the bounding polygon geometries in WKT format.
Released 2018-08-01 (Framework version 5.1.5)
- The caris.coverage module now supports creating a raster with a non-zero origin. Previously, an error message was displayed if the origin values were greater than the dimensions of the raster.
Released 2018-02-13 (Framework version 5.0.0)
- The general vector API can now be used for creating and editing BDB Server database features. There is still BDB Server-specific content, mostly related to associating coverages with vector features.
- The Python API now allows querying all offline objects, or all offline objects with a given feature type.
- It is now possible to specify a custom catalogue (pool/profile) for a BDB Server database through the Python API.
- The Python API now supports explicitly adding relationships to features in a BDB Server database when a master/slave relationship is defined in the database catalogue for the two feature types. This can be done using the add_related_feature function call. Similarly, remove_related_feature can be used to remove an existing relationship.
- When uploading coverage data to a BDB Server database feature, it is now possible to choose whether to replace the existing vector feature with one based on the bounding polygon of the coverage, or to keep the existing vector feature geometry.
- A new feature in the Python API provides the ability to determine if a geometry is valid with floating point precision. This can be used, for example, to determine if the geometry has issues, such as self-crossing, that would prevent it from being used as a representative geometry for a feature in a BDB Server database.
- It is now possible to automatically run a python script when uploading coverage data to a BDB Server database. This can be accomplished by setting the Tools > Options > Feature Plugin value in BASE Editor to an appropriate .py file with a coverage_assigned function.This replaces the previous XSLT and attribute plugin functionality. bdbattributetransfom.xsl is no longer installed with the application as it is no longer used.
- Python files are loaded into memory before executing them, so some built-in functions may not work as expected. The __file__ variable is explicitly set, so it can be used to find other python files in the same directory, e.g. by calling sys.path.append(os.path.dirname(os.path.realpath(__file__))) before importing the other files.
- Values in the environment_python.xml system file are now overridden by any values defined in a user-created copy of the files in either ProgramData or the user directory for the application, %appdata%\CARIS\Bathy DataBASE Server\5.0.
- Functionality for coverages has been expanded significantly. It is now possible to:
open coverages through the generic
caris.open()command, in addition to the specific coverage constructors available before,
determine the type of a coverage using
queryto retrieve coverage data in specified bands, and/or coverage data in a geographic area,
modify existing points in a coverage through the write functions,
iterate over the values in a coverage with the
create new coverages based on data in an iterator,
copy coverage data into numpy arrays using
copy an entire coverage data into a new coverage using
- Python bindings have been added for general vector maps, such as Shapefiles. These general bindings can also be used for BDB Server database maps. The existing BDB Server Python bindings have been substantially adjusted as a result, and a number of new features were added to the BDB Server bindings, such as being able to specify custom catalogues (pool/profile) for new databases and being able to query online/offline state.
- It is now possible to automatically run a Python script when creating or editing features. This can be accomplished by setting the Tools > Options > Feature Plugin value to an appropriate .py file with feature_created and feature_attribute_changed functions.
- The Python API has been extended to give access to the application object (
caris.ui.Application) to allow using message boxes when using functions in a feature plugin.
- The Python API has been extended to give access to a wide variety of vector data formats. A number of classes (e.g.
caris.Dataset) and functions have been added.
- The Python API can now be used to read from any supported raster format. It can now also be used to write GeoTIFF rasters.
- It is now possible to undo changes made to a dataset that have not yet been saved, through the use of a new