### Install Git Source: https://proj.org/en/stable/install.html Installs Git, a version control system essential for cloning repositories. ```shell cd c:\dev git clone https://github.com/Microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat ``` -------------------------------- ### Install Clang Tools Source: https://proj.org/en/stable/community/code_contributions.html Install the necessary clang tools for using the Clang Static Analyzer locally on Debian-like systems. ```bash sudo apt install clang-tools libfindbin-libs-perl ``` -------------------------------- ### Configure, Build, and Install PROJ with CMake Source: https://proj.org/en/stable/install.html Use CMake to configure the build, compile the source code, and install the PROJ binaries and libraries. ```bash cmake .. cmake --build . cmake --build . --target install ``` -------------------------------- ### Install PROJ on Windows using OSGeo4W Installer Source: https://proj.org/en/stable/install.html Installs PROJ on Windows via the OSGeo4W installer. This command-line approach automates the GUI steps for advanced users. ```bash C:\temp\osgeo4w-setup.exe -q -k -r -A -s https://download.osgeo.org/osgeo4w/v2/ -P proj ``` -------------------------------- ### Install PROJ on Fedora using DNF Source: https://proj.org/en/stable/install.html Installs PROJ on Fedora Linux using the DNF package manager. ```bash sudo dnf install proj ``` -------------------------------- ### Complete C++ PROJ Coordinate Transformation Example Source: https://proj.org/en/stable/development/quickstart_cpp.html A full C++ program demonstrating coordinate transformation from EPSG:4326 to EPSG:32631 using the PROJ library. Includes setup, transformation, and cleanup. ```cpp #include #include // for HUGE_VAL #include // for std::setprecision() #include #include "proj/coordinateoperation.hpp" #include "proj/crs.hpp" #include "proj/io.hpp" #include "proj/util.hpp" // for nn_dynamic_pointer_cast using namespace NS_PROJ::crs; using namespace NS_PROJ::io; using namespace NS_PROJ::operation; using namespace NS_PROJ::util; int main(void) { auto dbContext = DatabaseContext::create(); // Instantiate a generic authority factory, that is not tied to a particular // authority, to be able to get transformations registered by different // authorities. This can only be used for CoordinateOperationContext. auto authFactory = AuthorityFactory::create(dbContext, std::string()); // Create a coordinate operation context, that can be customized to amend // the way coordinate operations are computed. Here we ask for default // settings. auto coord_op_ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); // Instantiate a authority factory for EPSG related objects. auto authFactoryEPSG = AuthorityFactory::create(dbContext, "EPSG"); // Instantiate source CRS from EPSG code auto sourceCRS = authFactoryEPSG->createCoordinateReferenceSystem("4326"); // Instantiate target CRS from PROJ.4 string (commented out, the equivalent // from the EPSG code) // auto targetCRS = // authFactoryEPSG->createCoordinateReferenceSystem("32631"); auto targetCRS = NN_CHECK_THROW(nn_dynamic_pointer_cast(createFromUserInput( "+proj=utm +zone=31 +datum=WGS84 +type=crs", dbContext))); // List operations available to transform from EPSG:4326 // (WGS 84 latitude/longitude) to EPSG:32631 (WGS 84 / UTM zone 31N). auto list = CoordinateOperationFactory::create()->createOperations( sourceCRS, targetCRS, coord_op_ctxt); // Check that we got a non-empty list of operations // The list is sorted from the most relevant to the less relevant one. // Cf // https://proj.org/operations/operations_computation.html#filtering-and-sorting-of-coordinate-operations // for more details on the sorting of those operations. // For a transformation between a projected CRS and its base CRS, like // we do here, there will be only one operation. assert(!list.empty()); // Create an execution context (must only be used by one thread at a time) PJ_CONTEXT *ctx = proj_context_create(); // Create a coordinate transformer from the first operation of the list auto transformer = list[0]->coordinateTransformer(ctx); // Perform the coordinate transformation. PJ_COORD c = {{ 49.0, // latitude in degree 2.0, // longitude in degree 0.0, // z ordinate. unused HUGE_VAL // time ordinate. unused }}; c = transformer->transform(c); // Display result std::cout << std::fixed << std::setprecision(3); std::cout << "Easting: " << c.v[0] << std::endl; // should be 426857.988 std::cout << "Northing: " << c.v[1] << std::endl; // should be 5427937.523 // Destroy execution context proj_context_destroy(ctx); return 0; } ``` -------------------------------- ### Install PROJ on macOS using Homebrew Source: https://proj.org/en/stable/install.html Installs PROJ on macOS using the Homebrew package manager. Ensure Homebrew is installed. ```bash brew install proj ``` -------------------------------- ### Install PROJ on Debian/Ubuntu using APT Source: https://proj.org/en/stable/install.html Installs the PROJ binary package on Debian-based Linux distributions using the APT package manager. ```bash sudo apt-get install proj-bin ``` -------------------------------- ### Install GFortran on Ubuntu Source: https://proj.org/en/stable/resource_files.html Installs the GFortran compiler on Ubuntu systems, required for compiling the HTDP program. ```bash apt-get install gfortran ``` -------------------------------- ### Install Pre-commit Hooks Source: https://proj.org/en/stable/development/dev_practices.html Install pre-commit hooks to automatically run code linters before committing. This ensures code quality and consistency. ```bash python -m pip install pre-commit pre-commit install ``` -------------------------------- ### Peirce Quincuncial Projection Examples Source: https://proj.org/en/stable/operations/projections/peirce_q.html Examples of proj-strings for the Peirce Quincuncial projection with different shape options. ```APIDOC ## Peirce Quincuncial Projection Examples ### Description Examples of proj-strings for the Peirce Quincuncial projection with different shape options. ### Code Snippets #### Square Shape ```proj +proj=peirce_q +lon_0=25 +shape=square ``` #### Diamond Shape ```proj +proj=peirce_q +lon_0=25 +shape=diamond ``` #### Horizontal Shape ```proj +proj=peirce_q +lon_0=25 +shape=horizontal ``` #### Grieger Triptychial Projection (Oblique Transformation) ```proj +proj=pipeline +step +proj=ob_tran +o_proj=peirce_q +o_lat_p=-45 +o_lon_p=45 +o_type=horizontal +o_scrollx=-0.25 +step +proj=affine +s11=-1 +s12=0 +s21=0 +s22=-1 ``` ``` -------------------------------- ### No Operation Conversion Example Source: https://proj.org/en/stable/operations/conversions/noop.html This example demonstrates passing coordinates through the noop conversion using the cct command-line tool. The input coordinates are returned exactly as they were provided. ```bash $ echo 12 34 56 78 | cct +proj=noop 12.0000 34.0000 56.0000 78.0000 ``` -------------------------------- ### PROJ v.5: Coordinate Transformation Example Source: https://proj.org/en/stable/development/migration.html Implements the same coordinate conversion as the v.4 example but using the newer PROJ v.5 API. Features updated header, data types, and transformation functions. ```c #include main(int argc, char **argv) { PJ *P; PJ_COORD c; P = proj_create(PJ_DEFAULT_CTX, "+proj=merc +ellps=clrk66 +lat_ts=33"); if (P==0) return 1; while (scanf("%lf %lf", &c.lp.lam, &c.lp.phi) == 2) { c.lp.lam = proj_torad(c.lp.lam); c.lp.phi = proj_torad(c.lp.phi); c = proj_trans(P, PJ_FWD, c); printf("%.2f\t%.2f\n", c.xy.x, c.xy.y); } proj_destroy(P); } ``` -------------------------------- ### PROJ 4 to 5 API Migration: cs2cs vs cct Example Source: https://proj.org/en/stable/development/migration.html Demonstrates the difference in transforming coordinates between PROJ 4 (using `cs2cs`) and PROJ 5 (using `cct`). The PROJ 5 example uses `+inv` for inverse transformation within a pipeline. ```bash $ echo 300000 6100000 | cs2cs +proj=utm +zone=33 +ellps=GRS80 +to +proj=utm +zone=32 +ellps=GRS80 683687.87 6099299.66 0.00 ``` ```bash $ echo 300000 6100000 0 0 | cct +proj=pipeline +step +inv +proj=utm +zone=33 +ellps=GRS80 +step +proj=utm +zone=32 +ellps=GRS80 683687.8667 6099299.6624 0.0000 0.0000 ``` -------------------------------- ### Install PROJ Dependencies with vcpkg Source: https://proj.org/en/stable/install.html Installs PROJ dependencies sqlite3, tiff, and curl using vcpkg for both x86 and x64 Windows triplets. Note that tiff and curl are only needed for PROJ versions 7.0 and later. ```shell vcpkg install sqlite3[core,tool] tiff curl --triplet=x86-windows vcpkg install sqlite3[core,tool] tiff curl --triplet=x64-windows ``` -------------------------------- ### Spatiotemporal Transformation Example Source: https://proj.org/en/stable/tutorials/EUREF2019/exercises/helmert.html This example demonstrates a spatiotemporal transformation, showing input coordinates with a time tag (decimal year) and the expected output coordinates. Note that the time component is always required for spatiotemporal transformations in PROJ and is not altered by the transformation itself. Pay attention to parameter units, converting them to standard units like meters if necessary. ```text operation tolerance 1 mm accept 2952736.3768 1360917.6894 5468849.5615 2019.5 expect 2952736.3744 1360917.6871 5468849.5586 2019.5 ``` -------------------------------- ### Create and Navigate to Build Directory Source: https://proj.org/en/stable/install.html Create a separate directory for building PROJ and change into it. This keeps the source tree clean. ```bash mkdir build cd build ``` -------------------------------- ### Uninstall PROJ Source: https://proj.org/en/stable/install.html Remove files installed by the 'install' target using the 'uninstall' CMake target. Available starting with PROJ 9.2. ```bash cmake --build . --target uninstall ``` -------------------------------- ### TemporalExtent Source: https://proj.org/en/stable/development/reference/cpp/metadata.html Represents the time period covered by the content of a dataset. Provides methods to get the start and end times, and to check for containment and intersection with other temporal extents. ```APIDOC ## TemporalExtent ### Description Time period covered by the content of the dataset. Simplified version of TemporalExtent from GeoAPI. ### Public Functions - **start()** - `const std::string &` - Returns the start of the temporal extent. - **stop()** - `const std::string &` - Returns the end of the temporal extent. - **contains(const TemporalExtentNNPtr &other)** - `bool` - Returns whether this extent contains the other one. - **intersects(const TemporalExtentNNPtr &other)** - `bool` - Returns whether this extent intersects the other one. ### Public Static Functions - **create(const std::string &start, const std::string &stop)** - `TemporalExtentNNPtr` - Instantiate a TemporalExtent. - Parameters: - **start** - `const std::string &` - start. - **stop** - `const std::string &` - stop. - Returns: - `TemporalExtentNNPtr` - a new TemporalExtent. ``` -------------------------------- ### Complete C API Example Source: https://proj.org/en/stable/development/quickstart.html A full compilable C program demonstrating coordinate transformation from EPSG:4326 to UTM zone 32 and back, including normalization. ```c #include #include int main(void) { PJ_CONTEXT *C; PJ *P; PJ *norm; PJ_COORD a, b; /* or you may set C=PJ_DEFAULT_CTX if you are sure you will */ /* use PJ objects from only one thread */ C = proj_context_create(); P = proj_create_crs_to_crs( C, "EPSG:4326", "+proj=utm +zone=32 +datum=WGS84", /* or EPSG:32632 */ NULL); if (0 == P) { fprintf(stderr, "Failed to create transformation object.\n"); return 1; } /* This will ensure that the order of coordinates for the input CRS */ /* will be longitude, latitude, whereas EPSG:4326 mandates latitude, */ /* longitude */ norm = proj_normalize_for_visualization(C, P); if (0 == norm) { fprintf(stderr, "Failed to normalize transformation object.\n"); return 1; } proj_destroy(P); P = norm; /* a coordinate union representing Copenhagen: 55d N, 12d E */ /* Given that we have used proj_normalize_for_visualization(), the order */ /* of coordinates is longitude, latitude, and values are expressed in */ /* degrees. */ a = proj_coord(12, 55, 0, 0); /* transform to UTM zone 32, then back to geographical */ b = proj_trans(P, PJ_FWD, a); printf("easting: %.3f, northing: %.3f\n", b.enu.e, b.enu.n); b = proj_trans(P, PJ_INV, b); printf("longitude: %g, latitude: %g\n", b.lp.lam, b.lp.phi); /* Clean up */ proj_destroy(P); proj_context_destroy(C); /* may be omitted in the single threaded case */ return 0; } ``` -------------------------------- ### Install PROJ using Conda Source: https://proj.org/en/stable/install.html Installs the PROJ package from the conda-forge channel. Ensure you have conda installed and configured. ```bash conda install -c conda-forge proj ``` -------------------------------- ### Web Mercator Forward Projection Example Source: https://proj.org/en/stable/operations/projections/webmerc.html Demonstrates how to perform a forward projection using the Web Mercator method with specific input coordinates and the WGS84 datum. Ensure the 'proj' command-line tool is available. ```bash $ echo 2 49 | proj +proj=webmerc +datum=WGS84 222638.98 6274861.39 ``` -------------------------------- ### Install PROJ on macOS using MacPorts Source: https://proj.org/en/stable/install.html Installs PROJ on macOS using the MacPorts package manager. Ensure MacPorts is installed. ```bash sudo ports install proj ``` -------------------------------- ### Forward Projection Example (Sphere) Source: https://proj.org/en/stable/operations/projections/eqearth.html Demonstrates a forward projection on a sphere with a specified radius. Ensure the input coordinates are in decimal degrees. ```bash $ echo 122 47 | proj +proj=eqearth +R=1 1.55 0.89 ``` -------------------------------- ### PROJ Init File Format Source: https://proj.org/en/stable/resource_files.html Init files define pre-configured PROJ strings, often for transformations to WGS84. This example shows the format for defining a coordinate reference system using its EPSG ID and a PROJ string. ```plaintext <3819> +proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs <> ``` -------------------------------- ### PROJ Init File Metadata Entry Source: https://proj.org/en/stable/resource_files.html This example shows a special metadata entry format accepted in PROJ init files since version 4.10.0, providing version and origin information. ```plaintext +version=9.0.0 +origin=EPSG +lastupdate=2017-01-10 ``` -------------------------------- ### Mercator Projection Usage Examples Source: https://proj.org/en/stable/operations/projections/merc.html Examples demonstrating the usage of the Mercator projection with different parameters. ```APIDOC ## Mercator Projection Usage Applications should be limited to equatorial regions, but is frequently used for navigational charts with latitude of true scale (`+lat_ts`) specified within or near chart's boundaries. It is considered to be inappropriate for world maps because of the gross distortions in area; for example the projected area of Greenland is larger than that of South America, despite the fact that Greenland's area is 1/8 that of South America [Snyder1987]. ### Example using latitude of true scale: ``` $ echo 56.35 12.32 | proj +proj=merc +lat_ts=56.5 3470306.37 759599.90 ``` ### Example using scaling factor: ``` echo 56.35 12.32 | proj +proj=merc +k_0=2 12545706.61 2746073.80 ``` Note that `+lat_ts` and `+k_0` are mutually exclusive. If used together, `+lat_ts` takes precedence over `+k_0`. ``` -------------------------------- ### Create PROJ Database Context Source: https://proj.org/en/stable/development/quickstart_cpp.html Instantiate a DatabaseContext with default settings to locate the PROJ data files. ```cpp auto dbContext = DatabaseContext::create(); ``` -------------------------------- ### Download All Resource Files with projsync Source: https://proj.org/en/stable/apps/projsync.html Use this command to download all available resource files. This is a straightforward way to ensure you have the complete dataset. ```bash projsync --all ``` -------------------------------- ### create(const util::PropertyMap &propertiesConversion, const util::PropertyMap &propertiesOperationMethod, const std::vector ¶meters, const std::vector &values) Source: https://proj.org/en/stable/development/reference/cpp/operation.html Instantiates a Conversion and its OperationMethod using provided properties, parameters, and values. ```APIDOC ## create(const util::PropertyMap &propertiesConversion, const util::PropertyMap &propertiesOperationMethod, const std::vector ¶meters, const std::vector &values) ### Description Instantiate a Conversion and its OperationMethod. ### Parameters: #### Path Parameters * **propertiesConversion** (util::PropertyMap) - See General properties of the conversion. At minimum the name should be defined. * **propertiesOperationMethod** (util::PropertyMap) - See General properties of the operation method. At minimum the name should be defined. * **parameters** (std::vector) - the operation parameters. * **values** (std::vector) - the operation values. Constraint: values.size() == parameters.size() ### Throws: InvalidOperation -- if the object cannot be constructed. ### Returns: a new Conversion. ``` -------------------------------- ### PROJJSON Example URL Source: https://proj.org/en/stable/specifications/projjson.html An example URL demonstrating how to access CRS definitions in PROJJSON format from the spatialreference.org website. ```url https://spatialreference.org/ref/epsg/4326/projjson.json ``` -------------------------------- ### Using Init Files with cs2cs Source: https://proj.org/en/stable/resource_files.html This command demonstrates how to use a pre-configured PROJ string from an init file (e.g., epsg:3819) with the `cs2cs` utility for coordinate system transformations. ```bash $ cs2cs -v +proj=latlong +to +init=epsg:3819 # ---- From Coordinate System ---- #Lat/long (Geodetic alias) # # +proj=latlong +ellps=WGS84 # ---- To Coordinate System ---- #Lat/long (Geodetic alias) # # +init=epsg:3819 +proj=longlat +ellps=bessel ``` -------------------------------- ### Example Grid Type Item Source: https://proj.org/en/stable/specifications/geodetictiffgrids.html This snippet shows an example of how to specify the TYPE for a grid within an Item element. ```xml HORIZONTAL_OFFSET ``` -------------------------------- ### Python as a command-line calculator Source: https://proj.org/en/stable/tutorials/geodesics.html Demonstrates using Python as a simple command-line calculator for basic arithmetic operations. ```python python -c print((4+8)/2) ``` -------------------------------- ### Inverse Projection Example Source: https://proj.org/en/stable/operations/projections/natearth.html Demonstrates an inverse projection on a sphere with a specified radius. Ensure the 'proj' command-line tool is available. ```bash $ echo 3500 -8000 | proj -I +proj=natearth +a=7500 37d54'6.091"E 61d23'4.582"S ``` -------------------------------- ### Sample gie Test File Source: https://proj.org/en/stable/apps/gie.html A basic gie test file demonstrating the operation, accept, and expect commands within tags. Comments and styling can be added to improve readability. ```gie -------------------------------------------- Test output of the UTM projection -------------------------------------------- operation +proj=utm +zone=32 +ellps=GRS80 -------------------------------------------- accept 12 55 expect 691_875.632_14 6_098_907.825_05 ``` -------------------------------- ### Pipeline with Inverse Step Source: https://proj.org/en/stable/operations/pipeline.html Example of using the +inv parameter to invert a specific step within a pipeline. This example uses UTM and its inverse. ```PROJ echo -88 42 0 0|cct +zone=16 +proj=pipeline +step +proj=utm +step +proj=utm +inv ``` -------------------------------- ### Gauss-Kruger Projection Example Source: https://proj.org/en/stable/operations/projections/tmerc.html Example of using the Transverse Mercator projection with Gauss-Kruger parameters for Germany. This is useful for grid-based mapping within specific regions. ```bash $ echo 9 51 | proj +proj=tmerc +lon_0=9 +x_0=3500000 +ellps=bessel 3500000.00 5651505.56 ``` -------------------------------- ### Pipeline with Global Parameters Source: https://proj.org/en/stable/operations/pipeline.html Illustrates how parameters defined before the first +step are applied globally to all subsequent steps. ```PROJ +proj=pipeline +ellps=GRS80 +step +proj=cart +step +proj=helmert +x=10 +y=3 +z=1 +step +proj=cart +inv +step +proj=merc ``` -------------------------------- ### Run rHEALPix Projection Source: https://proj.org/en/stable/operations/projections/rhealpix.html Demonstrates how to perform a rHEALPix projection using the PROJ command-line utility. This example uses the default GRS80 ellipsoidal model and specifies the north_square parameter. ```bash proj +proj=rhealpix +north_square=2 -E << EOF > 55 12 > EOF 55 12 6115727.86 1553840.13 ``` -------------------------------- ### Cassini Projection Example (Soldner Berlin) Source: https://proj.org/en/stable/operations/projections/cass.html Example of using the Cassini projection with the Bessel ellipsoid for Soldner Berlin. Input coordinates are in decimal degrees. ```bash $ echo 13.5 52.4 | proj +proj=cass \ +lat_0=52.41864827777778 +lon_0=13.62720366666667 \ +x_0=40000 +y_0=10000 +ellps=bessel 31343.05 7932.76 ``` -------------------------------- ### Install PROJ on Red Hat using YUM Source: https://proj.org/en/stable/install.html Installs PROJ on Red Hat Enterprise Linux and similar distributions using the YUM package manager. ```bash sudo yum install proj ``` -------------------------------- ### Install PROJ using Docker Source: https://proj.org/en/stable/install.html Pulls the official PROJ Docker image, which includes binaries and grid shift files. Useful for containerized environments. ```bash docker pull osgeo/proj ``` -------------------------------- ### Install PROJ Data Package using Conda Source: https://proj.org/en/stable/install.html Installs the PROJ data package, which includes necessary grid shift files. Recommended for full functionality. ```bash conda install -c conda-forge proj-data ``` -------------------------------- ### Standard Molodensky Transform Example Source: https://proj.org/en/stable/operations/transformations/molodensky.html This example shows the standard Molodensky transform. It uses the same parameters as the abridged version but without the 'abridged' flag for a more precise calculation. ```plaintext proj=molodensky a=6378160 rf=298.25 da=-23 df=-8.120449e-8 dx=-134 dy=-48 dz=149 ``` -------------------------------- ### create(properties, baseCRSIn, hubCRSIn, transformationIn) Source: https://proj.org/en/stable/development/reference/cpp/crs.html Instantiates a BoundCRS from a base CRS, a hub CRS, and a transformation with properties. ```APIDOC ## create(const util::PropertyMap &properties, const CRSNNPtr &baseCRSIn, const CRSNNPtr &hubCRSIn, const operation::TransformationNNPtr &transformationIn) ### Description Instantiate a BoundCRS from a base CRS, a hub CRS and a transformation. ### Parameters - **properties** (util::PropertyMap) - See General properties. - **baseCRSIn** (CRSNNPtr) - base CRS. - **hubCRSIn** (CRSNNPtr) - hub CRS. - **transformationIn** (operation::TransformationNNPtr) - transformation from base CRS to hub CRS. ### Returns new BoundCRS (BoundCRSNNPtr) ``` -------------------------------- ### Transforming a point with LINZ NZGD2000 deformation model Source: https://proj.org/en/stable/operations/transformations/defmodel.html Use this example to transform a point using the LINZ NZGD2000 deformation model. Ensure the JSON master file is correctly specified. ```bash echo 166.7133850980 -44.5105886020 293.3700 2007.689 | cct +proj=defmodel +model=nzgd2000-20180701.json ``` -------------------------------- ### Gauss Boaga Projection Example Source: https://proj.org/en/stable/operations/projections/tmerc.html Example of using the Transverse Mercator projection with Gauss Boaga parameters for Italy. This demonstrates a specific regional application of the projection. ```bash $ echo 15 42 | proj +proj=tmerc +lon_0=15 +k_0=0.9996 +x_0=2520000 +ellps=intl 2520000.00 4649858.60 ``` -------------------------------- ### Abridged Molodensky Transform Example Source: https://proj.org/en/stable/operations/transformations/molodensky.html This example demonstrates the abridged version of the Molodensky transform. It requires parameters for the ellipsoid, differences in semimajor axis and flattening, and axis offsets. ```plaintext proj=molodensky a=6378160 rf=298.25 da=-23 df=-8.120449e-8 dx=-134 dy=-48 dz=149 abridged ``` -------------------------------- ### Navigate to PROJ Source Directory Source: https://proj.org/en/stable/install.html Change the current directory to the unpacked PROJ source code directory. ```bash cd proj-9.8.1 ``` -------------------------------- ### Cassini Projection Example (EPSG 30200) Source: https://proj.org/en/stable/operations/projections/cass.html Example of using the Cassini projection with specific parameters for Trinidad 1903. Ensure input coordinates are in decimal degrees and output is in meters. ```bash $ echo 0.17453293 -1.08210414 | proj +proj=cass \ +lat_0=10.44166666666667 +lon_0=-61.33333333333334 \ +x_0=86501.46392051999 +y_0=65379.0134283 \ +a=6378293.645208759 +b=6356617.987679838 \ +to_meter=0.201166195164 66644.94 82536.22 ``` -------------------------------- ### Grid Metadata Example Source: https://proj.org/en/stable/operations/transformations/deformation.html Example of expected GDAL band metadata for GeoTIFF grids used in deformation models. Ensure Description and Unit Type are set for east, north, and up velocities. ```text Band 1 Block=... Type=Float32, ColorInterp=Gray Description = east_velocity Unit Type: mm/year Band 2 Block=... Type=Float32, ColorInterp=Undefined Description = north_velocity Unit Type: mm/year Band 3 Block=... Type=Float32, ColorInterp=Undefined Description = up_velocity Unit Type: mm/year ``` -------------------------------- ### Molodensky-Badekas Transform Example Source: https://proj.org/en/stable/operations/transformations/molobadekas.html This example demonstrates transforming coordinates from La Canoa to REGVEN using the molobadekas operation with the coordinate_frame convention. Ensure all parameters are correctly specified for accurate transformation. ```PROJ proj=molobadekas convention=coordinate_frame x=-270.933 y=115.599 z=-360.226 rx=-5.266 ry=-1.238 rz=2.381 s=-5.109 px=2464351.59 py=-5783466.61 pz=974809.81 ```