[gdal-dev] Testing if two spatial references are the same
Simon Perkins
sy at perkins.net
Wed Dec 26 15:35:32 EST 2007
Hmm, looking at the projection string in more detail and comparing with
the OGR source code, I see that it doesn't include a "PROJECTION" node,
which OGR.IsSame() checks for.
PROJCS["unnamed",
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.2572221010002,
AUTHORITY["EPSG","7019"]],
AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4269"]],
UNIT["US survey foot",0.3048006096012192,
AUTHORITY["EPSG","9003"]],
AUTHORITY["EPSG","26942"]]
So, is the TIFF file this came from missing some information? It was
just a file I found on the web... It does have an EPSG code, so should
IsSame() be checking for that?
Cheers,
Sy
Simon Perkins wrote:
> I have a file, which is giving me some strange results with the
> OGRSpatialReference.IsSame() method. Here's a short test program:
>
> #include "gdal_priv.h"
> #include "ogr_spatialref.h"
> #include "ogr_core.h"
> #include <iostream>
>
> using namespace std;
>
> int main(int argc, char** argv)
> {
> GDALAllRegister();
> const char* filename = argv[1];
> GDALDataset* dataset = (GDALDataset*) GDALOpen(filename, GA_ReadOnly);
> cout << "Opened file: " << filename << "\n";
> const char* projWkt = dataset->GetProjectionRef();
> cout << "Raw Projection WKT: " << projWkt << "\n";
> OGRSpatialReference* spatialRef = new OGRSpatialReference(projWkt);
> char* prettyWkt = new char[4096];
> spatialRef->exportToPrettyWkt(&prettyWkt, 0);
> cout << "Pretty Projection WKT:\n" << prettyWkt << "\n";
> cout << "Result from s.IsSame(s): " <<
> spatialRef->IsSame(spatialRef) << "\n";
> return 0;
> }
>
>
> Basically, the code opens a raster file, grabs the projection Well
> Known Text string, constructs an OGRSpatialReference using that
> string, and then compares that spatial reference to itself using the
> IsSame() method. One would expect that a spatial reference is the same
> as itself, so this method should return 1.
>
> Here's the output from a particular file:
>
> Opened file: C:/Images/Demo/K10.tif
> Raw Projection WKT:
> PROJCS["unnamed",GEOGCS["NAD83",DATUM["North_American_Datum_
> 1983",SPHEROID["GRS
> 1980",6378137,298.2572221010002,AUTHORITY["EPSG","7019"]],AU
> THORITY["EPSG","6269"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],
>
> AUTHORITY["EPSG","4269"]],UNIT["US survey
> foot",0.3048006096012192,AUTHORITY["EP
> SG","9003"]],AUTHORITY["EPSG","26942"]]
> Pretty Projection WKT:
> PROJCS["unnamed",
> GEOGCS["NAD83",
> DATUM["North_American_Datum_1983",
> SPHEROID["GRS 1980",6378137,298.2572221010002,
> AUTHORITY["EPSG","7019"]],
> AUTHORITY["EPSG","6269"]],
> PRIMEM["Greenwich",0],
> UNIT["degree",0.0174532925199433],
> AUTHORITY["EPSG","4269"]],
> UNIT["US survey foot",0.3048006096012192,
> AUTHORITY["EPSG","9003"]],
> AUTHORITY["EPSG","26942"]]
> Result from s.IsSame(s): 0
>
> Any ideas what's going on here? Is it something specific to this
> particular projection string? Is there a better way of checking
> equivalence of projected coordinate systems, e.g. using the EPSG code?
> What would I have to check to ensure equivalency?
>
> Regards,
>
> Simon
>
>
> _______________________________________________
> 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