Giter Club home page Giter Club logo

helmert3d's Introduction

Origin : GitHub release (latest by date) GitHub Release Date GitHub repo size GitHub all releases GitHub
GLC.ORG: GitHub release (latest by date) GitHub Release Date GitHub repo size GitHub all releases GitHub

helmert3d

About

The 3D Helmert transformation is a frequently used method in geodesy to produce transformations between different cartesian coordinate systems:

Xt=T+sRX

where

Xt = transformed coordinate vector

X = initial coordinate vector

T = translation vector

R = rotation matrix including rx, ry, rz

rx, ry, rz = rotations around the coordinate axes

s = scale factor

Seven parameters are required for this kind of transformation and can be calculated from a set of at least three point correspondences [Crosilla, F. (1999). Procrustes analysis and geodetic sciences. Technical report, Quo vadis geodesia...?, Department of Geodesy and GeoInformatics, University of Stuttgart]. A simple description of the SVD-based algorithm can be found here: http://dx.doi.org/10.18419/opus-523 on page 148 (A.3.1).

All coordinates must be translated to XYZ coordinates, first, if the coordinate system is not cartesian. Transformations between ellipsoidal (B L H = LAT LON H) and cartesian (XYZ) coordinates can be managed with the tool helmeltrans. The ellipsoid name, as well as both axes of the ellipsoid must be predefined in a seperate textfile (ellipsoid_infile). See also common_ellipsoids.txt for common values.

The tool helmparms3d reads two XYZ point-textfiles and calculates all necessary parameters for Helmert transformation. For further computations these parameters are stored in an additional textfile. The Helmert transformation can then be calculated with helmert3d. Finally the alignment can be tested with helmdiff3d.

Development

Build:

make

Install:

sudo make install

Uninstall:

sudo make uninstall

Use

Parameter computation:

helmparms3d xyz_src_infilename xyz_dest_infilename [parms_outfilename]

Transformation:

helmert3d xyz_src_infilename param_infilename [xyz_transformed_outfilename]

Coordinate system translatation:

helmeltrans {blh|xyz} src_infilename ellipsoid_infilename [outfilename]

Transverse Mercator:

helmtmerc {blh|xyh} src_infilename ellipsoid_infilename zone_infilename [outfilename]

Test:

helmdiff3d xyz_dest_infilename xyz_transformed_infilename [xyz_diff_outfilename]

Files

Helmert parameter file format:

 r11 r12 r13
 r21 r22 r23
 r31 r32 r33
 tx ty tz
 s

XYZ data file format:

 X[1] Y[1] Z[1]
 ..   ..   ..
 ..   ..   ..
 X[n] Y[n] Z[n]

BLH data file format:

 B[1] L[1] H[1]
 ..   ..   ..
 ..   ..   ..
 B[n] L[n] H[n]

xyH data file format:

 x[1] y[1] H[1]
 ..   ..   ..
 ..   ..   ..
 x[n] y[n] H[n]

Ellipsoid data file format:

 name a b

Zone data file format:

 zone_size zone_number [zone_scale] [L0] [x0] [y0]

See ellipsoids : Common Ellipsoids


https://github.com/dr-ni/helmert3d

helmert3d's People

Contributors

dr-ni avatar faludiz avatar zvezdochiot avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

helmert3d's Issues

Calculate NTV2 grid

Create ntv2 (National Transformation Version 2) grid shift file using Helmert transform from identical point pairs.
The difference between the coordinates of the grid point in both reference systems is entered as a shift value in the NTv2 file. The calculated shift values include the compensation of regional and local tensions and they consider the different dimensions and bearings of the ellipsoids used in both reference systems. Accurate NTv2 file is generated using small-scale three-dimensional 7-parameter Helmert transformations around each grid point and subsequent Natural Neighbour Interpolation for residual gap distribution.

Format:
https://github.com/Esri/ntv2-file-routines/blob/master/README.md#gsa-file-syntax

towgs84 parameter

Option to calculate valid 7 parameter +towgs84 value that could be used with proj.4/WKT

Optional?

helmparms3d [xyz_src_infilename] [xyz_dest_infilename] [parms_outfilename]

  • xyz_src_infilename, xyz_dest_infilename - required
  • [parms_outfilename] - optional

helmert3d [xyz_src_infilename] [param_infilename] [xyz_transformed_outfilename]

  • xyz_src_infilename, param_infilename - required
  • [xyz_transformed_outfilename] - optional

helmeltrans [blh|xyz] [src_infilename] [ellipsoid_infilename] [outfilename]

  • {blh|xyz}, src_infilename, ellipsoid_infilename - required
  • [outfilename] - optional

helmdiff3d [xyz_dest_infilename] [xyz_transformed_infilename] [xyz_diff_outfilename]

  • xyz_dest_infilename, xyz_transformed_infilename - required
  • [xyz_diff_outfilename] - optional

Ellipsoid?

Hi @dr-ni .

At the moment there is only one ellipsoid:

GRS80 6378137.0 6356752.3141

A list of commonly used ellipsoids known to me:

BESSEL 6377397.155 6356078.962822
GRS80 6378137.0 6356752.3141
GSK2011 6378136.5 6356751.758
KRASOVSKIY 6378245.0 6356863.018773
PZ90 6378136.0 6356752.3142
WGS84 6378137.0 6356752.314245

Add those that you see fit (and wherever you see fit) to this repo.

PS: Should we change the form of a b to the more common a 1/f, where b = a * (1 - f)? See:

Compare and test data?

Residual analysis

Report residuals in output

Residuals:
1.9319 Maximum distance
0.9056 Standard deviation
0.5823 Root Mean Square residual (RMS)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.