Hamish: > > In doing that I noticed that the "-e" flag doesn't seem to be connected to > > any code. Anyone know what it is supposed to do? (added in cvs > > vector/v.in.ogr/main.c rev 1.29) Markus: > It should do the same as r.in.gdal: > -e Extend location extents based on new dataset > > To modify the DEFAULT_WIND file according to the map extent.
see attached patch. (untested) question- earlier in the v.in.ogr code as part of the projection-override check there is a comment: /* G_get_window seems to be unreliable if the location has been changed */ G__get_window ( &loc_wind, "", "DEFAULT_WIND", "PERMANENT"); should we worry about that for the extend flag? Hamish __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
? OBJ.i686-pc-linux-gnu ? v.in.ogr.tmp.html ? vio_extendflag.diff ? vio_region.diff Index: main.c =================================================================== RCS file: /home/grass/grassrepository/grass6/vector/v.in.ogr/main.c,v retrieving revision 1.86 diff -u -r1.86 main.c --- main.c 5 Nov 2007 07:14:15 -0000 1.86 +++ main.c 6 Nov 2007 00:47:55 -0000 @@ -31,6 +31,11 @@ #include "ogr_api.h" #include "global.h" +#ifndef MAX +# define MIN(a,b) ((a<b) ? a : b) +# define MAX(a,b) ((a>b) ? a : b) +#endif + int geom(OGRGeometryH hGeom, struct Map_info *Map, int field, int cat, double min_area, int type, int mk_centr ); int centroid(OGRGeometryH hGeom, CENTR *Centr, SPATIAL_INDEX *Sindex, int field, int cat, double min_area, int type); @@ -993,6 +998,30 @@ */ Vect_close ( &Map ); + + +/* -------------------------------------------------------------------- */ +/* Extend current window based on dataset. */ +/* -------------------------------------------------------------------- */ + if( extend_flag->answer ) + { + G_get_default_window( &loc_wind ); + + loc_wind.north = MAX(loc_wind.north,cellhd.north); + loc_wind.south = MIN(loc_wind.south,cellhd.south); + loc_wind.west = MIN(loc_wind.west, cellhd.west); + loc_wind.east = MAX(loc_wind.east, cellhd.east); + + loc_wind.rows = (int) ceil((loc_wind.north - loc_wind.south) + / loc_wind.ns_res); + loc_wind.south = loc_wind.north - loc_wind.rows * loc_wind.ns_res; + + loc_wind.cols = (int) ceil((loc_wind.east - loc_wind.west) + / loc_wind.ew_res); + loc_wind.east = loc_wind.west + loc_wind.cols * loc_wind.ew_res; + + G__put_window(&loc_wind, "../PERMANENT", "DEFAULT_WIND"); + } if (with_z && !z_flag->answer ) G_warning (_("Input data contains 3D features. Created vector is 2D only, "
_______________________________________________ grass-dev mailing list grass-dev@grass.itc.it http://grass.itc.it/mailman/listinfo/grass-dev