[GRASSLIST:4000] Re: ps.map grid in Lat/Lon
Florian Goessmann
florian.goessmann at mac.com
Thu Jul 22 22:22:00 EDT 2004
is it possible just to recompile ps.map?
regards,
Florian
On Friday, July 23, 2004, at 08:18AM, Hamish <hamish_nospam at yahoo.com> wrote:
>> > i'm want to overlay a map of a Lat/Lon location with a grid that
>> > has less than 1 degree spacing.
>> > is that possible? (geogrid is not available for lat/lon and if i use
>> >
>> > grid nothing happens when i choose a spacing less than 1)
>> >
>> I had a similar problem back with GRASS 5.0.0. I was told at the time
>>
>> that ps.map did not support floating point grids, hence the problem
>> with lat-long locations. I don't know if it has been fixed, but a
>> simple workaround is to make a vector grid with v.mkgrid and just
>> display that along with whatever else you want with ps.map. Thanks to
>>
>> whomever suggested that to me.
>
>
>The attached patch adds this to ps.map in GRASS 5.7.
>
>Before trying that though you might try the "geogrid" command [5.7
>only], which will draw a lat/lon grid over a non-Lat/Lon location map.
>
>I haven't put this in CVS as it needs some checking over to make sure it
>doesn't cause other problems (eg it tests grid==0 when 0 is now floating
>point). Maybe someone with a keener eye for C than me can comment.
>It might be better to just work on getting geogrid to do lat/lon?
>
>
>Results on the map look great, formats text into deg:minutes, but you
>may need to use a lot of precision to get 5-minute ticks to round
>correctly. e.g., for 5' use something like "grid 0.08333333333333"
>
>This makes the mapinfo command look pretty wonky for anything smaller
>than 0.25 of a degree though. I guess G_format_easting() could fix that?
>
>
>e.g., for the global lat/lon dataset: [zoom in]
>
>ps.map out=test.ps << EOF
>raster nations
>grid 0.25
> numbers 1
> end
>mapinfo
> where 0.5 8.5
> end
>end
>EOF
>gv test.ps
>
>
>
>Hamish
>
>Index: main.c
>===================================================================
>RCS file: /home/grass/grassrepository/grass51/ps/ps.map/main.c,v
>retrieving revision 1.6
>diff -u -r1.6 main.c
>--- main.c 27 Jan 2004 12:59:16 -0000 1.6
>+++ main.c 22 Jul 2004 23:21:38 -0000
>@@ -625,7 +625,7 @@
> {
> PS.grid = -1;
> PS.grid_numbers = 0;
>- sscanf(data, "%d", &PS.grid);
>+ sscanf(data, "%lf", &PS.grid);
> if (PS.grid < 0)
> {
> PS.grid = 0;
>Index: ps_info.h
>===================================================================
>RCS file: /home/grass/grassrepository/grass51/ps/ps.map/ps_info.h,v
>retrieving revision 1.3
>diff -u -r1.3 ps_info.h
>--- ps_info.h 27 Jan 2004 12:59:16 -0000 1.3
>+++ ps_info.h 22 Jul 2004 23:21:38 -0000
>@@ -41,12 +41,12 @@
> int do_colortable;
> int do_scalebar;
> int num_psfiles;
>- int grid, grid_color, grid_numbers, grid_numbers_color, grid_fontsize;
>+ int grid_color, grid_numbers, grid_numbers_color, grid_fontsize;
> float grid_cross;
>+ double grid, grid_width, geogrid_width;
> char geogridunit[64];
> int geogrid, geogrid_color, geogrid_numbers;
> int geogrid_numbers_color, geogrid_fontsize;
>- double grid_width, geogrid_width;
> int do_outline, outline_color;
> int cell_fd;
> int row_delta, col_delta;
>Index: do_grid.c
>===================================================================
>RCS file: /home/grass/grassrepository/grass51/ps/ps.map/do_grid.c,v
>retrieving revision 1.2
>diff -u -r1.2 do_grid.c
>--- do_grid.c 10 Jul 2003 17:59:32 -0000 1.2
>+++ do_grid.c 22 Jul 2004 23:21:39 -0000
>@@ -109,7 +109,8 @@
> {
> double g;
> char num_text[50];
>- int grid, vy, vx, hy=0, hx=0;
>+ double grid;
>+ int vy, vx, hy=0, hx=0;
> int first, len, x, y, last_bottom, last_right;
> int rounded_grid, margin;
>
>@@ -120,7 +121,7 @@
> rounded_grid = 1;
> if (PS.w.proj != PROJECTION_LL)
> {
>- sprintf(num_text, "%d", PS.grid);
>+ sprintf(num_text, "%lf", PS.grid);
> len = strlen(num_text);
> while (len-- && num_text[len] == '0') rounded_grid *= 10;
> if (rounded_grid == 10) rounded_grid = 1;
>Index: map_info.c
>===================================================================
>RCS file: /home/grass/grassrepository/grass51/ps/ps.map/map_info.c,v
>retrieving revision 1.1
>diff -u -r1.1 map_info.c
>--- map_info.c 26 Mar 2003 15:56:15 -0000 1.1
>+++ map_info.c 22 Jul 2004 23:21:39 -0000
>@@ -47,7 +47,7 @@
> {
> k = 5.5;
> sprintf(buf,
>- "%d %s", PS.grid, G_database_unit_name(PS.grid != 1));
>+ "%g %s", PS.grid, G_database_unit_name(PS.grid != 1));
> fprintf(PS.fp, "(%s) SW pop /t2 XD\n", buf);
> fprintf(PS.fp, "t1 t2 lt {/t1 t2 def} if \n");
> }
>@@ -74,7 +74,7 @@
> if (PS.grid)
> {
> sprintf(buf,
>- "%d %s", PS.grid, G_database_unit_name(PS.grid != 1));
>+ "%g %s", PS.grid, G_database_unit_name(PS.grid != 1));
> show_text(x, y - dy, "GRID:");
> fprintf(PS.fp, "(%s) sx %.1f MS\n", buf, y - dy);
> y -= dy;
>
>
More information about the grass-user
mailing list