70 lines
2.6 KiB
Python
Raw Normal View History

import os
from sextante.parameters.ParameterMultipleInput import ParameterMultipleInput
from sextante.grass.GrassUtils import GrassUtils
from sextante.core.GeoAlgorithm import GeoAlgorithm
from PyQt4 import QtGui
from sextante.core.SextanteUtils import SextanteUtils
import time
class nviz(GeoAlgorithm):
ELEVATION = "ELEVATION"
VECTOR = "VECTOR"
def getIcon(self):
return QtGui.QIcon(os.path.dirname(__file__) + "/../images/grass.png")
def defineCharacteristics(self):
self.name = "nviz"
self.group = "Visualization(NVIZ)"
self.addParameter(ParameterMultipleInput(nviz.ELEVATION, "Elevation layers", ParameterMultipleInput.TYPE_RASTER, True))
self.addParameter(ParameterMultipleInput(nviz.VECTOR, "Vector layers", ParameterMultipleInput.TYPE_VECTOR_ANY, True))
def processAlgorithm(self, progress):
commands = []
command = "nviz"
vector = self.getParameterValue(self.VECTOR);
elevation = self.getParameterValue(self.ELEVATION);
if vector:
layers = vector.split(";")
for layer in layers:
newfilename = self.exportVectorLayer(layer)
vector = vector.replace(layer, newfilename)
command += (" vector=" + vector.replace(";", ","))
if elevation:
layers = elevation.split(";")
for layer in layers:
newfilename = self.exportRasterLayer(layer)
elevation = elevation.replace(layer, newfilename)
command += (" elevation=" + elevation.replace(";", ","))
if elevation is None and vector is None:
command += " -q"
commands.append(command)
GrassUtils.createTempMapset();
GrassUtils.executeGrass(commands, progress)
def getTempFilename(self):
filename = "tmp" + str(time.time()).replace(".","") + str(SextanteUtils.getNumExportedLayers())
return filename
def exportVectorLayer(self,layer):
destFilename = self.getTempFilename()
command = "v.in.ogr"
command += " min_area=-1"
command +=" dsn=\"" + os.path.dirname(layer) + "\""
command +=" layer=" + os.path.basename(layer)[:-4]
command +=" output=" + destFilename;
command +=" --overwrite -o"
return destFilename
def exportRasterLayer(self, layer):
destFilename = self.getTempFilename()
command = "r.in.gdal"
command +=" input=\"" + layer + "\""
command +=" band=1"
command +=" out=" + destFilename;
command +=" --overwrite -o"
return destFilename