[GRASS-dev] Definition of Swiss Coordinate System issue

Hi developers,

I discovered two issues with the Swiss. Obl. Mercator definition:

When defining it from scratch:

D Other Projection

Please specify projection name

somerc

Please specify datum name

list

Number Details
---
1 Used in whole ch1903 region
        (PROJ.4 Params towgs84=674.253,15.053,405.324)
        Default 3-Parameter Transformation (May not be optimum for older datums; use this only if no more appropriate options are available.)

-> here the 7-param is missing which is listed (but commented) in
lib/gis/datumtransform.table. Any objections to activate that?

We continue in the dialog as usual... (I custom defined the 7-param).
Then:

g.proj -w
PROJCS["Swiss. Obl. Mercator",
    GEOGCS["bessel",
        DATUM["unknown",
            SPHEROID["Bessel_1841",6377397.155,299.1528128],
            TOWGS84[660.077,13.551,369.344,2.484,1.783,2.939,0.56]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]],
    PROJECTION["Hotine_Oblique_Mercator"],
    PARAMETER["latitude_of_center",0],
    PARAMETER["longitude_of_center",0],
    PARAMETER["azimuth",90],
    PARAMETER["rectified_grid_angle",90],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",600000],
    PARAMETER["false_northing",200000],
    UNIT["meter",1]]

-> we observe that latitude_of_center and longitude_of_center are WRONG.

Compare http://www.epsg-registry.org/
-> [retrieve by code]
Code: 21781
  
Latitude of projection centre:
46° 57' 8.66" N
Unit of Measure:
sexagesimal DMS
Sign Reversible:
No
  
Longitude of projection centre:
7° 26' 22.5" E
Unit of Measure:
sexagesimal DMS
Sign Reversible:
No
  
Azimuth of initial line:
90°
Unit of Measure:
sexagesimal DMS
Sign Reversible:
No
  
Angle from Rectified to Skew Grid:
90°
Unit of Measure:
sexagesimal DMS
Sign Reversible:
No
  
Scale factor on initial line:
1
Unit of Measure:
unity
Sign Reversible:
No
  
Easting at projection centre:
600000
Unit of Measure:
metre
Sign Reversible:
No
  
Northing at projection centre:
200000
Unit of Measure:
metre
Sign Reversible:
No

BUT if I look into:

cd general/g.setproj/
grep -i somer *
main.c: else if (G_strcasecmp(proj_out, "SOMERC") == 0) {
proj-parms.table:SOMERC:Swiss. Obl. Mercator:KFACT=noask,1.0;LAT0=noask,46.952405556;LON0=noask,7.4395833333;X0=noask,600000.0;Y0=noask,200000.0

It seems to be there. How come that this isn't used? I am not familiar enough
with the mechanism to fix that...

Markus