On 09/03/16 16:55, jean pierre huart wrote:
Bingo! Thanks Moritz,
- the existing file... I didn't care about it, convinced that the
--overwrite parameter will wipe it out.
I agree that is a bit confusing (and could maybe be handled better), but
--overwrite comes into action at the time of writing of the file, not at
the time of reading the existing RENDER_FILE.
Launching this script in a cron, I've the feeling that the use of
GRASS_RENDER_IMMEDIATE is more appropriate. By the way, the choice is
simple, this solution works fine for me, but using d.mon does not.
What does not work with d.mon ? Does my below script work for you (it
uses the NC demo data set [1]) ?
Moritz
[1] https://grass.osgeo.org/download/sample-data/
Ciao
On 09/03/16 16:12, Moritz Lennert wrote:
On 09/03/16 15:39, jean pierre huart wrote:
Thanks Vinay, for the suggestion but I get an error on the d.out.file
instruction.
By the way, I've investigated the problem a bit further and found that I
mixed up instructions from manuals of different versions.
So coming back to GRASS v 7.0.x references I finally succeed in
obtaining a solution but not 100% satisfactory.
First trial create a unique image combining raster and vector, but width
and height remains at default and background is not transparent:
os.environ['GRASS_RENDER_TRANSPARENT'] = 'TRUE'
os.environ['GRASS_RENDER_WIDTH'] = str(1280)
os.environ['GRASS_RENDER_HEIGHT'] = str(960)
os.environ['GRASS_RENDER_FILE'] = filenameCombined.png
self.gscript.run_command('d.mon', overwrite=True, start='png',
output=filename)
self.gscript.run_command('d.rast', map='{0}@{1}'.format(raster,
currentmapset)
self.gscript.run_command('d.vect', map='{0}@{1}'.format(map,
currentmapset), color='white', fill_color='none')
self.gscript.run_command('d.mon', stop="png")
Second trial successfull for obtaining desired width, height and
transparency of the background but creating 2 images one for the raster
and the other for the vector, now I would like to combine them to have
only one image:
os.environ['GRASS_RENDER_IMMEDIATE'] = 'png'
os.environ['GRASS_RENDER_TRANSPARENT'] = 'TRUE'
os.environ['GRASS_RENDER_WIDTH'] = str(1280)
os.environ['GRASS_RENDER_HEIGHT'] = str(960)
os.environ['GRASS_RENDER_FILE'] = filenameOfRaster.png
self.gscript.run_command('d.rast', map='{0}@{1}'.format(raster,
currentmapset))
os.environ['GRASS_RENDER_FILE'] = filenameOfVector.png
self.gscript.run_command('d.vect', map='{0}@{1}'.format(map,
currentmapset), color='white', fill_color='none')
Modifying this with the following
os.environ['GRASS_RENDER_FILE'] = filenameCombined.png
self.gscript.run_command('d.rast', map='{0}@{1}'.format(raster,
currentmapset))
self.gscript.run_command('d.vect', map='{0}@{1}'.format(map,
currentmapset), color='white', fill_color='none')
ends with only the image of the vector.
I've the feeling that using d.mon would be preferable, but it seems that
it does not take into account the environment variables (at the
exception of GRASS_RENDER_FILE) that I propose.
This script gives me differently sized png files with both maps
displayed and transparent background:
import grass.script as gscript
import os
os.environ['GRASS_RENDER_TRANSPARENT']='TRUE'
for height in range(500,2000,500):
for width in range(500,2000,500):
os.system('rm map.png')
os.environ['GRASS_RENDER_HEIGHT']=str(height)
os.environ['GRASS_RENDER_WIDTH']=str(width)
gscript.run_command('d.mon', overwrite=True, start='png',
output='map.png')
gscript.run_command('d.rast', map_='elevation')
gscript.run_command('d.vect', map_='roadsmajor')
gscript.run_command('d.mon', stop="png")
os.system('identify map.png')
You can reach the same result with something like this:
import grass.script as gscript
import os
os.environ['GRASS_RENDER_TRANSPARENT']='TRUE'
for height in range(500,2000,500):
for width in range(500,2000,500):
os.system('rm map.png')
os.environ['GRASS_RENDER_IMMEDIATE']='png'
os.environ['GRASS_RENDER_FILE']='map.png'
os.environ['GRASS_RENDER_FILE_READ']='TRUE'
os.environ['GRASS_RENDER_HEIGHT']=str(height)
os.environ['GRASS_RENDER_WIDTH']=str(width)
gscript.run_command('d.rast', map_='elevation')
gscript.run_command('d.vect', map_='roadsmajor')
os.system('identify map.png')
You might have to watch out for existing files. If a file already
exists with the indicated name then GRASS cannot change its width and
height.
Hope this helps,
Moritz
_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user
_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user