Hi All, I'm experiencing some inconsistent behavior with GDAL 1.8.0's projection handling routines that I'd like to bring to someone's attention.
I'm playing with some maps in Lambert Conformal Conic, and the same projection information is getting handled differently depending on how I provide it to GDAL. I started with a MapInfo coordinate system string: Coordsys Earth Projection 3, 74, "m", -95, 49, 49, 77, 0, 0 When that's used, it will come back in Proj4 format as: +proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,-0,-0,-0,0 +units=m +no_defs However, if I start with the above Proj4 format string and ask for it back, I get +proj=lcc +lat_1=49 +lat_0=49 +lon_0=-95 +k_0=1 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs You can see that the lat_2 parameter is no longer to be found... After poking around in the source code, I've found a difference between two routines that handle importing coordinate systems. gdal-1.8.0\ogr\ogrsf_frmts\mitab\mitab_coordsys.cpp has code /*-------------------------------------------------------------- * Lambert Conic Conformal *-------------------------------------------------------------*/ case 3: poSR->SetLCC( GetMIFParm( papszNextField, 2, 0.0 ), GetMIFParm( papszNextField, 3, 0.0 ), GetMIFParm( papszNextField, 1, 0.0 ), GetMIFParm( papszNextField, 0, 0.0 ), GetMIFParm( papszNextField, 4, 0.0 ), GetMIFParm( papszNextField, 5, 0.0 ) ); break; however, in \gdal-1.8.0\ogr\ogr_srs_proj4.cpp the code is: else if( EQUAL(pszProj,"lcc") ) { if( OSR_GDV(papszNV, "lat_0", 0.0 ) == OSR_GDV(papszNV, "lat_1", 0.0 ) ) { /* 1SP form */ SetLCC1SP( OSR_GDV( papszNV, "lat_0", 0.0 ), OSR_GDV( papszNV, "lon_0", 0.0 ), OSR_GDV( papszNV, "k_0", 1.0 ), OSR_GDV( papszNV, "x_0", 0.0 ), OSR_GDV( papszNV, "y_0", 0.0 ) ); } else { /* 2SP form */ SetLCC( OSR_GDV( papszNV, "lat_1", 0.0 ), OSR_GDV( papszNV, "lat_2", 0.0 ), OSR_GDV( papszNV, "lat_0", 0.0 ), OSR_GDV( papszNV, "lon_0", 0.0 ), OSR_GDV( papszNV, "x_0", 0.0 ), OSR_GDV( papszNV, "y_0", 0.0 ) ); } } As far as I can figure, these are the two spots that are setting up the internals for the coordinate system, and they're not quite doing it the same. I just don't know enough about the Lambert Conformal Conic coordinate system any more to tell if I should tweak the MapInfo import routine or the proj4 import routine. So I thought I'd throw this out there and see what the experts had to say. Thanks, Andy
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev