[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