summaryrefslogtreecommitdiff
path: root/dk_sdfe
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-12-17 20:58:35 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-12-17 20:58:35 +0100
commitde6a04d8d600df2a0ac5896c5b82f243b5f8586c (patch)
tree6783282a3910c1149afa3e5555bdc2ea9988a2c8 /dk_sdfe
parent224fc83db04262c3fce858526998a0de5930203f (diff)
downloadPROJ-data-de6a04d8d600df2a0ac5896c5b82f243b5f8586c.tar.gz
PROJ-data-de6a04d8d600df2a0ac5896c5b82f243b5f8586c.zip
Add non-grids DK, FO and NKG resource files
Diffstat (limited to 'dk_sdfe')
-rw-r--r--dk_sdfe/DK586
-rw-r--r--dk_sdfe/DK_bornholm.pol285
-rw-r--r--dk_sdfe/DK_bridges.pol141
-rw-r--r--dk_sdfe/DK_general.pol363
-rw-r--r--dk_sdfe/DK_jutland.pol380
-rw-r--r--dk_sdfe/DK_zealand.pol251
-rw-r--r--dk_sdfe/FO42
-rw-r--r--dk_sdfe/FO_fk89.pol242
-rw-r--r--dk_sdfe/NKG195
9 files changed, 2485 insertions, 0 deletions
diff --git a/dk_sdfe/DK b/dk_sdfe/DK
new file mode 100644
index 0000000..d0b4ae9
--- /dev/null
+++ b/dk_sdfe/DK
@@ -0,0 +1,586 @@
+#------------------------------------------------------------------------------------------------------
+#
+# PROJ implementations of current and legacy Danish coordinate systems
+#
+#------------------------------------------------------------------------------------------------------
+#
+# This file is Work-In-Progress, and should not be used without great testing care. It is
+# currently provided for informational and testing purposes, but will in due course become
+# the official definition and implementation of transformations to and from Danish systems.
+#
+# Revision history:
+# -----------------
+#
+# 2017-09-?? Initial setup.
+# Kristian Evers <kreve@sdfe.dk>
+#
+# 2017-11-03 Formal definitions of legacy systems,
+# New datum naming structure
+# Check up on all polynomial transformations.
+# Karsten Engsager, Thomas Knudsen <thokn@sdfe.dk>
+#
+# 2017-11-08 Clean up, introduce _TC32_TD32, add descriptions
+# Thomas Knudsen <thokn@sdfe.dk>
+#
+# 2017-12-08 Introduce the Femerbelt system, the Storstrom
+# projection, and a number of seldom-used legacy
+# systems.
+# Karsten Engsager, Thomas Knudsen <thokn@sdfe.dk>
+#
+# 2018-02-21 Check-up, streamline built-in self-tests, add a
+# number of comments and descriptions, preparing
+# for PROJ 5.0.0 release.
+# Thomas Knudsen <thokn@sdfe.dk>
+#
+#------------------------------------------------------------------------------------------------------
+
+
+<metadata> +version=1.0.0 +origin=SDFE +lastupdate=2018-02-26
+
+
+#------------------------------------------------------------------------------------------------------
+# Vertical datums
+#------------------------------------------------------------------------------------------------------
+<DVR90> proj=vgridshift grids=dvr90.gtx # current
+<DNN> proj=vgridshift grids=dnn.gtx # historical
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# UTM ETRS89: The primary system for mapping
+#------------------------------------------------------------------------------------------------------
+<UTM32N> proj=utm zone=32 ellps=GRS80 units=m no_defs
+<UTM33N> proj=utm zone=33 ellps=GRS80 units=m no_defs
+
+<UTM32N_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:UTM32N
+<UTM33N_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:UTM33N
+
+<UTM32N_DNN> proj=pipeline step init=DK:DNN step init=DK:UTM32N
+<UTM33N_DNN> proj=pipeline step init=DK:DNN step init=DK:UTM33N
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:UTM32N
+tolerance 0.1 mm
+accept 12 55
+expect 691875.6321 6098907.8250
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+#------------------------------------------------------------------------------------------------------
+# DKTM ETRS89: Used for construction tasks, where a scale factor close to unity is important
+#------------------------------------------------------------------------------------------------------
+<DKTM1> proj=etmerc lat_0=0 lon_0=9 k=0.99998 x_0=200000 y_0=-5000000 ellps=GRS80 units=m no_defs
+<DKTM2> proj=etmerc lat_0=0 lon_0=10 k=0.99998 x_0=400000 y_0=-5000000 ellps=GRS80 units=m no_defs
+<DKTM3> proj=etmerc lat_0=0 lon_0=11.75 k=0.99998 x_0=600000 y_0=-5000000 ellps=GRS80 units=m no_defs
+<DKTM4> proj=etmerc lat_0=0 lon_0=15 k=1 x_0=800000 y_0=-5000000 ellps=GRS80 units=m no_defs
+
+<DKTM1_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:DKTM1
+<DKTM2_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:DKTM2
+<DKTM3_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:DKTM3
+<DKTM4_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:DKTM4
+
+<DKTM1_DNN> proj=pipeline step init=DK:DNN step init=DK:DKTM1
+<DKTM2_DNN> proj=pipeline step init=DK:DNN step init=DK:DKTM2
+<DKTM3_DNN> proj=pipeline step init=DK:DNN step init=DK:DKTM3
+<DKTM4_DNN> proj=pipeline step init=DK:DNN step init=DK:DKTM4
+
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Kp2000 ETRS89: A predecessor to DKTM (see above). Kp2000 was never in widespread use.
+#------------------------------------------------------------------------------------------------------
+<KP2000B> proj=etmerc lat_0=0 lon_0=15 k=1 x_0=900000 y_0=0 ellps=GRS80 units=m no_defs
+<KP2000J> proj=etmerc lat_0=0 lon_0=9.5 k=0.99995 x_0=200000 y_0=0 ellps=GRS80 units=m no_defs
+<KP2000S> proj=etmerc lat_0=0 lon_0=12 k=0.99995 x_0=500000 y_0=0 ellps=GRS80 units=m no_defs
+
+<KP2000B_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:KP2000B
+<KP2000J_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:KP2000J
+<KP2000S_DVR90> proj=pipeline step init=DK:DVR90 step init=DK:KP2000S
+
+<KP2000B_DNN> proj=pipeline step init=DK:DNN step init=DK:KP2000B
+<KP2000J_DNN> proj=pipeline step init=DK:DNN step init=DK:KP2000J
+<KP2000S_DNN> proj=pipeline step init=DK:DNN step init=DK:KP2000S
+
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Storstrom Bridge Map Projection: lon_0=1152nt
+#------------------------------------------------------------------------------------------------------
+<SSBKP> proj=etmerc ellps=GRS80
+ lat_0=0 lon_0=11.86666666666666666667
+ x_0=40000 y_0=-6013000
+ k=1 units=m no_defs
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Danish Mercator ETRS89 lat_0=56 x_0=500000 -> y_0=-3716499.0435458627
+#------------------------------------------------------------------------------------------------------
+<DM> proj=merc lat_ts=56 lon_0=9 x_0=500000 y_0=-3716499.0435458627 ellps=GRS80 no_defs
+<DMRC> DK:DM
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:DM
+tolerance 0.1 mm
+accept 12 55
+expect 687178.31448147167 390074.81929540867
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Danish legacy systems - formal definitions
+#------------------------------------------------------------------------------------------------------
+# These formal definitions are for illumination - not for computation.
+# Valid only for observations already measured in the relevant (legacy)
+# reference frame.
+#
+# See below for the much more involved setups needed to go to and from
+# the legacy frames.
+#------------------------------------------------------------------------------------------------------
+# UTM ED50
+<_UTM32_ED50_FORMAL> proj=utm zone=32 ellps=intl units=m no_defs
+<_UTM33_ED50_FORMAL> proj=utm zone=33 ellps=intl units=m no_defs
+
+# System Storebaelt (lon_0= 10 58 nt)
+<_SB_FORMAL> proj=etmerc
+ lat_0=0 lon_0=10.96666666666666667 k=0.999999
+ x_0=500000 y_0=0 ellps=intl
+ units=m no_defs
+
+# Denmark Sweden Bridge Project System Oeresund (ED50) (lon_0 = 12 48 nt)
+<_DKS_FORMAL> proj=etmerc
+ lat_0=0 lon_0=12.8 k=0.999999
+ x_0=119000 y_0=-5895000 ellps=intl
+ units=m no_defs
+
+# Danish Mercator ED50
+<_DM_FORMAL> proj=merc ellps=intl lat_ts=56 lon_0=9
+ x_0=500000 y_0=-3716499.0435879501
+ overfitted_x_0=499919.274212 overfitted_y_0=-3716691.9921
+ units=m no_defs
+
+# Generalstabens lcc Jutland and Zealand (lon_0 = 2 12 nt, W positive)
+<_GS_FORMAL> proj=lcc lat_ts=56 lat_0=55 lon_0=2.2
+ x_0=0 y_0=0 ellps=GS
+
+# Generalstabens konform-koniske for Bornholm (lon_0 = -2 21 nt, W positive)
+<_GSB_FORMAL> proj=lcc lat_1=56 lat_0=55 lon_0=-2.35 # lat_ts=56
+ x_0=18831.460 y_0=5614.621 ellps=GS
+
+# Koebenhavns Kommune
+# <_KK_FORMAL> proj=localcrd ellps=danish units=m no_defs
+#------------------------------------------------------------------------------------------------------
+
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Legacy systems - actual transformations
+#------------------------------------------------------------------------------------------------------
+#
+# Technical implementation
+# -------------------------
+# Most of the transformations to and from the Danish legacy systems are based on a
+# 7-parameter Helmert transformation, followed by a bivariate polynomial adjustment.
+#
+# The Helmert transformation takes us from the current system (ETRS89) to a system that
+# is sufficiently close to the older systems to allow us to take the final steps using
+# the polynomial ("Horner") way.
+#
+# In most cases, the intermediate system is formally ED50: The parameters produce the
+# least squares optimum route from ETRS89 to ED50. But due to the much more stable scale
+# factor of ETRS89, the ED50 coordinates computed using the Helmert step alone reveals
+# the large tensions in the ED50 net: The Helmert transformed coordinates can be thought
+# of as "ED50 if ED50 had as good a scale factor as ETRS89".
+#
+# To discern, we refer to the Helmert transformed datum as "Technical Datum 32",
+# TD32 - a 2D datum for computational use only. A TD32 coordinate transformed
+# to UTM zone 32, is referred to the "Technical Coordinate System 32, on the
+# TD32 datum", _TC32_TD32.
+#
+# _TC32_TD32 is the step stone from which the bivariate Horner polynomials takes us the
+# final steps to the target system.
+#
+# Naming convention
+# ------------------
+# The transformations to and from Danish legacy systems are named such that to go
+#
+# FROM the current system (i.e. for the time being, GEO_ETRS89),
+# TO system X,
+# use the FORWARD method of the transformation accessed as +init=DK:X
+#
+# and conversely, to go
+#
+# FROM system X
+# TO the current system,
+# use the INVERSE method of the transformation accessed as +init=DK:X
+#
+#
+# Numerical example
+# ------------------
+# For example, one may transform data from GEO_ETRS89 to System 45 Bornholm
+# using the syntax
+#
+# echo 15 55 0 0 | cct +init=DK:S45B
+#
+# which will respond with
+#
+# 42915.059286989766000 37569.188021636372000 -33.327159059233963 0.000000000000000
+#
+# And a forward-inverse roundtrip test can be implemented as:
+#
+# echo 15 55 0 0 | cct +init=DK:S45B | cct -I +init=DK:S45B
+#
+# Which results in this near perfect roundtrip:
+#
+# 14.999999999998458 55.000000000290619 -0.000000000931323 0.000000000000000
+#
+# (the test point 15E, 55N is situated close to the south shore of Bornholm,
+# a few km south of the Pedersker village)
+#
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# The primary step stone: _TC32_TD32
+#------------------------------------------------------------------------------------------------------
+<_TC32_TD32>
+ proj=pipeline no_defs
+ step proj=cart ellps=GRS80
+ step proj=helmert inv
+ x = -81.0703 rx = -0.48488
+ y = -89.3603 ry = -0.02436
+ z =-115.7526 rz = -0.41321 s = -0.540645
+ convention = coordinate_frame
+ step proj=cart ellps=intl inv # Now: GEO_TD32
+ step proj=utm ellps=intl zone=32 # And now: TC32_TD32 (UTM32 if ED50 was "perfect")
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:_TC32_TD32
+tolerance 0.1 mm
+accept 9.5 57 0 0
+expect 530454.9998 6317704.6255
+
+operation init=DK:_TC32_TD32
+tolerance 0.1 mm
+accept 15 55 0 0
+expect 883653.4932 6111473.4226
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> UTM32_ED50, valid for Denmark except Bornholm (i.e. west of 13E)
+#------------------------------------------------------------------------------------------------------
+<UTM32_ED50_L>
+ proj=pipeline
+ step init=DK:_TC32_TD32
+ step init=DK_general.pol:TC32_L inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:UTM32_ED50_L
+tolerance 40 mm
+accept 9.5 57 0 0
+expect 530455.2023 6317704.6465
+</gie>
+
+
+
+#------------------------------------------------------------------------------------------------------
+# GEO_ETRS89 -> GEO_ED50, valid for Denmark except Bornholm
+#------------------------------------------------------------------------------------------------------
+<GEO_ED50_L> proj=pipeline
+ step init=DK:UTM32_ED50_L
+ step proj=utm zone=32 ellps=intl units=m no_defs inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:GEO_ED50_L
+tolerance 40 mm
+accept 9.5 57 0 0
+expect 9.501323491951883 57.000587965055587
+accept 12 55 0 0
+expect 12.001173940 55.000628676 # Authoritative value, obtained from KMSTrans2
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> UTM32_ED50, Bornholm
+#------------------------------------------------------------------------------------------------------
+<UTM32_ED50_B> proj=pipeline ellps=GRS80
+ step init=DK:_TC32_TD32
+ step init=DK_bornholm.pol:UTM32_ED50_B # no inv here, due to polynomial swap in DK_bornholm.pol
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:UTM32_ED50_B
+tolerance 30 mm
+accept 15 55 0 0
+expect 883654.5767 6111474.6515 # Authoritative value, obtained from KMSTrans2
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> UTM33_ED50, Bornholm
+#------------------------------------------------------------------------------------------------------
+<UTM33_ED50_B> proj=pipeline ellps=GRS80
+ step init=DK:UTM32_ED50_B
+ step proj=utm zone=32 ellps=intl units=m no_defs inv
+ step proj=utm zone=33 ellps=intl units=m no_defs
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:UTM33_ED50_B
+tolerance 30 mm
+accept 15 55 0 0
+expect 500071.1125 6094991.2120 # Authoritative value, obtained from KMSTrans2
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> GEO_ED50, Bornholm
+<GEO_ED50_B> proj=pipeline ellps=GRS80
+ step init=DK:UTM32_ED50_B
+ step proj=utm zone=32 ellps=intl units=m no_defs inv
+<ED50_B> init=DK:GEO_ED50_B
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:GEO_ED50_B
+tolerance 30 mm
+accept 15 55 0 0
+expect 15.001111641 55.000603892 # Authoritative value, obtained from KMSTrans2
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> System45
+#------------------------------------------------------------------------------------------------------
+<S45B> proj=pipeline no_defs
+ step init=DK:_TC32_TD32
+ step init=DK_bornholm.pol:TC32_B inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:S45B
+tolerance 40 mm
+accept 15 55 0 0
+expect 42915.0596 37569.1876 # Authoritative value, obtained from KMSTrans2
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> System 34 Jutland
+#------------------------------------------------------------------------------------------------------
+<S34J> proj=pipeline ellps=GRS80
+ step init=DK:_TC32_TD32
+ step init=DK_jutland.pol:TC32_L inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:S34J
+tolerance 40 mm
+accept 9.5 57 0 0
+expect 263190.2497 286078.3847
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> System 34 Zealand
+#------------------------------------------------------------------------------------------------------
+<S34S> proj=pipeline ellps=GRS80
+ step init=DK:_TC32_TD32
+ step init=DK_zealand.pol:TC32_L inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:S34S
+tolerance 40 mm
+accept 12.5 55.7 0 0
+expect 76425.6474 143042.0038
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# System Storebaelt (Great Belt system)
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> System Storebaelt (The Great Belt System)
+#------------------------------------------------------------------------------------------------------
+<SB> proj=pipeline no_defs
+ step init=DK:UTM32_ED50_L
+ step init=DK_bridges.pol:UTM32_ED50_L inv # tol = 0.5 mm
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:SB
+tolerance 30 mm
+accept 11 55.3 0 0
+expect 502194.1051 6130826.4745
+accept 10.891109758 55.319726643 0 0
+expect 495280.2216 6133024.6786
+
+direction inverse
+accept 502194.1051 6130826.4745 0 0
+expect 11 55.3
+accept 495280.2216 6133024.6786 0 0
+expect 10.891109758 55.319726643
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Denmark Sweden Bridge Project System Oeresund (ED50) (lon_0 = 12 48 nt)
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> Denmark Sweden Bridge Project System (ED50)
+#------------------------------------------------------------------------------------------------------
+<DKS> proj=pipeline no_defs
+ step init=DK:S34S
+ step init=DK_bridges.pol:S34S inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:DKS
+tolerance 30 mm
+accept 12.7 55.66 0 0
+expect 112779.7960 275908.0748 # Authoritative value, obtained from KMSTrans2
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> Generalstabens System, except Bornholm
+#------------------------------------------------------------------------------------------------------
+<GS> proj=pipeline ellps=GRS80
+ step init=DK:UTM32_ED50_L
+ step init=DK_general.pol:GS
+#------------------------------------------------------------------------------------------------------
+<GEO_GS> proj=pipeline ellps=GRS80
+ step init=DK:GS
+ step init=DK:GS_FORMAL inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:GS
+tolerance 30 mm
+accept 8.998706228455516 55.999371897298793 0 0
+expect 85938.0998 112123.5083
+accept 10 57 0 0
+expect 22859.7375 222752.8941
+direction inverse
+accept 22859.7375 222752.8941 0 0
+expect 10 57
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> Generalstabens System Bornholm
+#------------------------------------------------------------------------------------------------------
+# Implemented as a 4th order complex polynomium going from UTM33_ED50
+# to System GS Bornholm. The datum shift from ETRS89 to ED50 is done
+# in the UTM33_ED50_B step.
+#
+# The complex polynomium partially implements a further datum shift,
+# to System GS Bornholm, partially carries out the conformal mapping
+# from UTM to the Lambert Conformal Conic, which is the formal basis
+# of the GS systems.
+#------------------------------------------------------------------------------------------------------
+<GSB> proj=pipeline ellps=GRS80
+ step init=DK:UTM33_ED50_B
+ step init=DK_bornholm.pol:GSB
+#------------------------------------------------------------------------------------------------------
+<GEO_GSB> proj=pipeline ellps=GRS80 #
+ step init=DK:GSB
+ step init=DK:_GSB_FORMAL inv
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:GSB
+tolerance 30 mm
+accept 15 55 0 0
+expect 14063.5412 5598.3811
+direction inverse
+accept 14063.5412 5598.3811 0 0
+expect 15 55
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Koebenhavns Kommune Koordinatsystem
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> System Koebenhavns Kommune
+#------------------------------------------------------------------------------------------------------
+<KK> proj=pipeline no_defs
+ step init=DK:S34S
+ step init=DK_zealand.pol:KK
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:KK
+tolerance 30 mm
+accept 12.5 55.7 0 0
+expect -133514.7527 79977.9650 # Authoritative value, obtained from KMSTrans2
+direction inverse
+accept -133514.7527 79977.9650 0 0
+expect 12.5 55.7
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+#------------------------------------------------------------------------------------------------------
+# System Ostenfeld (South Jutland, Part of Germany before 1920)
+#
+# NOT READY YET
+#------------------------------------------------------------------------------------------------------
+# <OS_FORMAL> proj=localcrd ellps=bessel units=m no_defs
+#------------------------------------------------------------------------------------------------------
+# ETRS89 (Geodetic) -> System Ostenfeld
+#------------------------------------------------------------------------------------------------------
+<OS> proj=pipeline ellps=GRS80
+ step init=DK:S34J
+ step init=DK_jutland.pol:OS
+ step proj=axisswap order=2,1
+#------------------------------------------------------------------------------------------------------
+<gie>
+operation init=DK:OS
+tolerance 30 mm
+accept 9 55 0 0
+expect 59184.3614 -14910.8690 # KMSTrans2
+direction inverse
+accept 59184.3614 -14910.8690 0 0
+expect 9 55
+</gie>
+#------------------------------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------------------------------
+# Missing: Danske Mercator ED50 & Vertical reference frame transformations
+#------------------------------------------------------------------------------------------------------
+
diff --git a/dk_sdfe/DK_bornholm.pol b/dk_sdfe/DK_bornholm.pol
new file mode 100644
index 0000000..4ee916d
--- /dev/null
+++ b/dk_sdfe/DK_bornholm.pol
@@ -0,0 +1,285 @@
+################################################################################
+#
+# S 4 5 B -> T C 3 2
+#
+################################################################################
+#
+# Forward:
+# in: S45B_S45B, out: TC32_TD32
+#
+# Inverse:
+# in: TC32_TC32, out: S45B_S45B
+#
+# Valid area: Bornholm and surroundings
+#
+################################################################################
+<TC32_B>
+
+proj=horner
+urange=103000
+vrange=119000
+ellps=intl
+
+fwd_origin=47022.563745,51779.260103
+inv_origin=878354.943082,6125305.175366
+# tol=0.040
+deg=6
+
+# static double C_ttb[]
+# tc32_ed50 -> s45b
+# m_lim_gen: 0.153 red = 0 OBS = 1074
+# m = 1.51 cm my_loss = +3 y_enp = +8.4
+# m = 1.53 cm mx_loss = +4 x_enp = +8.4
+
+# mht C_ttb er
+# fwd-inv ombyttet ifht original Poder/Engsager-kode
+# For at opnå at to fwd transform fører fra s45b->tc32->utm32 (->ETRS89)
+
+inv_v=
+# Poly NORTH :: e-degree = 0 : n-degree = 6
+ 5.1779004699e+04,9.9508320295e-01,-2.9453823207e-10,
+ 1.9995084102e-14,-1.4895751366e-18,-9.9734812211e-23,
+ 1.1194218845e-26,
+# Poly NORTH :: e-degree = 1 : n-degree = 5
+ -8.4285679515e-02,-7.9623049286e-09,-3.7190046062e-14,
+ -2.3324127411e-18,-1.1150449763e-22,2.8703154270e-27,
+# Poly NORTH :: e-degree = 2 : n-degree = 4
+ 8.7160434140e-10,-3.3634602927e-14,-5.5718245313e-18,
+ 6.2611750909e-23,-2.1011243838e-26,
+# Poly NORTH :: e-degree = 3 : n-degree = 3
+ 1.0905463989e-14,-4.3960034360e-18,3.6121595001e-22,
+ -1.3493066011e-27,
+# Poly NORTH :: e-degree = 4 : n-degree = 2
+ -1.3360171462e-18,1.0780850646e-22,4.5118286607e-26,
+# Poly NORTH :: e-degree = 5 : n-degree = 1
+ -1.3718883973e-22,1.6263920750e-26,
+# Poly NORTH :: e-degree = 6 : n-degree = 0
+ -5.1004217526e-27
+# tcy 6125305.175366
+
+inv_u=
+# Poly EAST :: n-degree = 0 : e-degree = 6
+ 4.7022495967e+04,-9.9508282498e-01,3.2436283039e-09,
+ -2.6276394334e-15,8.6318533291e-18,-3.8327518550e-23,
+ -2.5704924282e-26,
+# Poly EAST :: n-degree = 1 : e-degree = 5
+ -8.4285975934e-02,5.7098765263e-10,-6.0863955939e-14,
+ 2.3608788740e-18,6.8899581969e-24,-1.1429511179e-26,
+# Poly EAST :: n-degree = 2 : e-degree = 4
+ -4.6079778412e-09,1.5072604543e-14,5.4063862378e-18,
+ 1.2591327827e-22,7.9336388691e-27,
+# Poly EAST :: n-degree = 3 : e-degree = 3
+ -2.9479268638e-14,1.7090049434e-18,2.8413337985e-22,
+ -3.3577391552e-27,
+# Poly EAST :: n-degree = 4 : e-degree = 2
+ 3.0434879273e-18,-1.8081673510e-22,-2.3651419850e-26,
+# Poly EAST :: n-degree = 5 : e-degree = 1
+ 9.2060044804e-23,3.7807953325e-27,
+# Poly EAST :: n-degree = 6 : e-degree = 0
+ -4.9415665221e-27
+# tcx 878354.943082
+
+# static double C_btt[]
+# s45b -> tc32_ed50
+# m_lim_gen: 0.154 red = 0 OBS = 1074
+# m = 1.50 cm my_loss = +3 y_enp = +8.5
+# m = 1.54 cm mx_loss = +4 x_enp = +8.3
+
+fwd_v=
+# Poly NORTH :: e-degree = 0 : n-degree = 6
+ 6.1253054245e+06,9.9778251908e-01,-7.7346152025e-10,
+ -2.5359789369e-14,1.5614918228e-18,9.8091134295e-23,
+ -1.1092581145e-26,
+# Poly NORTH :: e-degree = 1 : n-degree = 5
+ -8.4514352088e-02,-7.9847579284e-09,-2.6865560962e-14,
+ -2.0731372756e-18,-1.3660341123e-22,1.1244836340e-26,
+# Poly NORTH :: e-degree = 2 : n-degree = 4
+ 8.0551988135e-11,3.6661500679e-14,5.4247705403e-18,
+ 8.4494604807e-23,1.3334858516e-26,
+# Poly NORTH :: e-degree = 3 : n-degree = 3
+ 8.3889821184e-15,-4.8124202237e-18,2.9088188830e-22,
+ -2.0129874264e-26,
+# Poly NORTH :: e-degree = 4 : n-degree = 2
+ 2.4716463766e-18,-2.1717177513e-22,-3.2828537638e-26,
+# Poly NORTH :: e-degree = 5 : n-degree = 1
+ -1.2080655753e-22,2.5050435391e-26,
+# Poly NORTH :: e-degree = 6 : n-degree = 0
+ 1.1383483826e-27
+# tcy 51779.260103,
+
+fwd_u=
+# Poly EAST :: n-degree = 0 : e-degree = 6
+ 8.7835485387e+05,-9.9778289691e-01,3.2537215213e-09,
+ 6.9217640616e-15,8.6268883840e-18,4.6748156909e-23,
+ -2.6492402009e-26,
+# Poly EAST :: n-degree = 1 : e-degree = 5
+ -8.4514648771e-02,1.4399520180e-09,-6.0423329711e-14,
+ 6.9816167332e-20,6.7729233542e-23,-5.3308251880e-27,
+# Poly EAST :: n-degree = 2 : e-degree = 4
+ -4.5697800099e-09,-1.5194038814e-14,5.1112653016e-18,
+ -2.0307532869e-22,1.0374125432e-26,
+# Poly EAST :: n-degree = 3 : e-degree = 3
+ -2.8983003841e-14,-1.6414425785e-18,1.7874983379e-22,
+ 1.5492164174e-26,
+# Poly EAST :: n-degree = 4 : e-degree = 2
+ 2.7919197366e-18,1.9218613279e-22,-2.1007264634e-26,
+# Poly EAST :: n-degree = 5 : e-degree = 1
+ 1.0032412389e-22,-5.9007997846e-27,
+# Poly EAST :: n-degree = 6 : e-degree = 0
+ -4.4410970979e-27
+# tcx 47022.563745
+
+
+################################################################################
+#
+# T C 3 2 -> U T M 3 2
+#
+################################################################################
+#
+# Forward:
+# in: TC32_TC32, out: UTM32_ED50_B (ED50 as realised on Bornholm)
+# Inverse:
+# reverse.
+#
+# Valid area: Bornholm and surroundings
+#
+################################################################################
+
+<UTM32_ED50_B>
+proj=horner
+range=119000
+ellps=intl
+
+fwd_origin=877605.269066,6125810.306769
+inv_origin=877605.760036,6125811.281773
+
+
+# tc32_ed50 -> utm32_ed50 : Bornholm
+
+deg=4
+
+# ttu_n and ttu_e are based on static double C_ttu_b[]
+# m_lim_gen: 0.086 red = 0 OBS = 852
+# m = 1.38 cm my_loss = +2 y_enp = +10.5
+# m = 1.44 cm mx_loss = +2 x_enp = +10.4
+# static double ttu_n[]
+
+fwd_v=
+# Poly NORTH :: e-degree = 0 : n-degree = 0..4
+ 6.1258112678e+06,9.9999971567e-01,1.5372750011e-10,
+ 5.9300860915e-15,2.2609497633e-19,
+# Poly NORTH :: e-degree = 1 : n-degree = 0..3
+ 4.3188227445e-05,2.8225130416e-10,7.8740007114e-16,
+ -1.7453997279e-19,
+# Poly NORTH :: e-degree = 2 : n-degree = 0..2
+ 1.6877465415e-10,-1.1234649773e-14,-1.7042333358e-18,
+# Poly NORTH :: e-degree = 3 : n-degree = 0..1
+ -7.9303467953e-15,-5.2906832535e-19,
+# Poly NORTH :: e-degree = 4 : n-degree = 0
+ 3.9984284847e-19
+# tcy 6125810.306769
+
+# static double ttu_e[]
+fwd_u=
+# Poly EAST :: n-degree = 0 : e-degree = 0..4
+ 8.7760574982e+05,9.9999752475e-01,2.8817299305e-10,
+ 5.5641310680e-15,-1.5544700949e-18,
+# Poly EAST :: n-degree = 1 : e-degree = 0..3
+ -4.1357045890e-05,4.2106213519e-11,2.8525551629e-14,
+ -1.9107771273e-18,
+# Poly EAST :: n-degree = 2 : e-degree = 0..2
+ 3.3615590093e-10,2.4380247154e-14,-2.0241230315e-18,
+# Poly EAST :: n-degree = 3 : e-degree = 0..1
+ 1.2429019719e-15,5.3886155968e-19,
+# Poly EAST :: n-degree = 4 : e-degree = 0
+ -1.0167505000e-18
+# tcx 877605.760036
+
+# utt_n and utt_e are based on static double C_utt_b[]
+# utm32_ed50 -> tc32_ed50 : Bornholm
+# m_lim_gen: 0.086 red = 0 OBS = 852
+# m = 1.38 cm my_loss = +2 y_enp = +10.8
+# m = 1.44 cm mx_loss = +2 x_enp = +10.7
+# static double utt_n[]
+
+inv_v=
+# Poly NORTH :: e-degree = 0 : n-degree = 4
+ 6.1258103208e+06,1.0000002826e+00,-1.5372762184e-10,
+ -5.9304261011e-15,-2.2612705361e-19,
+# Poly NORTH :: e-degree = 1 : n-degree = 3
+ -4.3188331419e-05,-2.8225549995e-10,-7.8529116371e-16,
+ 1.7476576773e-19,
+# Poly NORTH :: e-degree = 2 : n-degree = 2
+ -1.6875687989e-10,1.1236475299e-14,1.7042518057e-18,
+# Poly NORTH :: e-degree = 3 : n-degree = 1
+ 7.9300735257e-15,5.2881862699e-19,
+# Poly NORTH :: e-degree = 4 : n-degree = 0
+ -3.9990736798e-19
+# tcy 6125811.281773
+
+# static double utt_e[]
+inv_u=
+# Poly EAST :: n-degree = 0 : e-degree = 0..4
+ 8.7760527928e+05,1.0000024735e+00,-2.8817540032e-10,
+ -5.5627059451e-15,1.5543637570e-18,
+# Poly EAST :: n-degree = 1 : e-degree = 0..3
+ 4.1357152105e-05,-4.2114813612e-11,-2.8523713454e-14,
+ 1.9109017837e-18,
+# Poly EAST :: n-degree = 2 : e-degree = 0..2
+ -3.3616407783e-10,-2.4382678126e-14,2.0245020199e-18,
+# Poly EAST :: n-degree = 3 : e-degree = 0..1
+ -1.2441377565e-15,-5.3885232238e-19,
+# Poly EAST :: n-degree = 4 : e-degree = 0
+ 1.0167203661e-18
+# tcx 877605.760036
+
+
+################################################################################
+#
+# G S B -> U T M 3 3
+#
+################################################################################
+#
+# Forward:
+# in: GSB_GS_B, out: UTM33_ED50_B
+#
+# Inverse:
+# in: UTM33_ED50_B, out: GSB_GS_B
+#
+################################################################################
+<GSB>
+
+proj=horner
+ellps=gs
+urange=31000
+vrange=214000
+range=300000
+#u: 31000 -73000, 31000 -31000
+#v: 34000 -23000, 44000 -19500
+
+fwd_origin=493000.00,6107000.00
+inv_origin=21000.00,18000.00
+# tol=0.040
+
+uneg=true
+# i.e. u = !(uneg) (u - origin) : (origin - u)
+
+deg=4
+
+# static double Cu33gsb[] = utm33_ed50 -> gsb
+fwd_c=
+
+ 17606.901573,21150.097571,
+ 1.000528635e+00,9.507307614e-04,
+ -1.828526053e-09,3.828207311e-11,
+ 2.481016058e-15,1.683466885e-14,
+ 1.795149378e-19,-9.161067528e-19
+
+# static double Cgsbu33[] = gsb -> utm33_ed50
+inv_c=
+
+ 6107392.748060,493150.391692,
+ 9.994721570e-01,9.503132652e-04,
+ 1.815515582e-09,6.128234254e-11,
+ -2.261322580e-15,1.524694510e-14,
+ -1.745394113e-19,-9.146885316e-19
diff --git a/dk_sdfe/DK_bridges.pol b/dk_sdfe/DK_bridges.pol
new file mode 100644
index 0000000..a7ed4dc
--- /dev/null
+++ b/dk_sdfe/DK_bridges.pol
@@ -0,0 +1,141 @@
+################################################################################
+#
+# S B -> U T M 3 2 _ E D 5 0
+#
+################################################################################
+#
+# These are the polynomial coefficients used for transforming to and from
+# the Danish legacy system sb "System Storebælt"
+#
+################################################################################
+
+<UTM32_ED50_L>
+
+
+proj=horner
+ellps=intl
+urange=23312
+vrange=8581
+
+tolerance=0.0005
+deg=3
+
+inv_origin=619480.258923588,6132585.68148837
+inv_c=
+ 6.13342118787027e+06,4.94690181709311e+05,
+ 9.99824464710368e-01,2.82279070814774e-02,
+ 7.66123542220864e-11,1.78425334628927e-09,
+ -1.05584823306400e-14,-3.32554258683744e-15
+
+fwd_origin=494690.026817276,6133421.13183056
+fwd_c=
+ 6.13258562111350e+06,6.19480105709997e+05,
+ 9.99378966275206e-01,-2.82153291753490e-02,
+ -2.27089979140026e-10,-1.77019590701470e-09,
+ 1.08522286274070e-14,2.11430298751604e-15
+
+
+# static double Cu32_sb[] = {
+# /* lng*/ 12.0, /*tol*/ 0.0005,
+# /*y0x0*/ 6.13258568148837e+06, 6.19480258923588e+05,
+# /* 0 */ 6.13342118787027e+06, 4.94690181709311e+05,
+# /* 1 */ 9.99824464710368e-01, 2.82279070814774e-02,
+# /* 2 */ 7.66123542220864e-11, 1.78425334628927e-09,
+# /* 3 */ -1.05584823306400e-14, -3.32554258683744e-15
+# };
+
+# static double Csb_u32[] = {
+# /* lng*/ 12.0, /*tol*/ 0.0005,
+# /*y0x0*/ 6.13342113183056e+06, 4.94690026817276e+05,
+# /* 0 */ 6.13258562111350e+06, 6.19480105709997e+05,
+# /* 1 */ 9.99378966275206e-01, -2.82153291753490e-02,
+# /* 2 */ -2.27089979140026e-10, -1.77019590701470e-09,
+# /* 3 */ 1.08522286274070e-14, 2.11430298751604e-15,
+# };
+
+
+
+
+
+
+################################################################################
+#
+# D K S -> S 3 4 S
+#
+################################################################################
+#
+# These are the polynomial coefficients used for transforming to and from
+# the Danish/Swedish legacy system dks "Danish Sweedish System"
+# for the Oeresund Bridge project
+#
+################################################################################
+#
+# Forward:
+# in: dks_ED50, out: S34S
+#
+# Datum shift by polynomium
+#
+################################################################################
+
+<S34S>
+
+proj=horner
+ellps=intl
+urange=23312
+vrange=8581
+
+tolerance=0.002
+deg=5
+
+fwd_origin=103637.116675,280128.241398
+inv_origin=72992.401611,142892.658020
+
+#static double Cdks_s34s[]
+fwd_v=
+ 1.4289260828e+05,9.9939330016e-01,1.1255920917e-10,
+ -2.6375546482e-15,-9.5149396290e-20,1.7024223972e-24,
+ 3.5038969565e-02,1.4367473901e-09,2.5967234457e-15,
+ -4.7318054910e-20,1.0265769345e-25,
+ 1.1268175971e-10,1.8503698060e-16,-6.8019174157e-20,
+ 9.8847577733e-25,
+ 2.6480969928e-15,-3.8268659605e-22,-6.6031274142e-25,
+ -2.5246448408e-20,-1.5598835890e-26,
+ -4.9904833585e-25
+#Y0 280128.241398
+
+fwd_u=
+ 7.2992315151e+04,-9.9939054228e-01,-6.1602287732e-10,
+ -1.5060657493e-16,-3.1481665924e-20,2.3660238855e-25,
+ 3.5040338291e-02,1.3005431284e-10,2.2046418037e-15,
+ -3.0675854396e-20,-3.0843518371e-25,
+ 9.2088671194e-10,-4.9324983810e-15,-1.1615028246e-19,
+ 2.2834235884e-24,
+ -1.7516677174e-15,5.6527449255e-21,2.0709971943e-26,
+ -5.3155865196e-20,1.2063364265e-24,
+ 5.7367077414e-25
+#X0 103637.116675
+
+#static double Cs34s_dks[]
+inv_v=
+ 2.8012829414e+05,9.9937856026e-01,-1.9513137375e-10,
+ 2.6059058957e-15,9.8448661849e-20,-1.7223526525e-24,
+ 3.5038549546e-02,1.4331049899e-09,2.7227293861e-15,
+ -3.8294077311e-20,-9.0065980349e-26,
+ -4.0647703863e-11,-3.5589933425e-16,6.7644775026e-20,
+ -9.1814477971e-25,
+ 2.6300007633e-15,-2.6376701341e-22,-6.8625063399e-25,
+ 2.6302016560e-20,6.7653023582e-26,
+ -4.8874165220e-25
+#Y0 142892.658020
+
+inv_u=
+ 1.0363703201e+05,-9.9938131800e-01,-6.2049147588e-10,
+ 3.2453856216e-16,-2.9559528487e-20,-2.6636721706e-25,
+ 3.5039918195e-02,2.8136082701e-11,2.5067644278e-15,
+ 2.6769767533e-20,-4.2152089805e-25,
+ 9.1726367185e-10,4.6753315432e-15,-1.1741186042e-19,
+ -2.2514440015e-24,
+ -1.8281255006e-15,-6.1723492089e-21,6.3467999989e-26,
+ -4.9554614249e-20,-1.1100655258e-24,
+ 5.5422468524e-25
+#X0 72992.401611
diff --git a/dk_sdfe/DK_general.pol b/dk_sdfe/DK_general.pol
new file mode 100644
index 0000000..5e4f981
--- /dev/null
+++ b/dk_sdfe/DK_general.pol
@@ -0,0 +1,363 @@
+################################################################################
+#
+# U T M 3 2 -> T C 3 2
+# Jylland and Sjælland
+#
+# Forward:
+# in: UTM32_ED50, out: TC32_TD32
+#
+#
+################################################################################
+<TC32_L>
+
+proj=horner
+ellps=intl
+urange=204000
+vrange=215000
+
+fwd_origin=570522.986054,6194672.368029
+inv_origin=570523.004090,6194672.404130
+tol=0.040
+deg=15
+
+
+# static double C_ttu_l[]
+# tc32_ed50 -> utm32_ed50
+# m_lim_gen: 0.096 red = 0 OBS = 31136
+# m = 1.59 cm my_loss = +9 y_enp = +4.1
+# m = 1.48 cm mx_loss = +10 x_enp = +3.9
+
+
+inv_v=
+#Poly NORTH :: e-degree = 0 : n-degree = 15
+ 6.1946723158e+06,1.0000045219e+00,1.8947542262e-11,
+ -1.2796962507e-15,-1.8235836152e-20,7.4221563733e-26,
+ 4.5786636878e-30,4.2588695671e-36,-5.7430488638e-40,
+ -3.1105888638e-46,3.8149524438e-50,-2.5417934852e-56,
+ -1.2826333588e-60,2.3271487657e-66,1.7504269999e-71,
+ -4.9153686133e-77,
+#Poly NORTH :: e-degree = 1 : n-degree = 14
+ -1.7670029800e-06,-6.2392490481e-11,-4.8215867583e-16,
+ 1.8286751916e-20,6.7493958567e-26,-4.2874296213e-30,
+ 1.0708124863e-35,5.2135831267e-40,-2.8727904955e-45,
+ -3.1410823017e-50,2.2277610044e-55,7.2562323052e-61,
+ -6.7274428468e-66,1.7295669285e-72,3.4912535381e-77,
+#Poly NORTH :: e-degree = 2 : n-degree = 13
+ -1.1098471809e-11,-2.0539443822e-15,2.1830096333e-20,
+ 7.3196926418e-25,-5.8075746999e-30,-1.0941496954e-34,
+ 1.0607373494e-39,7.1658456152e-45,-9.4330340714e-50,
+ -1.1565426416e-55,3.8940349376e-60,-6.1895516792e-66,
+ -5.9282254057e-71,1.8360429282e-76,
+#Poly NORTH :: e-degree = 3 : n-degree = 12
+ 8.0720965793e-16,4.5198573579e-20,3.7929592545e-25,
+ -1.3431021513e-29,-1.4555673860e-34,2.1807485281e-39,
+ 1.7146234573e-44,-1.9875870050e-49,-7.6765984838e-55,
+ 1.0390311416e-59,3.4709769980e-66,-2.3991323221e-70,
+ 5.4351174523e-76,
+#Poly NORTH :: e-degree = 4 : n-degree = 11
+ 6.9046938207e-21,3.6996176816e-25,-8.6196393638e-30,
+ -1.6526685516e-34,1.3344325780e-39,2.3863049416e-44,
+ -1.4027244189e-49,-1.5225208005e-54,8.9560012527e-60,
+ 3.4174647504e-65,-2.3929259324e-70,2.4202902396e-76,
+#Poly NORTH :: e-degree = 5 : n-degree = 10
+ -1.6623297631e-25,-1.1975552367e-29,-6.3713687020e-35,
+ 1.8769735113e-39,2.4836091564e-44,-1.7586922217e-49,
+ -2.6786969790e-54,6.3374333539e-60,1.0888750517e-64,
+ -6.5527815192e-71,-1.5922661599e-75,
+#Poly NORTH :: e-degree = 6 : n-degree = 9
+ -9.7139054654e-31,-2.6984182528e-35,1.1117972520e-39,
+ 1.7671217231e-44,-1.1591283076e-49,-2.3588525982e-54,
+ 2.3178916822e-60,1.1153770716e-64,2.4110036722e-71,
+ -2.2456733076e-75,
+#Poly NORTH :: e-degree = 7 : n-degree = 8
+ 1.2615984866e-35,1.4009069818e-39,2.4661871486e-45,
+ -1.1312609185e-49,-1.3595386514e-54,6.1044105297e-60,
+ 9.9779726573e-65,-1.0966731192e-70,-1.9324901295e-75,
+#Poly NORTH :: e-degree = 8 : n-degree = 7
+ 5.9432834486e-41,-9.3668872050e-46,-5.1492317271e-50,
+ -7.0401597242e-55,5.6536080449e-60,6.9417215330e-65,
+ -6.4258903837e-71,-7.4365899493e-76,
+#Poly NORTH :: e-degree = 9 : n-degree = 6
+ 8.1333615707e-47,-7.7935503263e-50,1.0207593542e-55,
+ 2.4417961337e-60,2.1206760006e-65,-3.4204444616e-71,
+ -5.4286217856e-76,
+#Poly NORTH :: e-degree = 10 : n-degree = 5
+ -4.8258845422e-51,2.0287646410e-55,-2.2892909773e-61,
+ 1.2279446749e-65,-6.8839078080e-71,-8.7218142644e-76,
+#Poly NORTH :: e-degree = 11 : n-degree = 4
+ -4.6879992399e-56,1.8066312059e-60,-2.9847840518e-66,
+ 2.5331878164e-72,-1.2766428372e-76,
+#Poly NORTH :: e-degree = 12 : n-degree = 3
+ 4.3581278331e-61,-7.3551692763e-66,4.9680793104e-71,
+ -1.6952051948e-76,
+#Poly NORTH :: e-degree = 13 : n-degree = 2
+ 9.2515530209e-67,-7.4334265486e-72,-1.3583577061e-76,
+#Poly NORTH :: e-degree = 14 : n-degree = 1
+ -1.3836551496e-71,4.5810638196e-77,
+#Poly NORTH :: e-degree = 15 : n-degree = 0
+ 2.8121757271e-77
+#tcy 6194672.404130
+
+inv_u=
+#Poly EAST :: n-degree = 0 : e-degree = 15
+ 5.7052309162e+05,1.0000027127e+00,-6.3421363797e-11,
+ -1.6793126505e-15,1.4874489042e-20,2.5739849938e-25,
+ -2.7585678390e-30,-1.0705347924e-35,2.6832560997e-40,
+ -7.9243569963e-46,-1.1222038394e-50,8.2294240439e-56,
+ 7.6192833085e-62,-1.9724867402e-66,4.2839776823e-72,
+ 2.0648396250e-79,
+#Poly EAST :: n-degree = 1 : e-degree = 14
+ 8.6412993684e-07,8.0079095132e-11,-9.3667167139e-16,
+ -2.4625747282e-20,5.0612963721e-25,2.0509985564e-30,
+ -1.0614576358e-34,1.9779405766e-40,9.5887392920e-45,
+ -4.3781874001e-50,-3.6533216637e-55,2.5814337427e-60,
+ 2.8090326708e-66,-5.1615220926e-71,9.8910555453e-77,
+#Poly EAST :: n-degree = 2 : e-degree = 13
+ -7.1410457351e-11,-3.5005698351e-15,-2.1635864967e-20,
+ 1.7379400653e-24,1.4913963994e-29,-3.3216153498e-34,
+ -2.3357728692e-39,3.0105603115e-44,1.5534972750e-49,
+ -1.4012813930e-54,-4.9031851238e-60,3.3932251465e-65,
+ 6.0341662955e-71,-3.4884277274e-76,
+#Poly EAST :: n-degree = 3 : e-degree = 12
+ 4.8061280872e-16,-6.3244660335e-20,3.8232758024e-25,
+ 2.8029728482e-29,-1.8712997944e-34,-4.5337603568e-39,
+ 2.7382149238e-44,3.0960675125e-49,-1.7643646528e-54,
+ -9.3057775297e-60,5.1787829217e-65,1.0348580526e-70,
+ -5.6902331598e-76,
+#Poly EAST :: n-degree = 4 : e-degree = 11
+ 3.7423897859e-20,1.0799362952e-24,1.0004356236e-29,
+ -3.5931564944e-34,-4.8121950802e-39,4.9885046654e-44,
+ 4.9123144416e-49,-3.5361718831e-54,-1.8770072588e-59,
+ 1.1550285393e-64,2.7854007215e-70,-1.5546710228e-75,
+#Poly EAST :: n-degree = 5 : e-degree = 10
+ -7.0581160494e-26,1.4411118178e-29,-9.4790846255e-35,
+ -5.7185084383e-39,2.2652660802e-44,6.4114152253e-49,
+ -2.5251886181e-54,-2.5930633423e-59,1.0968373004e-64,
+ 3.4269309619e-70,-1.5664887105e-75,
+#Poly EAST :: n-degree = 6 : e-degree = 9
+ -8.2130289892e-30,-1.7497728587e-34,-1.6908675980e-39,
+ 3.3775642884e-44,5.2329011479e-49,-3.4252433832e-54,
+ -3.2316843056e-59,1.7818938169e-64,4.8077211024e-70,
+ -2.7479002516e-75,
+#Poly EAST :: n-degree = 7 : e-degree = 8
+ 4.5949423757e-36,-1.5085433524e-39,1.1892402157e-44,
+ 4.9232401471e-49,-1.8297885990e-54,-3.6673914781e-59,
+ 1.4525610454e-64,6.7560905013e-70,-3.1000079444e-75,
+#Poly EAST :: n-degree = 8 : e-degree = 7
+ 9.3245431589e-40,1.5575593772e-44,1.2131758580e-49,
+ -1.9407726967e-54,-2.5067936059e-59,1.4882051032e-64,
+ 8.0534164977e-70,-4.4640694294e-75,
+#Poly EAST :: n-degree = 9 : e-degree = 6
+ -6.9483379335e-46,7.5251856451e-50,-7.6194280119e-55,
+ -1.8826795262e-59,9.2524663913e-65,7.7469815989e-70,
+ -3.9378805320e-75,
+#Poly EAST :: n-degree = 10 : e-degree = 5
+ -5.6994758765e-50,-7.2845996105e-55,-3.4862673114e-60,
+ 6.4767728948e-65,4.2413780787e-70,-3.0047136112e-75,
+#Poly EAST :: n-degree = 11 : e-degree = 4
+ 8.6297065894e-56,-1.5998057505e-60,2.1735672094e-65,
+ 2.5479978494e-70,-1.7645517047e-75,
+#Poly EAST :: n-degree = 12 : e-degree = 3
+ 1.7564135758e-60,1.5993125664e-65,2.9657298956e-71,
+ -8.6758843554e-76,
+#Poly EAST :: n-degree = 13 : e-degree = 2
+ -4.1406073937e-66,9.4572946306e-72,-1.9683023284e-76,
+#Poly EAST :: n-degree = 14 : e-degree = 1
+ -2.1099345047e-71,-1.1918062814e-76,
+#Poly EAST :: n-degree = 15 : e-degree = 0
+ 6.4734988935e-77
+#tcx 570523.004090
+
+# static double C_utt_l[]
+# utm32_ed50 -> tc32_ed50 : Jylland & Sjæland
+# m_lim_gen: 0.096 red = 0 OBS = 31136
+# m = 1.59 cm my_loss = +9 y_enp = +4.0
+# m = 1.48 cm mx_loss = +10 x_enp = +3.7
+
+fwd_v=
+#Poly NORTH :: e-degree = 0 : n-degree = 15
+ 6.1946724564e+06,9.9999547815e-01,-1.8946957889e-11,
+ 1.2796971489e-15,1.8235464696e-20,-7.4223590017e-26,
+ -4.5785562647e-30,-4.2583608312e-36,5.7428909572e-40,
+ 3.1101873675e-46,-3.8148308924e-50,2.5418350794e-56,
+ 1.2825869696e-60,-2.3270836179e-66,-1.7503583037e-71,
+ 4.9151851966e-77,
+#Poly NORTH :: e-degree = 1 : n-degree = 14
+ 1.7669808195e-06,6.2392549444e-11,4.8219372843e-16,
+ -1.8286542185e-20,-6.7507083150e-26,4.2873719466e-30,
+ -1.0705696809e-35,-5.2135185948e-40,2.8725591382e-45,
+ 3.1410566718e-50,-2.2276485799e-55,-7.2562471603e-61,
+ 6.7271971762e-66,-1.7293525627e-72,-3.4911107061e-77,
+#Poly NORTH :: e-degree = 2 : n-degree = 13
+ 1.1098947230e-11,2.0539807450e-15,-2.1829650279e-20,
+ -7.3198574918e-25,5.8072702249e-30,1.0941826048e-34,
+ -1.0606770890e-39,-7.1662195908e-45,9.4325222466e-50,
+ 1.1568036551e-55,-3.8938382222e-60,6.1886031755e-66,
+ 5.9279419512e-71,-1.8359076883e-76,
+#Poly NORTH :: e-degree = 3 : n-degree = 12
+ -8.0718941440e-16,-4.5198482149e-20,-3.7932027833e-25,
+ 1.3430554251e-29,1.4556013822e-34,-2.1806302201e-39,
+ -1.7146213928e-44,1.9874817342e-49,7.6764360766e-55,
+ -1.0389896871e-59,-3.4704646060e-66,2.3990688530e-70,
+ -5.4351179206e-76,
+#Poly NORTH :: e-degree = 4 : n-degree = 11
+ -6.9049938098e-21,-3.6998145550e-25,8.6193517305e-30,
+ 1.6527097772e-34,-1.3343073590e-39,-2.3862730133e-44,
+ 1.4026121445e-49,1.5224675370e-54,-8.9555744013e-60,
+ -3.4173007596e-65,2.3928608780e-70,-2.4203824034e-76,
+#Poly NORTH :: e-degree = 5 : n-degree = 10
+ 1.6622673508e-25,1.1975576359e-29,6.3719594797e-35,
+ -1.8768710589e-39,-2.4836123272e-44,1.7585653072e-49,
+ 2.6786450729e-54,-6.3368982253e-60,-1.0888462245e-64,
+ 6.5519704749e-71,1.5922174168e-75,
+#Poly NORTH :: e-degree = 6 : n-degree = 9
+ 9.7148555276e-31,2.6988500848e-35,-1.1117554059e-39,
+ -1.7671836438e-44,1.1590019741e-49,2.3588197848e-54,
+ -2.3173128556e-60,-1.1153375116e-64,-2.4117583881e-71,
+ 2.2455985213e-75,
+#Poly NORTH :: e-degree = 7 : n-degree = 8
+ -1.2615164024e-35,-1.4009227649e-39,-2.4669459027e-45,
+ 1.1311713389e-49,1.3595387972e-54,-6.1038109231e-60,
+ -9.9777182550e-65,1.0965910824e-70,1.9324413693e-75,
+#Poly NORTH :: e-degree = 8 : n-degree = 7
+ -5.9447090366e-41,9.3625309330e-46,5.1490355624e-50,
+ 7.0406706327e-55,-5.6530673241e-60,-6.9417327826e-65,
+ 6.4248996055e-71,7.4362404024e-76,
+#Poly NORTH :: e-degree = 9 : n-degree = 6
+ -8.1371907265e-47,7.7937907063e-50,-1.0202856343e-55,
+ -2.4414752008e-60,-2.1207513918e-65,3.4193169071e-71,
+ 5.4283694133e-76,
+#Poly NORTH :: e-degree = 10 : n-degree = 5
+ 4.8269185988e-51,-2.0285756329e-55,2.2890447404e-61,
+ -1.2281319181e-65,6.8830354663e-71,8.7220869202e-76,
+#Poly NORTH :: e-degree = 11 : n-degree = 4
+ 4.6879391792e-56,-1.8067791818e-60,2.9836576941e-66,
+ -2.5365214875e-72,1.2768889499e-76,
+#Poly NORTH :: e-degree = 12 : n-degree = 3
+ -4.3584575627e-61,7.3550042852e-66,-4.9677926067e-71,
+ 1.6954117337e-76,
+#Poly NORTH :: e-degree = 13 : n-degree = 2
+ -9.2507435854e-67,7.4366840192e-72,1.3583623959e-76,
+#Poly NORTH :: e-degree = 14 : n-degree = 1
+ 1.3836858014e-71,-4.5817145593e-77,
+#Poly NORTH :: e-degree = 15 : n-degree = 0
+ -2.8122771885e-77
+#tcy 6194672.368029
+
+fwd_u=
+#Poly EAST :: n-degree = 0 : e-degree = 15
+ 5.7052289852e+05,9.9999728728e-01,6.3421243793e-11,
+ 1.6793249728e-15,-1.4874377538e-20,-2.5740220763e-25,
+ 2.7585505182e-30,1.0705890007e-35,-2.6832549184e-40,
+ 7.9239726167e-46,1.1222176114e-50,-8.2293143199e-56,
+ -7.6201867393e-62,1.9724888107e-66,-4.2838131875e-72,
+ -2.0690367982e-79,
+#Poly EAST :: n-degree = 1 : e-degree = 14
+ -8.6409297039e-07,-8.0078830594e-11,9.3665410158e-16,
+ 2.4625761365e-20,-5.0613014667e-25,-2.0510271306e-30,
+ 1.0614683756e-34,-1.9779183426e-40,-9.5889012849e-45,
+ 4.3782161858e-50,3.6534105934e-55,-2.5814701906e-60,
+ -2.8091701109e-66,5.1616226191e-71,-9.8912047523e-77,
+#Poly EAST :: n-degree = 2 : e-degree = 13
+ 7.1410357489e-11,3.5005669921e-15,2.1636116918e-20,
+ -1.7379424466e-24,-1.4914266062e-29,3.3216282958e-34,
+ 2.3358444963e-39,-3.0105870622e-44,-1.5535641017e-49,
+ 1.4013065242e-54,4.9034535421e-60,-3.3933310009e-65,
+ -6.0345516400e-71,3.4885879142e-76,
+#Poly EAST :: n-degree = 3 : e-degree = 12
+ -4.8064795146e-16,6.3244156568e-20,-3.8230827586e-25,
+ -2.8029715251e-29,1.8712614792e-34,4.5338018595e-39,
+ -2.7381806163e-44,-3.0961280852e-49,1.7643589527e-54,
+ 9.3060744916e-60,-5.1788361798e-65,-1.0349034574e-70,
+ 5.6903744129e-76,
+#Poly EAST :: n-degree = 4 : e-degree = 11
+ -3.7423832253e-20,-1.0799325037e-24,-1.0004312577e-29,
+ 3.5931427037e-34,4.8122449732e-39,-4.9884578589e-44,
+ -4.9124042777e-49,3.5361486483e-54,1.8770636291e-59,
+ -1.1550347987e-64,-2.7855159061e-70,1.5547064158e-75,
+#Poly EAST :: n-degree = 5 : e-degree = 10
+ 7.0592782031e-26,-1.4410950461e-29,9.4785365750e-35,
+ 5.7184948784e-39,-2.2651396195e-44,-6.4114385006e-49,
+ 2.5250823400e-54,2.5930985128e-59,-1.0968083685e-64,
+ -3.4270399496e-70,1.5664868003e-75,
+#Poly EAST :: n-degree = 6 : e-degree = 9
+ 8.2129987018e-30,1.7497602718e-34,1.6908456297e-39,
+ -3.3775240805e-44,-5.2329133583e-49,3.4251560882e-54,
+ 3.2317163231e-59,-1.7818488508e-64,-4.8078502324e-70,
+ 2.7478662362e-75,
+#Poly EAST :: n-degree = 7 : e-degree = 8
+ -4.5967509403e-36,1.5085183885e-39,-1.1891761645e-44,
+ -4.9232162853e-49,1.8296668569e-54,3.6673881616e-59,
+ -1.4524837203e-64,-6.7561388792e-70,3.0998702292e-75,
+#Poly EAST :: n-degree = 8 : e-degree = 7
+ -9.3244791418e-40,-1.5575429295e-44,-1.2131540603e-49,
+ 1.9407387798e-54,2.5067848543e-59,-1.4881571328e-64,
+ -8.0534342990e-70,4.4639079022e-75,
+#Poly EAST :: n-degree = 9 : e-degree = 6
+ 6.9497236511e-46,-7.5250199191e-50,7.6190651695e-55,
+ 1.8826664962e-59,-9.2519912919e-65,-7.7469531461e-70,
+ 3.9377079918e-75,
+#Poly EAST :: n-degree = 10 : e-degree = 5
+ 5.6994106197e-50,7.2844953720e-55,3.4861949564e-60,
+ -6.4766555789e-65,-4.2413503103e-70,3.0046353006e-75,
+#Poly EAST :: n-degree = 11 : e-degree = 4
+ -8.6301846842e-56,1.5997612975e-60,-2.1734733473e-65,
+ -2.5479770383e-70,1.7644890462e-75,
+#Poly EAST :: n-degree = 12 : e-degree = 3
+ -1.7563827570e-60,-1.5992831564e-65,-2.9656774185e-71,
+ 8.6757401973e-76,
+#Poly EAST :: n-degree = 13 : e-degree = 2
+ 4.1406458233e-66,-9.4570204519e-72,1.9682268934e-76,
+#Poly EAST :: n-degree = 14 : e-degree = 1
+ 2.1098804652e-71,1.1917832963e-76,
+#Poly EAST :: n-degree = 15 : e-degree = 0
+ -6.4734080637e-77
+#tcx 570522.986054
+
+
+################################################################################
+#
+# U T M 3 2 -> G S (Jutland and Zealand)
+# Forward:
+# in: UTM32_ED50, out: GS_GS
+#
+# Datum shift + reprojection (UTM to LCC), directly in plane coordinates,
+# using a polynomium
+#
+################################################################################
+<GS>
+
+proj=horner
+urange=263000
+vrange=214000
+range = 300000
+ellps=danish
+
+fwd_origin=500000.00,6206216.61
+first_shot_fwd_origin=621656.6489,6206216.61
+next_shot_fwd_origin=667364.8511,6206216.61
+
+inv_origin=85948.68,112177.02
+tol=0.040
+deg=5
+
+uneg=true
+# i.e. u = !(uneg) (u - origin) : (origin - u)
+
+# static double Cu32gs[] = utm32_ed50 -> gs
+fwd_c=
+ 112123.507889,85938.100252,
+ 1.000186984e+00,-1.994422057e-02,
+ -6.567625485e-13,-1.298008380e-13,
+ 4.091732043e-15,-8.187299687e-17,
+ 2.351689064e-22,-4.394110355e-24,
+ 5.021865838e-29,-1.008031811e-30
+
+# static double Cgsu32[] = gs -> utm32_ed50
+inv_c=
+ 6206269.880000,499988.360000,
+ 9.994156600e-01,-1.992884000e-02,
+ 0.000000000e+00,0.000000000e+00,
+ -4.079000000e-15,2.440000000e-16,
+ -2.340000000e-22,1.900000000e-23,
+ 0.0,0.0
diff --git a/dk_sdfe/DK_jutland.pol b/dk_sdfe/DK_jutland.pol
new file mode 100644
index 0000000..36439a4
--- /dev/null
+++ b/dk_sdfe/DK_jutland.pol
@@ -0,0 +1,380 @@
+################################################################################
+#
+# These are the polynomial coefficients used for transforming to and from
+# the Danish legacy system s34j "System 34 Jylland"
+#
+# S 3 4 J -> T C 3 2
+#
+# Forward:
+# in: S34J_S34, out: TC32_TC32_L
+#
+# Inverse:
+# in: TC32_TC32_L, out: S34J_S34
+#
+################################################################################
+<TC32_L>
+
+# static double C_ttj[] = {
+# tc32_ed50 -> s34j
+# my = 1.73 cm my_loss = +7 y_enp = +5.4
+# mx = 1.58 cm mx_loss = +8 x_enp = +4.6
+# m_lim_gen: 0.139 red = 0 OBS = 26062
+
+proj=horner
+ellps=intl
+tol=0.040
+urange=245000
+vrange=250000
+
+
+# tcx,tcy pairs
+fwd_origin=262188.742761,176325.080506
+inv_origin=533649.794619,6208030.167965
+
+uneg=true
+# i.e. u = !(uneg) (u - origin) : (origin - u)
+
+deg=13
+
+inv_v=
+
+# Poly NORTH :: e-degree = 0 : n-degree = 13
+ 1.7632529430e+05,1.0001388938e+00,-1.1576375523e-10,
+ -1.6692522603e-15,3.0592371879e-20,2.8373079065e-25,
+ -4.4459215470e-30,-2.3093174705e-35,3.5879082147e-40,
+ 7.4051733308e-46,-1.5150719977e-50,4.4684301183e-57,
+ 2.5887381798e-61,-5.2116351470e-67,
+
+# Poly NORTH :: e-degree = 1 : n-degree = 12
+ -1.9979019458e-02,-6.3625117370e-10,-1.4014839916e-15,
+ -1.2493103310e-20,4.0567818085e-25,-1.0791240765e-31,
+ -3.7519362032e-35,1.0272538097e-40,1.0517328860e-45,
+ -6.4177560833e-51,2.1625973620e-56,1.2535076281e-61,
+ -1.0734049539e-66,
+
+# Poly NORTH :: e-degree = 2 : n-degree = 11
+ -3.4533162605e-11,-1.4140819778e-15,7.7779650995e-21,
+ 6.4174392143e-25,-9.2008405822e-30,-8.2628074667e-35,
+ 1.4283759362e-39,4.7322488467e-45,-8.1265767189e-50,
+ -8.9810935240e-56,1.6434142276e-60,-7.7512876501e-67,
+
+# Poly NORTH :: e-degree = 3 : n-degree = 10
+ -1.4425114447e-15,-3.4391684250e-20,7.4699781877e-25,
+ 5.8620955020e-30,-1.1003493870e-34,2.8180168085e-40,
+ 3.0810557733e-45,-6.3497362070e-50,2.5688465327e-55,
+ 2.2075658407e-60,-1.1061306192e-65,
+
+# Poly NORTH :: e-degree = 4 : n-degree = 9
+ 2.7957970501e-20,7.2990995038e-25,1.3479752303e-29,
+ -2.2102059886e-34,-6.7732698734e-40,1.5791546995e-44,
+ -4.1528215073e-50,-3.2043997924e-55,1.4174402428e-60,
+ -3.3596270409e-66,
+
+# Poly NORTH :: e-degree = 5 : n-degree = 8
+ 4.1472543131e-25,9.8092251969e-30,-1.5176965859e-34,
+ -3.0273348650e-39,2.2275088132e-44,1.7593697760e-49,
+ -9.1876452065e-55,-3.0197579748e-60,8.7941931044e-66,
+
+# Poly NORTH :: e-degree = 6 : n-degree = 7
+ -1.5609718128e-29,-1.7107108223e-34,-3.7199002510e-39,
+ 3.8108750102e-44,2.8805938991e-49,-2.2419674462e-54,
+ -9.7066507721e-61,4.5950302714e-65,
+
+# Poly NORTH :: e-degree = 7 : n-degree = 6
+ -5.8394454818e-35,-6.3304805691e-40,1.9677824522e-44,
+ 2.8123695323e-49,-2.3170561818e-54,-9.4224432814e-60,
+ 3.9320863713e-65,
+
+# Poly NORTH :: e-degree = 8 : n-degree = 5
+ 3.7076110190e-39,1.8654759364e-44,3.2570797963e-49,
+ -2.7814436271e-54,-2.0484037857e-59,8.2167397823e-65,
+
+# Poly NORTH :: e-degree = 9 : n-degree = 4
+ -9.0446223926e-46,-3.7286659566e-50,-1.6010689067e-54,
+ -7.8301791540e-60,1.3432883631e-64,
+
+# Poly NORTH :: e-degree = 10 : n-degree = 3
+ -3.7286100066e-49,-7.2272660280e-55,-7.8350464649e-60,
+ 7.4323486400e-65,
+
+# Poly NORTH :: e-degree = 11 : n-degree = 2
+ 9.4760189767e-55,4.0455995368e-60,4.0167584159e-65,
+
+# Poly NORTH :: e-degree = 12 : n-degree = 1
+ 1.3453310976e-59,-5.1561395100e-66,
+
+# Poly NORTH :: e-degree = 13 : n-degree = 0
+ -5.6336046875e-65
+
+inv_u=
+
+# Poly EAST :: n-degree = 0 : e-degree = 13
+ 2.6219050871e+05,-1.0001375777e+00,2.7781407173e-10,
+ 8.3129733948e-16,4.8889849265e-20,-4.5522545693e-25,
+ -1.3579592407e-29,1.2018015768e-34,1.7108196172e-39,
+ -1.3782560539e-44,-9.0531951558e-50,6.7529622527e-55,
+ 1.5103762396e-60,-1.0509031710e-65,
+
+# Poly EAST :: n-degree = 1 : e-degree = 12
+ -1.9979871258e-02,2.0657701921e-11,-1.1853329189e-15,
+ 1.0335055026e-20,3.3240792566e-25,-6.2333532713e-30,
+ -6.3703989125e-35,1.4966750877e-39,5.0445256244e-45,
+ -1.3923070140e-49,4.1459059797e-57,4.5608466513e-60,
+ -1.0898543510e-65,
+
+# Poly EAST :: n-degree = 2 : e-degree = 11
+ -3.7866780689e-10,1.0958485983e-15,6.2472441670e-20,
+ 6.4773216915e-26,-1.6702283594e-29,3.8674527268e-35,
+ 2.5714828191e-39,-2.0493658816e-44,-1.6333632793e-49,
+ 1.9246302508e-54,2.2347476328e-60,-4.3042442986e-65,
+
+# Poly EAST :: n-degree = 3 : e-degree = 10
+ -6.6060603805e-16,-2.4463660264e-20,6.5988968807e-25,
+ 3.4650490828e-30,-1.6991901685e-34,5.9109915302e-40,
+ 1.1280861175e-44,-1.8901126007e-49,4.7398278599e-55,
+ 1.2810750661e-59,-7.2146495632e-65,
+
+# Poly EAST :: n-degree = 4 : e-degree = 9
+ 1.4226125927e-20,-3.8809073080e-25,-1.5416458638e-29,
+ 8.4501860198e-36,2.1504520781e-39,3.5054665257e-45,
+ -1.6635278855e-49,4.9524378341e-55,3.9714275163e-60,
+ -2.1130761400e-65,
+
+# Poly EAST :: n-degree = 5 : e-degree = 8
+ 1.9591521417e-25,5.5546763971e-30,-1.1227576746e-34,
+ -6.9554502111e-40,2.0627032981e-44,-1.5669644568e-50,
+ -7.4240809919e-55,1.5405688079e-60,3.5221220444e-66,
+
+# Poly EAST :: n-degree = 6 : e-degree = 7
+ -2.2618689501e-30,7.0670861040e-35,1.7405475024e-39,
+ -8.5403342362e-45,-1.4403628733e-49,7.5330406576e-56,
+ 4.6122718305e-60,-1.8416270301e-65,
+
+# Poly EAST :: n-degree = 7 : e-degree = 6
+ -2.2361965907e-35,-5.3791539152e-40,8.8754865660e-45,
+ 4.2756501241e-50,-9.7186430645e-55,1.5458498911e-60,
+ 2.9007877778e-66,
+
+# Poly EAST :: n-degree = 8 : e-degree = 5
+ 1.4952031111e-40,-5.6728457924e-45,-8.7956995652e-50,
+ 7.6328031332e-55,3.6021976499e-60,-8.8798126405e-66,
+
+# Poly EAST :: n-degree = 9 : e-degree = 4
+ 1.3064151308e-45,2.5242968975e-50,-3.5798203819e-55,
+ -1.0413550675e-60,1.7004472500e-65,
+
+# Poly EAST :: n-degree = 10 : e-degree = 3
+ -4.2422565904e-51,1.9806734435e-55,1.6295501546e-60,
+ -2.0176214683e-65,
+
+# Poly EAST :: n-degree = 11 : e-degree = 2
+ -3.9344956214e-56,-4.7818605153e-61,6.2012436462e-66,
+
+# Poly EAST :: n-degree = 12 : e-degree = 1
+ 3.9859247397e-62,-2.3306828460e-66,
+
+# Poly EAST :: n-degree = 13 : e-degree = 0
+ 5.0049039762e-67
+
+# static double C_jtt[] = {
+# s34j -> tc32_ed50
+# my = 1.73 cm my_loss = +7 y_enp = +5.4
+# mx = 1.58 cm mx_loss = +8 x_enp = +4.8
+# m_lim_gen: 0.139 red = 0 OBS = 26062
+
+fwd_v=
+
+
+# Poly NORTH :: e-degree = 0 : n-degree = 13
+ 6.2080299895e+06,9.9946227330e-01,9.5352430588e-11,
+ 1.6244812523e-15,-3.0474548755e-20,-2.7093262065e-25,
+ 4.3846463292e-30,2.1805406516e-35,-3.5250475877e-40,
+ -6.8908775603e-46,1.4876736847e-50,-4.8454626314e-57,
+ -2.5433927550e-61,5.0736238756e-67,
+
+# Poly NORTH :: e-degree = 1 : n-degree = 12
+ -1.9965529499e-02,-6.3810588270e-10,-1.4644626000e-15,
+ -9.8479255895e-21,4.1512330403e-25,-3.8156912528e-31,
+ -3.8746633129e-35,1.1398799817e-40,1.1048357722e-45,
+ -6.7546295725e-51,2.2223295599e-56,1.3324787388e-61,
+ -1.1281153706e-66,
+
+# Poly NORTH :: e-degree = 2 : n-degree = 11
+ 5.2771251612e-11,1.3584781091e-15,-8.0001362857e-21,
+ -6.1620154327e-25,9.1962314257e-30,7.8483266599e-35,
+ -1.3813051691e-39,-4.5414553955e-45,7.6340552455e-50,
+ 9.2957156685e-56,-1.4945754252e-60,5.1988431064e-67,
+
+# Poly NORTH :: e-degree = 3 : n-degree = 10
+ -1.4840670910e-15,-3.6366706653e-20,7.2413665046e-25,
+ 3.9839828940e-30,-1.0070892317e-34,5.0535317326e-40,
+ 2.7172062154e-45,-7.2429436930e-50,2.4408949213e-55,
+ 2.3921237175e-60,-1.0360045324e-65,
+
+# Poly NORTH :: e-degree = 4 : n-degree = 9
+ -2.6225954658e-20,-7.0802120737e-25,-1.2961226101e-29,
+ 2.1059201887e-34,3.9464157892e-40,-1.3622661242e-44,
+ 6.3710463931e-50,1.8044769625e-55,-2.0433224594e-60,
+ 6.3630603673e-66,
+
+# Poly NORTH :: e-degree = 5 : n-degree = 8
+ 4.3697262319e-25,1.2266303455e-29,-1.4477978619e-34,
+ -2.6203950672e-39,1.9108271742e-44,1.3591752487e-49,
+ -6.9623761938e-55,-2.6840990203e-60,2.7710554607e-66,
+
+# Poly NORTH :: e-degree = 6 : n-degree = 7
+ 1.5078642800e-29,1.6651508456e-34,3.7850050991e-39,
+ -3.6650080091e-44,-2.6822846846e-49,2.0060252803e-54,
+ 3.6073771742e-61,-4.1485026689e-65,
+
+# Poly NORTH :: e-degree = 7 : n-degree = 6
+ -6.3918342403e-35,-1.3964205587e-39,1.9221636286e-44,
+ 2.5253373077e-49,-2.0931562273e-54,-6.2693054194e-60,
+ 3.4067133444e-65,
+
+# Poly NORTH :: e-degree = 8 : n-degree = 5
+ -3.6411503633e-39,-1.9351992641e-44,-3.4218920772e-49,
+ 2.6616960442e-54,1.9807144520e-59,-6.2668758749e-65,
+
+# Poly NORTH :: e-degree = 9 : n-degree = 4
+ -2.5558139795e-46,5.3029706925e-50,-1.6253320182e-54,
+ -7.9909397575e-60,1.2611686461e-64,
+
+# Poly NORTH :: e-degree = 10 : n-degree = 3
+ 3.6942581415e-49,9.8812894442e-55,8.8058074311e-60,
+ -7.6373542908e-65,
+
+# Poly NORTH :: e-degree = 11 : n-degree = 2
+ 9.1341610884e-55,3.8572506252e-61,4.4638823986e-65,
+
+# Poly NORTH :: e-degree = 12 : n-degree = 1
+ -1.3405129136e-59,-1.1342912173e-65,
+
+# Poly NORTH :: e-degree = 13 : n-degree = 0
+ -5.5792025473e-65
+
+fwd_u=
+
+# Poly EAST :: n-degree = 0 : e-degree = 13
+ 5.3365156389e+05,-9.9946358837e-01,2.7668598883e-10,
+ -7.7750840602e-16,4.9533630434e-20,4.3863011417e-25,
+ -1.3967017193e-29,-1.1718841181e-34,1.8071908189e-39,
+ 1.3627729891e-44,-1.0029876448e-49,-6.9047545531e-55,
+ 1.8617194556e-60,1.1791611793e-65,
+
+# Poly EAST :: n-degree = 1 : e-degree = 12
+ -1.9966380388e-02,1.8321091899e-11,-1.2163899389e-15,
+ -8.1327450427e-21,3.9376965913e-25,4.9921422931e-30,
+ -8.2017439521e-35,-1.2880741803e-39,7.0534179548e-45,
+ 1.2551923073e-49,-8.6370298949e-56,-4.2563355339e-60,
+ -9.5988559590e-66,
+
+# Poly EAST :: n-degree = 2 : e-degree = 11
+ -3.8041731015e-10,-1.0722517667e-15,6.0466110374e-20,
+ -8.8961871777e-26,-1.5624928809e-29,-3.3977458632e-35,
+ 2.3233047083e-39,2.0209986661e-44,-1.4302214378e-49,
+ -1.9102244270e-54,1.8505412263e-60,4.3582921281e-65,
+
+# Poly EAST :: n-degree = 3 : e-degree = 10
+ -7.1446257067e-16,2.5922771112e-20,6.3566341838e-25,
+ -3.6232638498e-30,-1.7667875730e-34,-4.0597063277e-40,
+ 1.5143698350e-44,1.7061772335e-49,1.0622151674e-55,
+ -1.2405969368e-59,-6.1817670757e-65,
+
+# Poly EAST :: n-degree = 4 : e-degree = 9
+ 1.5315167370e-20,3.8493668536e-25,-1.5208617012e-29,
+ -9.3354761182e-36,2.0172060251e-39,-4.3180367127e-45,
+ -1.3636756786e-49,-3.2397640655e-55,1.4300694698e-60,
+ 4.5760709369e-66,
+
+# Poly EAST :: n-degree = 5 : e-degree = 8
+ 2.0884560098e-25,-5.8664999159e-30,-1.0565155141e-34,
+ 6.4428847430e-40,1.9417223374e-44,1.1182637921e-50,
+ -8.3292182800e-55,-1.4948870405e-60,5.0574246039e-66,
+
+# Poly EAST :: n-degree = 6 : e-degree = 7
+ -2.4587723402e-30,-7.0841387022e-35,1.7257988475e-39,
+ 8.8411967236e-45,-1.3763094789e-49,-2.6325558095e-56,
+ 4.5858833823e-60,1.7777411246e-65,
+
+# Poly EAST :: n-degree = 7 : e-degree = 6
+ -2.4172565368e-35,5.7819207436e-40,8.5503013539e-45,
+ -3.8507804174e-50,-8.5513359826e-55,-1.4789616768e-60,
+ 5.1040658301e-66,
+
+# Poly EAST :: n-degree = 8 : e-degree = 5
+ 1.6731324189e-40,5.7358969688e-45,-8.6906251589e-50,
+ -7.7358499331e-55,3.2932519740e-60,6.4698225296e-66,
+
+# Poly EAST :: n-degree = 9 : e-degree = 4
+ 1.4308264996e-45,-2.7591381108e-50,-3.6451820914e-55,
+ 9.4268146145e-61,1.3561630442e-65,
+
+# Poly EAST :: n-degree = 10 : e-degree = 3
+ -5.0538407538e-51,-2.0313311345e-55,1.6030771885e-60,
+ 2.0096329621e-65,
+
+# Poly EAST :: n-degree = 11 : e-degree = 2
+ -4.3117359080e-56,5.2693713182e-61,6.7948493979e-66,
+
+# Poly EAST :: n-degree = 12 : e-degree = 1
+ 5.4843441899e-62,2.4673130442e-66,
+
+# Poly EAST :: n-degree = 13 : e-degree = 0
+ 5.3595732646e-67
+
+
+################################################################################
+#
+# These are the polynomial coefficients used for transforming to and from
+# the South Jutland legacy system "Ostenfeld"
+#
+# S 3 4 J -> O S
+#
+# Forward:
+# in: S34J_S34, out: OS_OS
+#
+# Inverse:
+# in: OS_OS, out: S34J_S34
+#
+################################################################################
+<OS>
+
+proj=horner
+ellps=bessel
+urange=60000
+vrange=250000
+range = 300000
+
+# tcx,tcy pairs
+fwd_origin=280000.0,73000.0
+inv_origin=2000.0,68000.0
+tol=0.0005
+
+uneg=true
+# i.e. u = !(uneg) (u - origin) : (origin - u)
+
+deg=6
+
+fwd_c=
+# static double C34os[] = s34j -> os
+
+ 6.853626449e+04,2.955448253e+03,
+ 9.998670630e-01,-1.655899148e-02,
+ 1.602055277e-11,-2.841831044e-10,
+ -2.578438745e-15,-2.376733581e-16,
+ 6.111814588e-20,-1.802899003e-20,
+ -1.539564291e-25,1.417145176e-24,
+ 2.410664720e-29,-7.990298697e-30
+
+inv_c=
+# static double Cos34[] = os -> s34j
+
+ 7.247963213e+04,2.809641934e+05,
+ 9.998592871e-01,-1.655861449e-02,
+ -3.289800932e-11,-2.745975219e-10,
+ 2.751904974e-15,-6.304891315e-16,
+ -6.969771723e-20,-1.481705770e-20,
+ 4.032281321e-25,1.268841834e-24,
+ -2.486793478e-29,-5.147362835e-30
+
diff --git a/dk_sdfe/DK_zealand.pol b/dk_sdfe/DK_zealand.pol
new file mode 100644
index 0000000..fbe40ac
--- /dev/null
+++ b/dk_sdfe/DK_zealand.pol
@@ -0,0 +1,251 @@
+################################################################################
+#
+# These are the polynomial coefficients used for transforming to and from
+# the Danish legacy system s34s "System 34 Sjaelland"
+#
+#
+# S 3 4 S -> T C 3 2
+#
+# Forward:
+# in: UTM32_ED50, out: TC32_ED50
+#
+################################################################################
+<TC32_L>
+
+proj=horner
+ellps=intl
+urange=162378
+vrange=131287
+
+# tcx,tcy pairs
+fwd_origin=116964.303712,107905.132295
+inv_origin=680161.119096,6142519.772410
+tol=0.040
+
+deg=9
+
+inv_v=
+
+# static double C_tts[] = {
+# tc32_ed50 -> s34s
+# my = 1.26 cm my_loss = +6 y_enp = +9.8
+# mx = 1.19 cm mx_loss = +5 x_enp = +10.2
+# m_lim_gen: 0.101 red = 0 OBS = 8106
+
+# Poly NORTH :: e-degree = 0 : n-degree = 9
+ 1.0790733557e+05,9.9978922407e-01,3.5199568602e-12,
+ 5.1371006741e-17,-5.2674982432e-21,-6.8633477057e-26,
+ 5.1727956866e-31,9.2832920893e-36,-2.2258447927e-41,
+ -2.2144983452e-46,
+
+# Poly NORTH :: e-degree = 1 : n-degree = 8
+ -1.9602385333e-02,-4.3675940379e-09,7.6436547439e-18,
+ 1.8802342887e-20,-2.7487028436e-25,-7.4776404487e-30,
+ 8.0782627715e-35,6.3325807179e-40,-4.8834125991e-45,
+
+# Poly NORTH :: e-degree = 2 : n-degree = 7
+ 6.5564651697e-12,-6.8104889506e-16,3.7351975921e-20,
+ 1.2750282849e-25,-1.4236072742e-29,3.4605532471e-35,
+ 1.3987424974e-39,-7.0228278061e-45,
+
+# Poly NORTH :: e-degree = 3 : n-degree = 6
+ -8.6390226401e-16,-4.8691448800e-21,4.6681558601e-25,
+ 8.2952775380e-30,1.3331457339e-36,-1.4070764915e-39,
+ 1.7554514720e-46,
+
+# Poly NORTH :: e-degree = 4 : n-degree = 5
+ 1.1436559200e-20,-3.0223353286e-25,-7.1479244842e-30,
+ 1.1181122276e-34,2.2633804858e-39,-2.0692978938e-44,
+
+# Poly NORTH :: e-degree = 5 : n-degree = 4
+ 3.3080882854e-25,-1.5748600077e-30,-1.8859051097e-34,
+ -8.7896010280e-40,1.7785495142e-44,
+
+# Poly NORTH :: e-degree = 6 : n-degree = 3
+ -5.9321703176e-31,7.4259754996e-35,-2.4544120405e-40,
+ -9.0807428104e-45,
+
+# Poly NORTH :: e-degree = 7 : n-degree = 2
+ -3.8436267359e-35,4.9811624316e-40,9.5752951153e-45,
+
+# Poly NORTH :: e-degree = 8 : n-degree = 1
+ -3.1746636958e-41,-3.0596457190e-45,
+
+# Poly NORTH :: e-degree = 9 : n-degree = 0
+ 1.1310675824e-45
+
+inv_u=
+
+# Poly EAST :: n-degree = 0 : e-degree = 9
+ 1.1696718747e+05,-9.9978831381e-01,2.1776749302e-09,
+ -1.2496489584e-15,-3.3527323606e-21,3.7270837329e-25,
+ 7.3856018504e-32,-4.8628298904e-35,3.5992539427e-41,
+ 2.3406605032e-45,
+
+# Poly EAST :: n-degree = 1 : e-degree = 8
+ -1.9605529419e-02,-1.8950453044e-12,9.7761865754e-16,
+ 7.1109195187e-21,-6.8279010167e-25,6.1201418390e-30,
+ 2.0210581504e-34,-5.9646652818e-40,-1.7012215804e-44,
+
+# Poly EAST :: n-degree = 2 : e-degree = 7
+ -2.1724968176e-09,-2.2833188475e-15,1.5804419960e-20,
+ 1.0046109955e-24,-1.0905863818e-29,-3.3246416930e-34,
+ 1.4654115654e-39,3.4837915567e-44,
+
+# Poly EAST :: n-degree = 3 : e-degree = 6
+ 1.0061563224e-15,2.3345263492e-20,-5.0573180168e-25,
+ 2.0779422372e-30,1.9521533409e-34,-2.3928335128e-39,
+ -3.4589422763e-44,
+
+# Poly EAST :: n-degree = 4 : e-degree = 5
+ -9.4604102082e-23,7.7644335488e-25,1.9141704670e-31,
+ -1.3775242735e-34,2.0978770016e-39,3.2391064284e-44,
+
+# Poly EAST :: n-degree = 5 : e-degree = 4
+ -2.0195860626e-25,-3.1589746115e-30,3.0469114609e-35,
+ -3.5974158333e-40,-1.4395181443e-44,
+
+# Poly EAST :: n-degree = 6 : e-degree = 3
+ -6.6939312923e-31,-8.2640389316e-35,-3.3634105679e-40,
+ 2.7882436780e-45,
+
+# Poly EAST :: n-degree = 7 : e-degree = 2
+ 1.9839348020e-35,1.9214332316e-40,2.7771816013e-45,
+
+# Poly EAST :: n-degree = 8 : e-degree = 1
+ 6.6045465312e-41,2.5205909964e-45,
+
+# Poly EAST :: n-degree = 9 : e-degree = 0
+ -6.6096428142e-46
+
+# static double C_stt[] = {
+# s34s -> tc32_ed50
+# m_lim_gen: 0.101 red = 0 OBS = 8106
+# my = 1.26 cm my_loss = +6 y_enp = +9.9
+# mx = 1.19 cm mx_loss = +5 x_enp = +10.1
+
+fwd_v=
+
+# Poly NORTH :: e-degree = 0 : n-degree = 9
+ 6.1425176260e+06,9.9982642270e-01,-1.3168917417e-10,
+ -3.9708041280e-17,5.6146952745e-21,5.8802311638e-26,
+ -6.7090237676e-31,-7.2703800574e-36,3.5399175335e-41,
+ 1.1362194189e-46,
+
+# Poly NORTH :: e-degree = 1 : n-degree = 8
+ -1.9603123674e-02,-4.3603758981e-09,8.3991514570e-17,
+ 1.6432988768e-20,-3.0087468049e-25,-6.7642087335e-30,
+ 8.2029047097e-35,5.6678762622e-40,-4.6707562910e-45,
+
+# Poly NORTH :: e-degree = 2 : n-degree = 7
+ 1.2169460553e-10,6.7593802589e-16,-3.8294951950e-20,
+ -8.7128023349e-26,1.5384275104e-29,-4.3441068759e-35,
+ -1.5686253766e-39,7.8385297914e-45,
+
+# Poly NORTH :: e-degree = 3 : n-degree = 6
+ -8.5249457247e-16,-4.4243649688e-21,4.7595992589e-25,
+ 7.6204541165e-30,-1.2731004573e-36,-1.3997953545e-39,
+ 7.7759642704e-46,
+
+# Poly NORTH :: e-degree = 4 : n-degree = 5
+ -1.1411170819e-20,3.0175854442e-25,6.2771815369e-30,
+ -1.2594682090e-34,-2.1552562679e-39,2.2003142841e-44,
+
+# Poly NORTH :: e-degree = 5 : n-degree = 4
+ 3.1748967872e-25,-1.8957154350e-30,-1.8300542516e-34,
+ -6.1875394978e-40,1.6039178559e-44,
+
+# Poly NORTH :: e-degree = 6 : n-degree = 3
+ 6.2809773680e-31,-6.7941076998e-35,3.8963958677e-40,
+ 8.2691774223e-45,
+
+# Poly NORTH :: e-degree = 7 : n-degree = 2
+ -3.6073724771e-35,5.0311388471e-40,8.7585934010e-45,
+
+# Poly NORTH :: e-degree = 8 : n-degree = 1
+ 2.2831508241e-41,2.5353252434e-45,
+
+# Poly NORTH :: e-degree = 9 : n-degree = 0
+ 1.0289124711e-45
+
+fwd_u=
+
+# Poly EAST :: n-degree = 0 : e-degree = 9
+ 6.8016404556e+05,-9.9982733281e-01,2.1740820158e-09,
+ 1.2382715255e-15,-2.9662643366e-21,-3.6554059502e-25,
+ 1.7496545569e-31,4.5411700623e-35,2.4479315571e-41,
+ -2.0352589996e-45,
+
+# Poly EAST :: n-degree = 1 : e-degree = 8
+ -1.9606267471e-02,2.5792993170e-10,9.4490902015e-16,
+ -7.8536713147e-21,-6.8369046954e-25,-5.6559633520e-30,
+ 1.9646594761e-34,5.3776287501e-40,-1.6069390003e-44,
+
+# Poly EAST :: n-degree = 2 : e-degree = 7
+ -2.1687704677e-09,2.2871505147e-15,1.7552494613e-20,
+ -1.0379793993e-24,-1.1511364558e-29,3.4746687004e-34,
+ 1.4031897593e-39,-3.5537902330e-44,
+
+# Poly EAST :: n-degree = 3 : e-degree = 6
+ 1.0525312560e-15,-2.2976407795e-20,-5.0233954159e-25,
+ -3.1489303440e-30,2.1953774943e-34,2.4133571832e-39,
+ -3.7003949066e-44,
+
+# Poly EAST :: n-degree = 4 : e-degree = 5
+ -6.4478340743e-22,-7.6951221900e-25,-6.0207896532e-31,
+ 1.5126843484e-34,2.3400992651e-39,-3.5469421836e-44,
+
+# Poly EAST :: n-degree = 5 : e-degree = 4
+ -2.1846335209e-25,3.3565726508e-30,3.0201171366e-35,
+ 6.0281731944e-40,-1.7776719148e-44,
+
+# Poly EAST :: n-degree = 6 : e-degree = 3
+ -5.9548204246e-31,7.9350728807e-35,-2.4731347203e-40,
+ -4.4774264707e-45,
+
+# Poly EAST :: n-degree = 7 : e-degree = 2
+ 2.1601953120e-35,-2.2482835957e-40,2.7797554420e-45,
+
+# Poly EAST :: n-degree = 8 : e-degree = 1
+ 6.1447196093e-41,-2.1967616472e-45,
+
+# Poly EAST :: n-degree = 9 : e-degree = 0
+ -7.1115410472e-46
+
+################################################################################
+#
+# These are the polynomial coefficients used for transforming to and from
+# the Koebenhavns Kommunes mapping system
+# S 3 4 S -> K K
+#
+# Forward:
+# in: S34S_S34, out: KK_KK
+#
+################################################################################
+<KK>
+proj=horner
+ellps=danish
+range=100000
+
+# tcx,tcy pairs
+fwd_origin=72000.0,140000.0
+inv_origin=-137000.0,77000.0
+tol=0.005
+
+deg=4
+
+fwd_c=
+# static double C34kk[] = s34s -> kk
+ 7.693586910e+04,-1.379401748e+05,
+ 9.999741493e-01,-3.210304882e-05,
+ -6.390451712e-10,-1.133610356e-09,
+ 4.949851810e-15,2.548578925e-14,
+ 9.257340940e-18,-1.247871289e-18
+
+inv_c=
+# static double Ckk34[] = kk -> s34s
+ 1.400641017e+05,7.294020022e+04,
+ 1.000023833e+00,3.354660075e-05,
+ 7.578997888e-10,1.101628590e-09,
+ -1.200882360e-14,-5.998822689e-14,
+ -9.258611225e-18,1.246673174e-18
diff --git a/dk_sdfe/FO b/dk_sdfe/FO
new file mode 100644
index 0000000..095d869
--- /dev/null
+++ b/dk_sdfe/FO
@@ -0,0 +1,42 @@
+#------------------------------------------------------------------------------
+#
+# PROJ implementations of current and legacy Faroese coordinate systems
+#
+#------------------------------------------------------------------------------
+#
+# This file is Work-In-Progress, and should not be used without great testing care. It is
+# currently provided for informational and testing purposes, but will in due course become
+# the official definition and implementation of transformations to and from Faroese systems.
+#
+# Revision history:
+# -----------------
+#
+# 2017-10-03 Initial setup.
+# Kristian Evers <kreve@sdfe.dk>
+#
+# 2018-02-19 Added FVR09.
+# Kristian Evers <kreve@sdfe.dk>
+#
+# 2018-08-29 Added FK89
+# Kristian Evers <kreve@sdfe.dk>,Thomas Knudsen <thokn@sdfe.dk>
+#
+<FVR09> +proj=vgridshift +grids=fvr09.gtx
+
+<UTM29N> +proj=utm +zone=29 +ellps=GRS80 +units=m +no_defs
+<UTM29N_FVR09> +proj=pipeline +step +init=FO:FVR09 +step +init=FO:UTM29N
+
+<FOTM> +proj=etmerc +lat_0=0 +lon_0=-7 +k=0.999997 +x_0=200000 +y_0=-6000000 +ellps=GRS80 +units=m +no_defs
+<FOTM_FVR09> +proj=pipeline +step +init=FO:FVR09 +step +init=FO:FOTM
+
+<FD54> +proj=utm +zone=29 +ellps=intl +units=m +no_defs
+
+<FK89> proj=pipeline
+ step proj=utm ellps=GRS80 zone=29
+ step init=FO_fk89.pol:UTM29_FK89
+
+<gie>
+operation init=FO:FK89
+tolerance 50 mm
+accept -7 62 0 0
+expect 594919.9029294271 701535.25742737006 0.0 0.0
+</gie>
diff --git a/dk_sdfe/FO_fk89.pol b/dk_sdfe/FO_fk89.pol
new file mode 100644
index 0000000..62dde11
--- /dev/null
+++ b/dk_sdfe/FO_fk89.pol
@@ -0,0 +1,242 @@
+################################################################################
+#
+# U 2 9 -> F K 8 9
+#
+# Forward:
+# in: UTM29_ETRS89, out: FK89_FD89
+#
+# Datum shift + reprojection (UTM to LCC), directly in plane coordinates,
+# using a polynomium
+#
+################################################################################
+<UTM29_FK89>
+
+proj=horner
+ellps=intl
+range=200000
+deg=10
+tol=0.080
+
+fwd_origin=615628.465396,6884892.302740
+inv_origin=584030.416203,710635.000077
+
+# static double U29_FK89[] = {
+# Y&X-generelt pol. resultater
+# utm29_etrs89 -> fk89
+# grad: 10 pass: 4
+# my = 1.51 cm my_loss = +8 y_enp = +9.9
+# mx = 1.48 cm mx_loss = +8 x_enp = +9.9
+# OBS = 715 red = 0 m_lim_gen: 0.075
+
+fwd_v=\
+
+# Poly NORTH :: e-degree = 0 : n-degree = 10
+ 7.1063527934e+05,1.0002446975e+00,1.7560781371e-10,\
+ 8.1535974297e-15,-5.1940724317e-19,-9.0777540994e-24,\
+ 6.4757592819e-28,1.2219920950e-32,-1.9569041620e-37,\
+ -5.7047296845e-42,-3.3497506237e-47,\
+
+# Poly NORTH :: e-degree = 1 : n-degree = 9
+ -3.1697572706e-05,-2.7540312029e-09,3.7450132806e-14,\
+ -4.0931436162e-19,-7.5059633565e-23,-2.0037941581e-29,\
+ 5.2629402314e-32,4.0212499323e-37,-1.0055840726e-41,\
+ -1.0901509459e-46,\
+
+# Poly NORTH :: e-degree = 2 : n-degree = 8
+ -8.9069244655e-10,1.6759690651e-14,3.7938673309e-18,\
+ -2.8721477191e-24,-6.1328392039e-27,-7.0937969439e-32,\
+ 2.5658100193e-36,4.8343746366e-41,1.7172167215e-46,\
+
+# Poly NORTH :: e-degree = 3 : n-degree = 7
+ 1.2093995115e-14,-4.2669495351e-18,2.7490613686e-23,\
+ 1.0633053170e-26,-4.1557678337e-32,-5.6572254446e-36,\
+ -2.1889789784e-41,2.5704307349e-46,\
+
+# Poly NORTH :: e-degree = 4 : n-degree = 6
+ 7.3986334428e-18,-7.8592544167e-22,1.3925969661e-27,\
+ 9.6441957785e-31,-4.3301458566e-37,-3.5315326561e-40,\
+ -2.7231680821e-45,\
+
+# Poly NORTH :: e-degree = 5 : n-degree = 5
+ 3.5853169295e-22,-2.3899417474e-26,-2.3594385620e-31,\
+ 2.0473422329e-35,9.9407383094e-41,-3.7660948496e-45,\
+
+# Poly NORTH :: e-degree = 6 : n-degree = 4
+ -1.5256010582e-27,1.2490115018e-30,-7.2927376677e-35,\
+ 3.7076541649e-40,2.3125315048e-44,\
+
+# Poly NORTH :: e-degree = 7 : n-degree = 3
+ -6.0595941382e-31,8.7299916970e-35,-3.0539826700e-39,\
+ 2.4672920636e-44,\
+
+# Poly NORTH :: e-degree = 8 : n-degree = 2
+ -2.0594629710e-35,1.7679512049e-39,-3.1835432669e-44,\
+
+# Poly NORTH :: e-degree = 9 : n-degree = 1
+ -3.0626227592e-40,1.2140756108e-44,\
+
+# Poly NORTH :: e-degree = 10 : n-degree = 0
+ -1.7883993198e-45
+#tcy 6884892.302740,
+
+fwd_u=\
+
+# Poly EAST :: n-degree = 0 : e-degree = 10
+ 5.8403112397e+05,-1.0002499735e+00,1.0462114095e-09,\
+ 3.8346137186e-14,4.3986548477e-18,9.0532119046e-23,\
+ -1.0852456692e-26,-9.9252193443e-31,-3.6483144897e-35,\
+ -6.2888233249e-40,-4.1205998134e-45,\
+
+# Poly EAST :: n-degree = 1 : e-degree = 9
+ -3.1566686661e-05,1.8619775436e-10,7.6946790684e-14,\
+ -2.1967618318e-18,-6.4738161333e-22,-1.0527565092e-26,\
+ 2.1706843207e-30,1.2651155145e-34,2.6515296921e-39,\
+ 2.0086843573e-44,\
+
+# Poly EAST :: n-degree = 2 : e-degree = 8
+ -1.4225235867e-09,-1.1979510783e-15,3.0666429588e-19,\
+ -1.3921407511e-22,1.8823362834e-26,5.8411863903e-31,\
+ -9.7656931223e-35,-4.0203746801e-39,-3.2932159319e-44,\
+
+# Poly EAST :: n-degree = 3 : e-degree = 7
+ 1.3002111796e-14,-7.5400222811e-19,-2.3442223060e-22,\
+ 6.6119208292e-27,9.3227269299e-31,-1.7210772752e-35,\
+ -7.9921934523e-40,2.3877924864e-44,\
+
+# Poly EAST :: n-degree = 4 : e-degree = 6
+ 1.0855966850e-19,-3.1077967933e-23,-2.2260680109e-27,\
+ 1.4992828827e-31,-1.8979443242e-35,-4.3114588292e-41,\
+ 5.6162351145e-44,\
+
+# Poly EAST :: n-degree = 5 : e-degree = 5
+ -1.2831699156e-23,3.6220155506e-28,1.8210135015e-31,\
+ -2.7449314450e-36,-3.5250339861e-40,1.3174426980e-44,\
+
+# Poly EAST :: n-degree = 6 : e-degree = 4
+ -1.9352574291e-28,3.0009791050e-32,2.7867762934e-36,\
+ -9.4615259849e-41,2.6156032197e-46,\
+
+# Poly EAST :: n-degree = 7 : e-degree = 3
+ 3.5480723428e-33,1.0163897413e-37,-2.8228270991e-41,\
+ -9.0085491626e-46,\
+
+# Poly EAST :: n-degree = 8 : e-degree = 2
+ 7.6386153586e-38,-8.8135276081e-42,-4.9942257324e-46,\
+
+# Poly EAST :: n-degree = 9 : e-degree = 1
+ 9.5336253070e-44,-8.6186874629e-47,\
+
+# Poly EAST :: n-degree = 10 : e-degree = 0
+ -2.9093981205e-48
+#tcx 615628.465396
+
+
+# static double U29_FK89[] = {
+# Y&X-generelt pol. resultater
+# fk89 -> utm29_etrs89
+# grad: 10 pass: 4
+# my = 1.51 cm my_loss = +8 y_enp = +9.9
+# mx = 1.48 cm mx_loss = +8 x_enp = +10.2
+# OBS = 715 red = 0 m_lim_gen: 0.075
+
+inv_v=\
+
+# Poly NORTH :: e-degree = 0 : n-degree = 10
+ 6.8848920236e+06,9.9975536348e-01,-1.7565123284e-10,\
+ -8.1499580415e-15,5.1897975698e-19,9.0679187278e-24,\
+ -6.4669979487e-28,-1.2201603287e-32,1.9531821520e-37,\
+ 5.6932211917e-42,3.3424129498e-47,\
+
+# Poly NORTH :: e-degree = 1 : n-degree = 9
+ -3.1682520901e-05,-2.7520561017e-09,3.7426462292e-14,\
+ -4.0820779859e-19,-7.4975337739e-23,-2.1109825851e-29,\
+ 5.2539369747e-32,4.0199517383e-37,-1.0025516186e-41,\
+ -1.0873045625e-46,\
+
+# Poly NORTH :: e-degree = 2 : n-degree = 8
+ 8.9002292674e-10,-1.6698011234e-14,-3.7900266164e-18,\
+ 2.7930587309e-24,6.1229612251e-27,7.0849075920e-32,\
+ -2.5597755505e-36,-4.8219668659e-41,-1.7114845218e-46,\
+
+# Poly NORTH :: e-degree = 3 : n-degree = 7
+ 1.2117485546e-14,-4.2647429713e-18,2.7355378949e-23,\
+ 1.0620059703e-26,-4.1264367505e-32,-5.6458018213e-36,\
+ -2.1976705146e-41,2.5478883026e-46,\
+
+# Poly NORTH :: e-degree = 4 : n-degree = 6
+ -7.3903665045e-18,7.8456276445e-22,-1.3669049859e-27,\
+ -9.6254035413e-31,4.1145052610e-37,3.5220243249e-40,\
+ 2.7191179708e-45,\
+
+# Poly NORTH :: e-degree = 5 : n-degree = 5
+ 3.5784726125e-22,-2.3830757291e-26,-2.3608203487e-31,\
+ 2.0390039133e-35,9.9726785338e-41,-3.7435501658e-45,\
+
+# Poly NORTH :: e-degree = 6 : n-degree = 4
+ 1.5318148003e-27,-1.2469246238e-30,7.2711825515e-35,\
+ -3.6763739770e-40,-2.3067346627e-44,\
+
+# Poly NORTH :: e-degree = 7 : n-degree = 3
+ -6.0479653547e-31,8.7068978212e-35,-3.0436446950e-39,\
+ 2.4567717767e-44,\
+
+# Poly NORTH :: e-degree = 8 : n-degree = 2
+ 2.0540707435e-35,-1.7622447337e-39,3.1714212236e-44,\
+
+# Poly NORTH :: e-degree = 9 : n-degree = 1
+ -3.0529222290e-40,1.2095243092e-44,\
+
+# Poly NORTH :: e-degree = 10 : n-degree = 0
+ 1.7818748571e-45
+#tcy 710635.000077,
+
+inv_u=\
+
+# Poly EAST :: n-degree = 0 : e-degree = 10
+ 6.1562917300e+05,-9.9975008896e-01,1.0454602153e-09,\
+ -3.8334505700e-14,4.3939317783e-18,-9.0279545687e-23,\
+ -1.0841282557e-26,9.9051421445e-31,-3.6387986798e-35,\
+ 6.2695359772e-40,-4.1063117302e-45,\
+
+# Poly EAST :: n-degree = 1 : e-degree = 9
+ -3.1550319972e-05,-1.8591469839e-10,7.6867846597e-14,\
+ 2.1955732364e-18,-6.4646242284e-22,1.0498280118e-26,\
+ 2.1668136514e-30,-1.2621290301e-34,2.6440281600e-39,\
+ -2.0021749962e-44,\
+
+# Poly EAST :: n-degree = 2 : e-degree = 8
+ -1.4214894799e-09,1.2013339307e-15,3.0590585535e-19,\
+ 1.3903244994e-22,1.8792909210e-26,-5.8303620062e-31,\
+ -9.7437798894e-35,4.0104512619e-39,-3.2844872806e-44,\
+
+# Poly EAST :: n-degree = 3 : e-degree = 7
+ 1.2990993709e-14,7.5343880340e-19,-2.3408635630e-22,\
+ -6.6026822824e-27,9.3034218508e-31,1.7179326496e-35,\
+ -7.9678165149e-40,-2.3835709264e-44,\
+
+# Poly EAST :: n-degree = 4 : e-degree = 6
+ 1.0849564933e-19,3.1053351775e-23,-2.2211809228e-27,\
+ -1.4961343732e-31,-1.8947162818e-35,4.3344996503e-41,\
+ 5.6003853506e-44,\
+
+# Poly EAST :: n-degree = 5 : e-degree = 5
+ -1.2816130783e-23,-3.6214734660e-28,1.8178829355e-31,\
+ 2.7407242690e-36,-3.5159353694e-40,-1.3142026225e-44,\
+
+# Poly EAST :: n-degree = 6 : e-degree = 4
+ -1.9328588243e-28,-2.9979475719e-32,2.7803525486e-36,\
+ 9.4330351796e-41,2.6544691330e-46,\
+
+# Poly EAST :: n-degree = 7 : e-degree = 3
+ 3.5432021920e-33,-1.0127420419e-37,-2.8190264363e-41,\
+ 8.9747789172e-46,\
+
+# Poly EAST :: n-degree = 8 : e-degree = 2
+ 7.6289299510e-38,8.8060514967e-42,-4.9842644311e-46,\
+
+# Poly EAST :: n-degree = 9 : e-degree = 1
+ 9.5516807669e-44,8.6079232774e-47,\
+
+# Poly EAST :: n-degree = 10 : e-degree = 0
+ -2.9025701465e-48
+#tcx 584030.416203
diff --git a/dk_sdfe/NKG b/dk_sdfe/NKG
new file mode 100644
index 0000000..080779a
--- /dev/null
+++ b/dk_sdfe/NKG
@@ -0,0 +1,195 @@
+################################################################################
+#
+#
+# NKG Common Nordic Reference Frame
+#
+# Transformations to and from the common Nordic referenc frame NKG_ETRF00.
+# This init-file describes transformations between global reference frames
+# and NKG_ETRF00 as well as transformations from NKG_ERTF00 to the local
+# realisations of ETRS89 in each of the countries involved with NKG.
+#
+# All transformations in this init-file uses the common Nordic frame as a
+# pivot datum. Exempt from this dogma are transformations with labels
+# starting with "_". Those transformations are "private" to this file and are
+# only used as steps in more complicated transformations.
+#
+# Sources:
+#
+# [0] Häkli, P. et al, 2016, The NKG2008 GPS Campaign - final transformation
+# results and a new common Nordic reference frame.
+# https://www.degruyter.com/downloadpdf/j/jogs.2016.6.issue-1/jogs-2016-0001/jogs-2016-0001.pdf
+#
+# [1] Häkli, P., 2019, ETRS89 Transformations in Fennoscandia (NKG transformation),
+# EUREF2019 Tutorial.
+# http://www.euref.eu/documentation/Tutorial2019/t-03-Hakli.pdf
+###############################################################################
+
+###############################################################################
+#
+# Global Frames
+#
+# Input: Cartesian coordinates
+# Output: Cartesian coordinates
+#
+###############################################################################
+
+# NKG_ETRF00 -> ITRF2008
+<ITRF2008> proj = pipeline ellps = GRS80
+
+ # NKG_ETRF00@2000.0 -> ETRF00@t_obs
+ step proj = deformation t_epoch = 2000.0
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+
+ # ETRF00@t_obs -> ITRF2000@t_obs
+ step init = NKG:ITRF2000_ETRF2000 inv
+
+ # ITRF2000@t_obs -> ITRF2008@t_obs
+ step init = ITRF2008:ITRF2000 inv
+
+
+# NKG_ETRF00 -> ITRF2014
+<ITRF2014> proj = pipeline ellps = GRS80
+
+ # NKG_ETRF00@2000.0 -> ETRF00@t_obs
+ step proj = deformation t_epoch = 2000.0
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ # ETRF00@t_obs -> ITRF2000@t_obs
+ step init = NKG:ITRF2000_ETRF2000 inv
+
+ # ITRF2000@t_obs -> ITRF2014@t_obs
+ step init = ITRF2014:ITRF2000 inv
+
+# ITRF2000 -> ETRF2000
+# Source: Specifications for reference frame fixing in the analysis of a
+# EUREF GPS campaign - http://etrs89.ensg.ign.fr/memo-V8.pdf
+<ITRF2000_ETRF2000> proj=helmert x=0.054 +y=0.051 z=-0.048 rx=0.000891 ry=0.00539 rz=-0.008712
+ drx=8.1e-05 dry=0.00049 drz=-0.000792 t_epoch=2000.0 convention=position_vector
+
+
+###############################################################################
+#
+# National ETRS89 Realizations
+#
+# Input: Cartesian coordinates
+# Output: Geodetic coordinates
+#
+###############################################################################
+
+# NKG_ETRF00 -> ETRS89(DK) [ETRF92@1994.704]
+<DK> proj = pipeline ellps=GRS80
+
+ step init = NKG:_P1DK
+
+ step proj = deformation dt = -5.296
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ step proj=cart inv
+
+# NKG_ETRF00 -> ETRS89(EE) [ETRF96@1997.56]
+<EE> proj = pipeline ellps = GRS80
+
+ step init = NKG:_P1EE
+
+ step proj = deformation dt = -2.44
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ step proj = cart inv
+
+# The Faroese Islands are outside the defined area for the uplift model and
+# should be treated accordingly.
+# # NKG_ETRF00 -> ETRS89(FO) [ETRS2000@2008.75]
+# <FO>
+
+# NKG_ETRF00 -> ETRS89(FI) [ETRF96@1997.0]
+<FI> proj = pipeline ellps = GRS80
+
+ step init = NKG:_P1FI
+
+ step proj = deformation dt = -3
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ step proj=cart inv
+
+# NKG_ETRF00 -> ETRS89(LV) [ETRF89@1992.75]
+<LV> proj = pipeline ellps = GRS80
+
+ step init = NKG:_P1LV
+
+ step proj = deformation dt = -7.25
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ step proj = cart inv
+
+# NKG_ETRF00 -> ETRS89(LT) [ETRF2000@2003.75]
+<LT> proj = pipeline ellps = GRS80
+
+ step init = NKG:_P1LT
+
+ step proj = deformation dt = 3.75
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ step proj=cart inv
+
+# NKG_ETRF00 -> ETRS89(NO) [ETRF93@1995.0]
+<NO> proj = pipeline ellps = GRS80
+
+ step init = NKG:_P1NO
+
+ step proj = deformation dt = -5
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ step proj=cart inv
+
+# NKG_ETRF00 -> ETRS89(SE) [ETRF97@1999.5]
+<SE> proj = pipeline ellps = GRS80
+
+ step init = NKG:_P1SE
+
+ step proj = deformation -0.5
+ xy_grids = nkgrf03vel_realigned_xy.ct2
+ z_grids = nkgrf03vel_realigned_z.gtx
+
+ step proj = cart inv
+
+
+###############################################################################
+#
+# "Private" transformations
+#
+###############################################################################
+
+# The Helmert definitions below are taken from table 8 in [0]. The table lists
+# parameters for Helmert transformations between NKG_ERTF00@2000.0 and the
+# local realisation of ETRS89 at epoch 2000.0. Transformations starting with
+# "_P1" are only to be used with the realigned velocity model, whereas
+# transformations starting with "_P2" are to be used with the original velocity
+# model of 2003.
+
+<_P1DK> proj=helmert convention=position_vector x= 0.03863 y= 0.147 z= 0.02776 s=-0.009420 rx= 0.00617753 ry= 5.064e-05 rz= 4.729e-05
+<_P1EE> proj=helmert convention=position_vector x= 0.12194 y= 0.02225 z=-0.03541 s=-0.005626 rx= 0.00227196 ry=-0.00323934 rz= 0.00247008
+<_P1FO> proj=helmert convention=position_vector x=-0.10947 y= 0.235 z= 0.09432 s=-0.002626 rx= 0.00734019 ry= 0.00454595 rz=-0.00253141
+<_P1FI> proj=helmert convention=position_vector x= 0.07251 y=-0.13019 z=-0.11323 s= 0.013012 rx=-0.00157399 ry=-0.00308833 rz= 0.00410332
+<_P1LV> proj=helmert convention=position_vector x= 0.41812 y=-0.78105 z=-0.01335 s= 0.000757 rx=-0.0216436 ry=-0.0115184 rz= 0.01719911
+<_P1LT> proj=helmert convention=position_vector x= 0.05692 y= 0.11549 z=-0.00078 s=-0.006182 rx= 0.00314291 ry=-0.00147975 rz=-0.00134758
+<_P1NO> proj=helmert convention=position_vector x=-0.13116 y=-0.02817 z=0.02036 s= 0.006569 rx=-0.00038674 ry= 0.00408947 rz= 0.00103588
+<_P1SE> proj=helmert convention=position_vector x=-0.01642 y=-0.00064 z=-0.0305 s= 0.001861 rx= 0.00187431 ry= 0.00046382 rz= 0.00228487
+
+
+<_P2DK> proj=helmert convention=position_vector x= 0.02746 y= 0.14404 z= 0.02104 s=-0.006958 rx= 0.00609221 ry= 0.00021292 rz=-2.866e-05
+<_P2EE> proj=helmert convention=position_vector x= 0.1168 y= 0.02088 z=-0.03851 s= 0.004492 rx= 0.00223263 ry=-0.00316453 rz= 0.00243507
+<_P2FO> proj=helmert convention=position_vector x=-0.10947 y= 0.235 z= 0.09432 s=-0.002626 rx= 0.00734019 ry= 0.00454595 rz=-0.00253141
+<_P2FI> proj=helmert convention=position_vector x= 0.06618 y=-0.13187 z=-0.11704 s= 0.14407 rx=-0.00162235 ry=-0.00299635 rz= 0.00406027
+<_P2LV> proj=helmert convention=position_vector x= 0.40283 y=-0.78511 z=-0.02256 s= 0.004128 rx=-0.02176047 ry=-0.01129611 rz= 0.01709507
+<_P2LT> proj=helmert convention=position_vector x= 0.06483 y= 0.11759 z= 0.00398 s=-0.007925 rx= 0.00320336 ry=-0.00159472 rz=-0.00129376
+<_P2NO> proj=helmert convention=position_vector x=-0.14171 y=-0.03097 z= 0.01401 s= 0.008894 rx=-0.00046734 ry= 0.00424277 rz= 0.00096413
+<_P2SE> proj=helmert convention=position_vector x=-0.01748 y=-0.00092 z=-0.03114 s= 2.093 rx= 0.00186625 ry= 0.00047915 rz= 0.00227769