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....@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@lists.osgeo.org > http://lists.osgeo.org/mailman/listinfo/gdal-dev _______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev