[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