Version 1.0.0

Pix4Dengine Server SDK 1.0.0 is a stable release. It follows semantic versioning.

What’s new

  • Windows support is added.
  • Project names can contain all unicode characters except those forbidden for file names by any of POSIX and Win32.
  • Projects with images in multiple directories can be created.
  • Images directories can be searched for images recursively at project creation.
  • Users holding both an ENGINE-SERVER and an ENGINE-CLOUD license are now allowed to login by specifying a license key when calling pix4dengine.login_seat().
  • Added support for radiometric indices with pix4dengine.options.AlgoOption.Index.INDICES.
  • Extended multispectral processing support with additional algorithmic and export options.
  • Additions, removals, and other changes to algorithmic options that improve coherency of the configuration given to the photogrammetry pipeline. Changes incompatible with the previous release are listed in the “API changes” section.
  • A new concept of processing templates. Templates are now defined in terms of Engine SDK options. They are applied to processing pipelines rather than projects. XML templates (.tmpl files) are not supported any more.
  • A revised coordsys API. The changes incompatible with the previous release are listed in the “API changes” section.

API changes

  • pix4dengine.create_project() function:
    • Argument images_dir is renamed to image_dirs. You have to adapt only if you use the keyword argument;
    • Argument processing_proxy is removed;
    • Argument template is removed;
    • Argument callbacks is replaced by on_start and on_success;
    • Argument recursive_input_search is added.
  • The pix4dengine.processingproxy module is removed:
    • The ProcessingProxy class is removed and an object of it cannot be passed to create_project(), login_seat(), logout_seat(), Pipeline() and EngineTask() anymore;
    • The Pipeline and the EngineTask classes moved to the pix4dengine.pipeline module.
  • pix4dengine.constants.processing.ProcessingTemplates is removed. The templates it defined are superseded by those in pix4dengine.pipeline.templates.
  • pix4dengine.utils.processingproxy.Callbacks and pix4dengine.task.Task.Callbacks are removed. Functions taking a Callbacks object have to be now given the on_start, on_success and on_error callables directly.
  • pix4dengine.pipeline.EngineTask.append_config() is renamed to update_config().
  • pix4dengine.process_project() is removed. Project processing must be done exclusively through the more general task pipeline mechanism, using pix4dengine.pipeline.
  • pix4dengine.Project.set_options() is removed. Options must be set exclusively through processing tasks.
  • pix4dengine.options module API:
    • AlgoOption.Ortho.MOSAIC_RELATIVE_RESOLUTION and AlgoOption.Ortho.MOSAIC_ABSOLUTE_RESOLUTION options are added;
    • AlgoOption.Ortho.DTM_RESOLUTION is replaced by AlgoOption.Ortho.DTM_RELATIVE_RESOLUTION and AlgoOption.Ortho.DTM_ABSOLUTE_RESOLUTION;
    • AlgoOption.Index.RESOLUTION is replaced by AlgoOption.Index.RELATIVE_RESOLUTION and AlgoOption.Index.ABSOLUTE_RESOLUTION;
    • AlgoOption.CameraCalibration.MATCH_TIME_MULTI_CAMERA changed type from int to bool, its meaning is the same;
    • AlgoOption.Densification.PCL_IMAGE_SCALE changed its type and allowed values to make them consistent with their meaning;
    • AlgoOption.CameraCalibration.MATCH_STRATEGY is removed. The equivalent pipeline configurations can be set using the new AerialCalibMatch and FreeFlightCalibMatch templates;
    • AlgoOption.Mesh.RESOLUTION option is removed. The equivalent pipeline configurations can be set using the new MeshNormalRes, MeshHighRes and MeshLowRes templates;
    • AlgoOption.CameraCalibration.SKY_SEGMENTATION is obsolete and removed.
  • pix4dengine.coordsys module API:
    • wkt_to_projected_cs() is renamed to wkt_to_cs_name();
    • projected_cs_to_wkt() is renamed to cs_name_to_wkt();
    • get_unit_from_projected_cs() is renamed to unit_from_cs_name();
    • get_unit_from_wkt() is renamed to unit_from_wkt();
    • CoordSys.get_cs() is replaced by CoordSys.get_cs_name() and CoordSys.get_cs_wkt();
    • CoordSys.set_cs() is replaced by CoordSys.set_cs_from_name() and CoordSys.set_cs_from_wkt();
    • CoordSys.is_in_meter(), CoordSys.is_in_foot() and CoordSys.is_in_us_survey_foot() are replaced by CoordSys.get_length_unit().
  • pix4dengine.exports.get_expected_ouput() and pix4dengine.exports.get_available_output() are replaced by get_output().

Compatibility issues

  • pix4dengine.utils.gcp.Mark now references an image by its absolute path rather than by its file name.

Bug fixes

  • Geotags of Mavic2 drones were read incorrectly.
  • Processing hung after finishing if a non-pix4d user account was logged in.
  • Creating a GCP mark for an image added the mark to all images whose file names were substrings of the image file name the mark was created for.

Known issues

  • Externally supplied (in a geolocation file) image geotags for multispectral/multilayer images are not supported.
  • When creating a project, the following message is logged: “Unable to find radiometric calibration target: Detection error / AIRCALIB_DETECTION_ERROR”. This message can be ignored for all projects not actually using a target for radiometric calibration.
  • Changing the coordinate system of images is not supported.
  • Exporting contour lines into a PDF file (pix4dengine.options.AlgoOption.Ortho.CONTOUR_PDF) when no such lines were generated, e.g. absense of elevation, does not create a PDF file, whereas the output of pix4dengine.exports.get_ouput() suggests that such a file exists.

Supported platforms

OS/Distribution Python
Linux/Ubuntu 18.04 64bit 3.6 64bit
Windows 10, Server 2016 64bit 3.6 64bit