ArcGIS Maps SDK for Flutter supports many spatial references and datum transformations out of the box, but can use supplemental files to support additional spatial references, and to perform specific grid-based transformations.

The Projection Engine Data download includes a top-level pedata folder which contains:

GDAL support files

ArcGIS Maps SDK for Flutter uses the Geospatial Data Abstraction Library (GDAL) to support working with most raster data formats as well as OGC Web Feature Service (WFS) data.

Additional GDAL support files enable the SDK to accurately resolve certain spatial references when data needs to be reprojected on-device, for either display or analysis. This can occur with any type of data, but in practice is typically only needed when working with rasters.

These GDAL support files are found in the gdaldata subfolder of the Projection Engine Data download’s pedata folder.

To use the GDAL support files:

  1. Download and extract the relevant Projection Engine Data zip file from the downloads page.
  2. Set the TransformationCatalog.projectionEngineDirectory property to the pedata folder. The SDK will look for GDAL support files in the gdaldata subfolder.

If you do not require grid-based datum transformations in your application, you may remove the geographic and vertical subfolders under the pedata folder.

Using the correct version of GDAL support files

The Projection Engine Data download is updated with each SDK release, typically including updates to the GDAL support files.

When you reference the GDAL support files from your app, use the version that matches the ArcGIS Maps SDK for Flutter version that you are using. A version mismatch could cause unexpected issues, including when rendering data, working with rasters, and working with the Spatial Analysis APIs.

Projection engine grid-based transformation data files

Datum transformations are used to convert data between different spatial references and can be either mathematically defined (equation-based transformations), or may rely on external supporting files with more precise information (grid-based transformations). By default, the API will use the best transformation available.

If more accurate results or a specific grid-based transformation are needed, the appropriate grid-based transformation data files must be present. Attempting to use a grid-based transformation without appropriate data files for that transformation will cause an error. The API can detect whether the necessary files are available on the local file system.

To use the projection engine grid-based transformation data files:

  1. Download and extract the relevant Projection Engine Data zip file from the downloads page.
  2. Set the TransformationCatalog.projectionEngineDirectory property to the pedata folder. The SDK will look for the grid-based transformation files located in the geographic and vertical subfolders.

Check for projection engine grid-based transformation data files

If the supporting file for a specific grid-based transformation cannot be located on the local file system, that transformation cannot be used. This can happen if the Projection Engine directory is not set, or specific datasets are missing when using a transformation created from a list returned by the transformation catalog or from a WKID or WKT.

You can identify such cases using the DatumTransformation.isMissingProjectionEngineFiles() method on the transformation step object (the GeographicTransformationStep or HorizontalVerticalTransformationStep type). Your app could go so far as informing the user about precisely which files are missing, or even automatically download the missing files from a known location. Retrieve the list of required files from the transformation step object.