1

I've recently set up a new work computer with QGIS build 3.10.4 and every time I go to save a shapefile and define the projection as epsg:2958 (NAD83(CSRS) / UTM zone 17N - Projected) it will instead save the file as epsg:2150 (NAD83(CSRS) / UTM zone 17N - Projected).

Does anyone have experience with this issue? How do I stop this from occurring?

Edit: I'm also noticing that this issue is only occuring when saving to a shapefile. It is not occurring when saving to a GeoPackage.

1 Answer 1

2

The ESRI style WKT presentation that is used in the .prj file does not have difference in any meaningful parameters for these two coordinate systems (only difference in UNIT["degree minute second hemisphere"]:

projinfo epsg:2150 -o WKT1:ESRI
Warning: object is deprecated
Alternative non-deprecated CRS:
  EPSG:2958

WKT1:ESRI string:
PROJCS["NAD_1983_CSRS_UTM_Zone_17N",GEOGCS["GCS_North_American_1983_CSRS",DATUM["D_North_American_1983_CSRS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["degree minute second hemisphere",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]


projinfo epsg:2958 -o WKT1:ESRI
WKT1:ESRI string:
PROJCS["NAD_1983_CSRS_UTM_Zone_17N",GEOGCS["GCS_North_American_1983_CSRS",DATUM["D_North_American_1983_CSRS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]

QGIS seems to select the first EPSG code that matches the parameters of the .prj file. As you can see the EPSG code is not included in the .prj file but when data are saved into GeoPackage the EPSG code is also inserted into the internal metadata tables of GeoPackage and there is no place for misinterpretation.

The WKT2 presentations show what is the difference:

EPSG:2150 WKT2:2019 string:
PROJCRS["NAD83(CSRS98) / UTM zone 17N",
    BASEGEOGCRS["NAD83(CSRS98)",
        DATUM["NAD83 Canadian Spatial Reference System",
            ELLIPSOID["GRS 1980",6378137,298.257222101,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4140]],

EPSG:2958 WKT2:2019 string:
PROJCRS["NAD83(CSRS) / UTM zone 17N",
    BASEGEOGCRS["NAD83(CSRS)",
        DATUM["NAD83 Canadian Spatial Reference System",
            ELLIPSOID["GRS 1980",6378137,298.257222101,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4617]],

The datum has changed and now there are two datums with the same names but different EPSG datum codes 4140 and 4617. Because .prj does not use codes the only way for separating the systems would be to give a new and generally accepted and known name for either the old or the new datum.

1
  • Using this info, it looks like I am safe to use the "Set source coordinate reference system" in the Source tab within my layer's Properties. Once I change the layer's crs from there to 2958, my question is solved.
    – jbundrea
    Mar 30, 2020 at 18:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.