This is great! Did you consider writing a little plug-on for one
of the VTK viewers, like ParaView or VisIt, to allow direct access
to GRASS data from there?
Cheers,
Ben
Soeren Gebbert wrote:
Hi,
JFYI i have implemented a small demo library which connects parts of the
grass gis library
with the Visual-Tool-Kit VTK.
It is called vtkGRASSBridge.Additionally the VTK Python and Java wrapping mechanism have been
enabled. So the user can use the
library from C++, Python and Java.Features:
* The library can read and write raster maps row by row, as well as
regions and the raster history.
* It can list files of the grass database.
* It can convert grass raster maps into the vtkImageData format and the
other way round.
Missing Features:
* Full raster support (categories, colors, ..)
* Imagery support (groups, ...)
* Full vector support ....
* ....You can use every vtkDataSet processing algorithm available in VTK (more
than 50 i think)
to process the converted raster map and write it back to the grass
raster database.You can use the VTK render functionality to display the raster map.
There are examples and tests in the library showing this functionality
in Python.The documentation of the library can be found here:
http://www-pool.math.tu-berlin.de/~soeren/grass/files/vtkGRASSBridge/doc/html/index.htmlThe GPL source code is located here:
http://www-pool.math.tu-berlin.de/~soeren/grass/files/vtkGRASSBridge/vtkGRASSBridge_0.1.tar.gzHere is a small Python code example to read and write grass raster maps
in Python (within a grass session):##############################################
#include the VTK and vtkGRASSBridge Python libraries
from libvtkCommonPython import *
from libvtkFilteringPython import *
from libvtkGraphicsPython import *
from libvtkRenderingPython import *
from libvtkIOPython import *
from libvtkImagingPython import *
from libvtkGRASSBridgeIOPython import *
from libvtkGRASSBridgeCommonPython import *#Initiate grass
init = vtkGRASSInit()#The region settings
region = vtkGRASSRegion()
region.ReadCurrentRegion()
region.SetCols(10)
region.SetRows(10)
region.AdjustRegion()#Create a new map and write some data into it
writer = vtkGRASSRasterMapWriter()
writer.SetMapTypeToCELL()
writer.SetRegion(region)
writer.UseUserDefinedRegion()
writer.OpenMap("test_cell")#this is the row buffer
data = vtkIntArray()
data.SetNumberOfTuples(writer.GetNumberOfCols())#iterate over each raster cell
for i in range(writer.GetNumberOfRows()):
for j in range(writer.GetNumberOfCols()):
data.SetTuple1(j, i + j + 100)
writer.PutNextRow(data)#close the map
writer.CloseMap()#now reopen the map for reading
reader = vtkGRASSRasterMapReader()
reader.OpenMap("test_cell")#print the cells to stdout
print " "
for i in range(reader.GetNumberOfRows()):
data = reader.GetRow(i)
for j in range(reader.GetNumberOfCols()):
print data.GetTuple1(j),
print " "#print the range of the raster map
val = [0,0]
reader.GetRange(val);
print "Range ", val#print the history
print reader.GetHistory()
reader.CloseMap()#############################################
Have fun
Soeren------------------------------------------------------------------------
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev
--
Benjamin Ducke
Senior Applications Support and Development Officer
Oxford Archaeological Unit Limited
Janus House
Osney Mead
OX2 0ES
Oxford, U.K.
Tel: +44 (0)1865 263 800 (switchboard)
Tel: +44 (0)1865 980 758 (direct)
Fax :+44 (0)1865 793 496
benjamin.ducke@oxfordarch.co.uk
------
Files attached to this email may be in ISO 26300 format (OASIS Open Document Format). If you have difficulty opening them, please visit http://iso26300.info for more information.