Skip to content

Commit e8bba8c

Browse files
committed
Support negative bbox origin coordinates
1 parent e7e97e3 commit e8bba8c

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

therionsurface2survex.cxx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)