[gdal-dev] Re: help for comparing two WKT

Etienne Tourigny etourigny.dev at gmail.com
Sat Oct 8 19:05:21 EDT 2011


Thanks Even

I see what you mean, several named GEOGCS/datums can match a given spheroid.

I am trying to see if I can assign a named datum given spheroid
parameters from the CF Convention for the netcdf driver.

For example, this CF definition corresponds to the WGS84 datum/GEOGCS
  int crs ;
    crs:grid_mapping_name = "latitude_longitude";
    crs:longitude_of_prime_meridian = 0.0 ;
    crs:semi_major_axis = 6378137.0 ;
    crs:inverse_flattening = 298.257223563 ;

-> Are there any numerical differences between GEOGCS/datums that use
the same spheroid?
In other words, is it erroneous (numerically) to use another named
GEOGCS/datum than the one that was intended? (e.g. using WGS_1984
instead of Hartebeesthoek94).

-> Furthermore, is there a precedence than one must or can use in
order to choose which one that matches?
I assume that the numerical order of the EPSG codes have nothing to do
with precedence.

regards,
Etienne

On Sat, Oct 8, 2011 at 7:56 AM, Even Rouault
<even.rouault at mines-paris.org> wrote:
> Le samedi 08 octobre 2011 07:05:31, Etienne Tourigny a écrit :
>> A related question:
>>
>> given an unnamed datum with defined spheroid, PRIMEM and UNIT values,
>> is there a way to find a corresponding named datum or EPSG code?
>>
>
> You can find a match, but there are often several possible solutions. See on
> your examples below.
>
>> I'd be interested in an existing method, or perhaps externalng code or
>> table in which I could search for common candidate DATUM definitions,
>> and compare using OGRSpatialReference::IsSameGeogCS() .
>
> One method would be to open data/gcs.csv, iterate over the GEOGCS EPSG code in
> the first column, make them expanded to full SRS by
> OGRSpatialReference::importFromEPSG(), strip the nodes you are not interested
> in for the comparisons (AUTHORITY codes), alter the DATUM/SPHEROID names to
> "unknown", and finally compare.
>
>>
>> e.g
>>
>>     DATUM["unknown",
>>         SPHEROID["Spheroid",6378137,298.257223563]],
>>     PRIMEM["Greenwich",0],
>>     UNIT["degree",0.0174532925199433]]
>>
>> corresponds to
>>
>> EPSG: 4326
>> or
>>     DATUM["WGS_1984",
>>         SPHEROID["WGS 84",6378137,298.257223563,
>>             AUTHORITY["EPSG","7030"]],
>>         AUTHORITY["EPSG","6326"]],
>>     PRIMEM["Greenwich",0],
>>     UNIT["degree",0.0174532925199433],
>>     AUTHORITY["EPSG","4326"]]
>
> Or :
>
> GEOGCS["Hartebeesthoek94",
>    DATUM["Hartebeesthoek94",
>        SPHEROID["WGS 84",6378137,298.257223563,
>            AUTHORITY["EPSG","7030"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","6148"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","4148"]]
>
> GEOGCS["Yemen NGN96",
>    DATUM["Yemen_National_Geodetic_Network_1996",
>        SPHEROID["WGS 84",6378137,298.257223563,
>            AUTHORITY["EPSG","7030"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","6163"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","4163"]]
>
> GEOGCS["Korean 1995",
>    DATUM["Korean_Datum_1995",
>        SPHEROID["WGS 84",6378137,298.257223563,
>            AUTHORITY["EPSG","7030"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","6166"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","4166"]]
>
> And other GEOGCS that are defined by "+proj=longlat +ellps=WGS84
> +towgs84=0,0,0,0,0,0,0 +no_defs" in the share/proj/epsg file.
>
>>
>> also:
>>
>>         DATUM["unknown",
>>             SPHEROID["Spheroid",6378137,298.2572221010002]],
>>         PRIMEM["Greenwich",0],
>>         UNIT["degree",0.0174532925199433]],
>>
>> corresponds to
>> EPSG:4283
>> or
>>         DATUM["Geocentric_Datum_of_Australia_1994",
>>             SPHEROID["GRS 1980",6378137,298.2572221010002,
>>                 AUTHORITY["EPSG","7019"]],
>>             TOWGS84[0,0,0,0,0,0,0],
>>             AUTHORITY["EPSG","6283"]],
>>         PRIMEM["Greenwich",0],
>>         UNIT["degree",0.0174532925199433],
>>         AUTHORITY["EPSG","4283"]],
>>
>
> Or :
>
> GEOGCS["TWD97",
>    DATUM["Taiwan_Datum_1997",
>        SPHEROID["GRS 1980",6378137,298.257222101,
>            AUTHORITY["EPSG","7019"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","1026"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","3824"]]
>
> GEOGCS["IGRS",
>    DATUM["Iraqi_Geospatial_Reference_System",
>        SPHEROID["GRS 1980",6378137,298.257222101,
>            AUTHORITY["EPSG","7019"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","1029"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","3889"]]
>
> GEOGCS["MOLDREF99",
>    DATUM["MOLDREF99",
>        SPHEROID["GRS 1980",6378137,298.257222101,
>            AUTHORITY["EPSG","7019"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","1032"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","4023"]]
>
> GEOGCS["RGRDC 2005",
>    DATUM["Reseau_Geodesique_de_la_RDC_2005",
>        SPHEROID["GRS 1980",6378137,298.257222101,
>            AUTHORITY["EPSG","7019"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","1033"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","4046"]]
>
> GEOGCS["SREF98",
>    DATUM["Serbian_Reference_Network_1998",
>        SPHEROID["GRS 1980",6378137,298.257222101,
>            AUTHORITY["EPSG","7019"]],
>        TOWGS84[0,0,0,0,0,0,0],
>        AUTHORITY["EPSG","1034"]],
>    PRIMEM["Greenwich",0,
>        AUTHORITY["EPSG","8901"]],
>    UNIT["degree",0.0174532925199433,
>        AUTHORITY["EPSG","9122"]],
>    AUTHORITY["EPSG","4075"]]
>
>
>>
>> many thanks
>> Etienne
>>
>> On Fri, Oct 7, 2011 at 8:36 PM, Etienne Tourigny
>>
>> <etourigny.dev at gmail.com> wrote:
>> > Hi all,
>> >
>> > I would appreciate any hints as to how I can compare 2
>> > WKT/OGRSpatialReference objects.
>> >
>> > My goal is to make sure that a more detailed WKT (with authority codes
>> > and explicit datum) corresponds (numerically) to a simpler one, such
>> > as in the following examples.
>> >
>> > I understand that the oSRSGDAL.exportToPrettyWkt() function can remove
>> > AXIS, AUTHORITY and EXTENSION nodes, but how can I guarantee that the
>> > PARAMETER nodes are in the same order? Does FixupOrdering() solve that
>> > problem?
>> >
>> > Furthermore, How could I compare the datums?
>> >
>> >
>> >
>> >
>> > CF=[PROJCS["unnamed",
>> >    GEOGCS["unknown",
>> >        DATUM["unknown",
>> >            SPHEROID["Spheroid",6378137,298.2572221010002]],
>> >        PRIMEM["Greenwich",0],
>> >        UNIT["degree",0.0174532925199433]],
>> >    PROJECTION["Lambert_Conformal_Conic_2SP"],
>> >    PARAMETER["standard_parallel_1",-18],
>> >    PARAMETER["standard_parallel_2",-36],
>> >    PARAMETER["latitude_of_origin",0],
>> >    PARAMETER["central_meridian",134],
>> >    PARAMETER["false_easting",0],
>> >    PARAMETER["false_northing",0]]]
>> >
>> > GDAL=[PROJCS["GDA94 / Geoscience Australia Lambert",
>> >    GEOGCS["GDA94",
>> >        DATUM["Geocentric_Datum_of_Australia_1994",
>> >            SPHEROID["GRS 1980",6378137,298.2572221010002,
>> >                AUTHORITY["EPSG","7019"]],
>> >            TOWGS84[0,0,0,0,0,0,0],
>> >            AUTHORITY["EPSG","6283"]],
>> >        PRIMEM["Greenwich",0],
>> >        UNIT["degree",0.0174532925199433],
>> >        AUTHORITY["EPSG","4283"]],
>> >    PROJECTION["Lambert_Conformal_Conic_2SP"],
>> >    PARAMETER["standard_parallel_1",-18],
>> >    PARAMETER["standard_parallel_2",-36],
>> >    PARAMETER["latitude_of_origin",0],
>> >    PARAMETER["central_meridian",134],
>> >    PARAMETER["false_easting",0],
>> >    PARAMETER["false_northing",0],
>> >    UNIT["metre",1,
>> >        AUTHORITY["EPSG","9001"]],
>> >    AUTHORITY["EPSG","3112"]]]
>> >
>> >
>> >
>> > Another option is exporting to PROJ.4 strings, but there are the
>> > +towgs84 that shows up , plus some differences in +datum vs. +ellps.
>> >
>> > e.g.
>> >
>> > CF=[+proj=utm +zone=55 +ellps=WGS84 +units=m +no_defs ]
>> > GDAL=[+proj=utm +zone=55 +datum=WGS84 +units=m +no_defs ]
>> >  or
>> > CF=[+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0
>> > +ellps=GRS80 +units=m +no_defs ]
>> > GDAL=[+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0
>> > +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ]
>> >
>> >
>> >
>> > many thanks,
>> > Etienne
>>
>> _______________________________________________
>> gdal-dev mailing list
>> gdal-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>


More information about the gdal-dev mailing list