@@ -187,9 +187,9 @@ int main (int argc, char **argv)
187187 std::regex detect_surface_end_re (" ^\\ s*endsurface" );
188188 std::regex parse_cmddirect_re (" ^\\ s*(-nothing So Far-)\\ s+(.+)" );
189189 std::regex parse_cs_re (" ^\\ s*(cs)\\ s+(.+)" );
190- std::regex parse_grid_re (" ^\\ s*grid\\ s+(\\ d+[\\ .\\ d]*)\\ s+(\\ d+[\\ .\\ d]*)\\ s+(\\ d+[\\ .\\ d]*)\\ s+(\\ d+[\\ .\\ d]*)\\ s+(\\ d+)\\ s+(\\ d+)$" );
190+ std::regex parse_grid_re (" ^\\ s*grid\\ s+(-? \\ d+[\\ .\\ d]*)\\ s+(-? \\ d+[\\ .\\ d]*)\\ s+(\\ d+[\\ .\\ d]*)\\ s+(\\ d+[\\ .\\ d]*)\\ s+(\\ d+)\\ s+(\\ d+)$" );
191191 std::regex parse_data_re (" ^(\\ s*\\ d+[\\ d.]*)+$" );
192- std::regex parse_gdalhdr_re (" ^\\ s*(ncols|nrows|xllcorner|yllcorner|cellsize|dx|dy)\\ s+([.\\ d]+)" );
192+ std::regex parse_gdalhdr_re (" ^\\ s*(ncols|nrows|xllcorner|yllcorner|cellsize|dx|dy)\\ s+(-? [.\\ d]+)" );
193193
194194 bool in_surfacedata = false ;
195195 double origin_x, origin_y, step_x, step_y;
@@ -215,15 +215,14 @@ int main (int argc, char **argv)
215215 if (debug) cout << " DBG: GDAL parse OK; cmd=" << sm_gdalhdr[1 ] << " ; val=" << sm_gdalhdr[2 ] << " \n " ;
216216 gdal_detected = true ;
217217
218- if (sm_gdalhdr[1 ] == " ncols" ) {gdal_ncols.d = stol (sm_gdalhdr[2 ]); gdal_ncols.valid = true ;}
219- if (sm_gdalhdr[1 ] == " nrows" ) {gdal_nrows.d = stol (sm_gdalhdr[2 ]); gdal_nrows.valid = true ;}
218+ if (sm_gdalhdr[1 ] == " ncols" ) {gdal_ncols.d = stol (sm_gdalhdr[2 ]); gdal_ncols.valid = (gdal_ncols. d > 0 )? true : false ;}
219+ if (sm_gdalhdr[1 ] == " nrows" ) {gdal_nrows.d = stol (sm_gdalhdr[2 ]); gdal_nrows.valid = (gdal_nrows. d > 0 )? true : false ;}
220220 if (sm_gdalhdr[1 ] == " xllcorner" ) {gdal_xllcorner.d = stod (sm_gdalhdr[2 ]); gdal_xllcorner.valid = true ;}
221221 if (sm_gdalhdr[1 ] == " yllcorner" ) {gdal_yllcorner.d = stod (sm_gdalhdr[2 ]); gdal_yllcorner.valid = true ;}
222- if (sm_gdalhdr[1 ] == " cellsize" ) {gdal_xcellsize.d = stod (sm_gdalhdr[2 ]); gdal_xcellsize.valid = true ;
223- gdal_ycellsize.d = stod (sm_gdalhdr[2 ]); gdal_ycellsize.valid = true ;}
224- if (sm_gdalhdr[1 ] == " dx" ) {gdal_xcellsize.d = stod (sm_gdalhdr[2 ]); gdal_xcellsize.valid = true ;}
225- if (sm_gdalhdr[1 ] == " dy" ) {gdal_ycellsize.d = stod (sm_gdalhdr[2 ]); gdal_ycellsize.valid = true ;}
226-
222+ if (sm_gdalhdr[1 ] == " cellsize" ) {gdal_xcellsize.d = stod (sm_gdalhdr[2 ]); gdal_xcellsize.valid = (gdal_xcellsize.d > 0 )?true :false ;
223+ gdal_ycellsize.d = stod (sm_gdalhdr[2 ]); gdal_ycellsize.valid = (gdal_ycellsize.d > 0 )?true :false ;}
224+ if (sm_gdalhdr[1 ] == " dx" ) {gdal_xcellsize.d = stod (sm_gdalhdr[2 ]); gdal_xcellsize.valid = (gdal_xcellsize.d > 0 )?true :false ;}
225+ if (sm_gdalhdr[1 ] == " dy" ) {gdal_ycellsize.d = stod (sm_gdalhdr[2 ]); gdal_ycellsize.valid = (gdal_ycellsize.d > 0 )?true :false ;}
227226
228227 if (gdal_ncols.valid && gdal_nrows.valid && gdal_xllcorner.valid && gdal_yllcorner.valid && gdal_xcellsize.valid && gdal_ycellsize.valid ) {
229228 if (debug) cout << " DBG: GDAL header complete! \n " ;
0 commit comments