-
Notifications
You must be signed in to change notification settings - Fork 789
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Creating a user-defined Compound CRS #4295
Comments
@jratike80 Still no news from NLS Finland regarding adding your N2000 geoid grid in PROJ ? |
Registration into EPSG database is forwarding slowly. Maybe during this year, maybe next. New geoid model https://www.maanmittauslaitos.fi/en/maps-and-spatial-data/coordinates-and-positioning/koordinaattimuunnokset/fin2023n2000-geoidimalli will be registered by the same. I have also a self-made GeoTIFF about the model but experts have not verified it. A command that I got from an expert for converting N2000 heights (epoch 2024.33) into EGM2008 is a bit complicated. An example that is using cct on Windows (here still the older geoid model FIN2005N00.tif). The difference between the 2005 and 2023 models is less than 14 mm if I remember right. I believe that tranformation into EPSG:4979 would look quite similar but I must admit that I do not really understand these things.
|
Hi, This PROJ string does the conversion in a right way: +proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=29500000 +y_0=0 +towgs84=0.000,0.000,0.000,0.00000000,0.00000000,0.00000000,0.00000000 +a=6378137.00000000 +b=6356752.31414036 +pm=greenwich +geoidgrids=n2000.gtx +units=m +no_defs +type=crs But, there are many EPSG codes available for Finland which can work with the same geoid so, instead of creating a PROJ string per EPSG code plus geoid, I would need to know if PROJ library accept a combination of string for proj_create() function, such as: EPSG:3883 + MyVerticalCRS Of course, if PROJ support this: EPSG:3136+EPSG:3900 - ETRS89 / ETRS-GK29FIN + N2000 height I don't need to create user-defined CRS. Thanks, |
You can do this:
And if you want to check if the transformation you are interested in is possible, try this:
|
Thank you @kbevers Note this This is the reason why I need to create my own CRS. Instead of "EPSG:3136+EPSG:3900", I want to enter "EPSG:3136+MyVerticalCRS" How I can define my own vertical CRS definition to concat with EPSG:3136 and call proj_create()? |
Without understanding deodecy deeply, I think that you do not need your own CRS but your own conversion from N2000, using either FIN2005N00 or FIN2023N00 grids. The time dependent post-glaciar bouncing and shift between WGS84 and ETRS89 probably don't make much difference. Using N2000 geoid (I suppose n2000.gtx means that) grid may be wrong because it takes the heights in the older N60 system EPSG:3901. But I do not know if it is possible to add such new conversion without coding on the Proj side. Once the registration of all those Finnish components into EPSG registry is done then conversions should be much easier for users. I will mention this ticket for those who are working on it. |
@jratike80 thank you, I think that the following CRS could be used if FIN2005N00 and FIN2023N00 grids were available in PROJ. Then, coordinate operations would exist including them. EPSG:3136+EPSG:3900 - ETRS89 / ETRS-GK29FIN + N2000 height I'm software engineer, I'm not an expert in geodesy but I've been working in this topic since 20 years ago. I can say that this PROJ string works, because the results are the same as an official finnish geodetic calculator. +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0 +towgs84=0.000,0.000,0.000,0.00000000,0.00000000,0.00000000,0.00000000 +a=6378137.00000000 +b=6356752.31414036 +pm=greenwich +geoidgrids=n2000.gtx +units=m +no_defs +type=crs So, I was trying to find a way, in PROJ, to mix EPSG code (or another authority) with my own vertical CRS definition. This is the question. Thank you again, |
I guess that by the official Finnish geodetic calculator you mean the Coordinate Transformation tool here https://kartta.paikkatietoikkuna.fi/?lang=en. But it has newer supported WGS84 or EPSG:4979. Have you used EPSG:4937 as an output in your comparison? I suppose that the difference is not big but it would be nice to know. |
@jratike80 , exactly, that's the calculator I'm using to compare the calculations. The output is EPSG:3047 with N2000 as vertical CRS and the input EPSG:4937. I've been writing about EPSG:4979 because is the input I need. I think that, the results should be equivalent to EPSG:4937. |
There is this option in PROJ (thanks Even for the info ;)
See the GEOIDMODEL tag in the vertical system below.
You can produce FIN2005N00.tif with gdal from the file provided in
https://www.maanmittauslaitos.fi/kartat-ja-paikkatieto/asiantuntevalle-kayttajalle/koordinaattimuunnokset/fin2005n00-geoidimalli
(replace the " 0.000" with " nan" and add a header line " lat lon z")
COMPOUNDCRS["ETRS89 / ETRS-GK29FIN + N2000 height",
PROJCRS["ETRS89 / ETRS-GK29FIN",
BASEGEOGCRS["ETRS89",
ENSEMBLE["European Terrestrial Reference System 1989 ensemble",
MEMBER["European Terrestrial Reference Frame 1989"],
MEMBER["European Terrestrial Reference Frame 1990"],
MEMBER["European Terrestrial Reference Frame 1991"],
MEMBER["European Terrestrial Reference Frame 1992"],
MEMBER["European Terrestrial Reference Frame 1993"],
MEMBER["European Terrestrial Reference Frame 1994"],
MEMBER["European Terrestrial Reference Frame 1996"],
MEMBER["European Terrestrial Reference Frame 1997"],
MEMBER["European Terrestrial Reference Frame 2000"],
MEMBER["European Terrestrial Reference Frame 2005"],
MEMBER["European Terrestrial Reference Frame 2014"],
ELLIPSOID["GRS 1980",6378137,298.257222101,
LENGTHUNIT["metre",1]],
ENSEMBLEACCURACY[0.1]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4258]],
CONVERSION["Finland ETRS-GK29",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",29,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",1,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",500000,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",0,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS["northing (N)",north,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["easting (E)",east,
ORDER[2],
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["Cadastre, engineering survey, topographic mapping (large
scale)."],
AREA["Finland - between 28d30'E and 29d30'E."],
BBOX[60.94,28.5,69.81,29.5]],
ID["EPSG",3136]],
VERTCRS["N2000 height",
VDATUM["N2000"],
CS[vertical,1],
AXIS["gravity-related height (H)",up,
LENGTHUNIT["metre",1]],
GEOIDMODEL["PROJ FIN2005N00.tif"],
USAGE[
SCOPE["Geodesy, engineering survey."],
AREA["Finland - onshore."],
BBOX[59.75,19.24,70.09,31.59]],
ID["EPSG",3900]]]
I get this pipeline
./projinfo -s ETRS89 -t "$(cat fin.wkt)" --3d -o proj
Candidate operations found: 2
-------------------------------------
Operation No. 1:
unknown id, Inverse of Transformation from N2000 height to ETRS89 + Finland
ETRS-GK29, unknown accuracy, World, at least one grid missing
PROJ string:
+proj=pipeline
+step +proj=axisswap +order=2,1
+step +proj=unitconvert +xy_in=deg +xy_out=rad
+step +inv +proj=vgridshift +grids=FIN2005N00.tif +multiplier=1
+step +proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80
+step +proj=axisswap +order=2,1
or this transformation
echo 63 24 0 | PROJ_DATA=../more-data:../data/ ./cs2cs ETRS89 "$(cat
fin.wkt)"
6998236.22 246825.07 -17.9
…On Wed, 30 Oct 2024 at 12:44, dvargas74 ***@***.***> wrote:
@jratike80 <https://github.com/jratike80> , exactly, that's the
calculator I'm using to compare the calculations. The output is EPSG:3047
with N2000 as vertical CRS and the input EPSG:4937.
I've been writing about EPSG:4979 because is the input I need. I think
that, the results should be equivalent to EPSG:4937.
—
Reply to this email directly, view it on GitHub
<#4295 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADXTXHRVELNZB2EVEXUPZ7LZ6DBCPAVCNFSM6AAAAABQZKCRSOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINBWG44TINJRHA>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
@jjimenezshaw thank you for this info, I think that this is the same solution that my initial PROJ string: +proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0 +towgs84=0.000,0.000,0.000,0.00000000,0.00000000,0.00000000,0.00000000 +a=6378137.00000000 +b=6356752.31414036 +pm=greenwich +geoidgrids=n2000.gtx +units=m +no_defs +type=crs This solution also works, Imagine you want to select one of the following EPSG CRSs: EPSG:3879 - ETRS89 / GK25FIN All of them with N2000 height. I would like to have my WKT definition ONLY for N2000 and use the EPSG code: proj_create("EPSG:3879+MyVerticalWktCrs") is there any way to do it? |
Hi,
I would like to know what's the best way to create compound CRS with a EPSG geodetic CRS and user vertical CRS.
The question is done because there's not any coordinate operations to do this conversion / transformation for Finland:
EPSG:4979 - WGS 84 (Geographic 3D) to EPSG:3136+EPSG:3900 - ETRS89 / ETRS-GK29FIN + N2000 height (Projected + Vertical)
Then, I created this CRS with PROJ definition, which it works:
+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0 +towgs84=0.000,0.000,0.000,0.00000000,0.00000000,0.00000000,0.00000000 +a=6378137.00000000 +b=6356752.31414036 +pm=greenwich +geoidgrids=n2000.gtx +units=m +no_defs +type=crs
Then, the following conversion/transformation is done:
EPSG:4979 - WGS 84 (Geographic 3D) to MyUserCRS
The question is:
Is it possible to create only the vertical CRS and use a EPSG code for the geodetic CRS? EPSG:3136 + MyVerticalCRS
What would be the correct definition for this compound CRS?
Thanks,
The text was updated successfully, but these errors were encountered: