On samedi 24 novembre 2018 23:09:34 CET Markus Metz wrote: > I have created a PR for this, but there are still issues: > > is > Pixel Size = (0.099999991285714,-0.100000004000000) > Corner Coordinates: > Upper Left ( -25.0000122, 69.9999970) > Lower Left ( -25.0000122, 29.9999954) > Upper Right ( 44.9999817, 69.9999970) > Lower Right ( 44.9999817, 29.9999954) > Center ( 9.9999847, 49.9999962) > > should be > Pixel Size = (0.100000000000000,-0.100000000000000) > Corner Coordinates: > Upper Left ( -25.0000000, 70.0000000) > Lower Left ( -25.0000000, 30.0000000) > Upper Right ( 45.0000000, 70.0000000) > Lower Right ( 45.0000000, 30.0000000) > Center ( 10.0000000, 50.0000000)
Yes, the issue is that the data type for the x variable in the .nc file is float32, so it has not enough precision. You could try to round the coodinates with some heuristics, like (untested !) for the resolution: double K = std::pow(10, 4 - std::round(std::log(res) / std::log(10))); if( std::fabs(K * res - std::round(K * res)) < 1 ) { res = std::round(K * res) / K; } for the coordinates: // Case where coordinates are aligned on a multiple of the resolution if ( std::fabs(x / res - std::round(x / res)) < 1e-3 ) { x = std::round(x / res) * res } // Case were they are aligned with a half-pixel shift else if (std::fabs((x - res/2)/res) - std::round((x - res/2)/res)) < 1e-3 ) { x = std::round((x - res/2)/res) * res + res/2; } -- Spatialys - Geospatial professional services http://www.spatialys.com _______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/gdal-dev