OK WIndows updates still running so more digging: Using this code:
CoordinateOperationFactory operationFactory = ReferencingFactoryFinder.getCoordinateOperationFactory(null); Set<CoordinateOperation> ops = operationFactory.findOperations(sourceCRS, targetCRS); for (CoordinateOperation o : ops) { System.out.println(o); } I get the following - the last one is your file (I added an epsg_operations.properties file to src/main/resources/org/geotools/referencing/factory/gridshift) - what I'm not clear on is how to force a pick of that one. ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (5)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["Position Vector transformation (geog2D domain)", AUTHORITY["EPSG","9606"]], AUTHORITY["EPSG","1780"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (4)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["Position Vector transformation (geog2D domain)", AUTHORITY["EPSG","9606"]], AUTHORITY["EPSG","1779"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (2)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["Position Vector transformation (geog2D domain)", AUTHORITY["EPSG","9606"]], AUTHORITY["EPSG","1776"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (3)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["Position Vector transformation (geog2D domain)", AUTHORITY["EPSG","9606"]], AUTHORITY["EPSG","1778"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (7)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["Position Vector transformation (geog2D domain)", AUTHORITY["EPSG","9606"]], AUTHORITY["EPSG","1782"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (1)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["Coordinate Frame rotation (geog2D domain)", AUTHORITY["EPSG","9607"]], AUTHORITY["EPSG","1309"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (6)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["Position Vector transformation (geog2D domain)", AUTHORITY["EPSG","9606"]], AUTHORITY["EPSG","1781"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] ConcatenatedOperation["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ ProjectedCRS[ETRS89 / UTM zone 32N (zE-N)]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], CylindricalProjection["ProjectedCRS[DHDN / 3-degree Gauss-Kruger zone 3] ⇨ GeographicCRS[DHDN]", SOURCE["DHDN / 3-degree Gauss-Kruger zone 3", AUTHORITY["EPSG","31467"]], TARGET["DHDN", AUTHORITY["EPSG","4314"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]]], Transformation["DHDN to ETRS89 (8)", SOURCE["DHDN", AUTHORITY["EPSG","4314"]], TARGET["ETRS89", AUTHORITY["EPSG","4258"]], METHOD["NTv2", AUTHORITY["EPSG","9615"]], AUTHORITY["EPSG","15948"]], CylindricalProjection["UTM zone 32N with prefix", SOURCE["ETRS89", AUTHORITY["EPSG","4258"]], TARGET["ETRS89 / UTM zone 32N (zE-N)", AUTHORITY["EPSG","4647"]], METHOD["Transverse_Mercator", AUTHORITY["EPSG","9807"]], AUTHORITY["EPSG","4648"]]] On Wed, 8 Apr 2020 at 14:01, Ian Turton <ijtur...@gmail.com> wrote: > > > On Wed, 8 Apr 2020 at 13:57, Benjamin Sokolowski < > benjamin.sokolow...@data-experts.de> wrote: > >> >> Are you sure this transform is in the EPSG tables? >> Probably not. The grid was calculated specifically for the state of >> Schleswig Holstein in Germany. In my head it is like this: I register a >> user-defined transformation in geotools of 31467 to 4647. This is always >> done taking into account the grid I provide (the specific gsb file). Am I >> wrong? >> > > Where are you registering that? > > Ian > > -- Ian Turton
_______________________________________________ GeoTools-GT2-Users mailing list GeoTools-GT2-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users