def OnMCalcRun(self, event):
        """Builds and runs r.mapcalc statement
        """
        name = self.newmaptxt.GetValue().strip()
        if not name:
            GError(parent=self,
                   message=_("You must enter the name of "
                             "a new raster map to create."))
            return

        if not(name[0] == '"' and name[-1] == '"') and any((char in name)
                                                           for char in self.charactersToQuote):
            name = '"' + name + '"'

        expr = self.text_mcalc.GetValue().strip().replace("\n", " ")
        if not expr:
            GError(parent=self,
                   message=_("You must enter an expression "
                             "to create a new raster map."))
            return

        seed_flag = seed = None
        if re.search(pattern="rand *\(.+\)", string=expr):
            if self.randomSeed.IsChecked():
                seed_flag = '-s'
            else:
                seed = self.randomSeedText.GetValue().strip()
        if self.log:
            cmd = [self.cmd]
            if seed_flag:
                cmd.append('-s')
            if seed:
                cmd.append("seed={val}".format(val=seed))
            if self.overwrite.IsChecked():
                cmd.append('--overwrite')
            cmd.append(str('expression=%s = %s' % (name, expr)))

            self.log.RunCmd(cmd, onDone=self.OnDone)
            self.parent.Raise()
        else:
            if self.overwrite.IsChecked():
                overwrite = True
            else:
                overwrite = False
            params = dict(expression="%s=%s" % (name, expr),
                          overwrite=overwrite)
            if seed_flag:
                params['flags'] = 's'
            if seed:
                params['seed'] = seed

            RunCommand(self.cmd,
                       **params)
Exemple #2
0
 def writeCircle(self, circle, rasterName):
     coords = self.mapWindow.Pixel2Cell(circle.point)
     RunCommand('r.circle',
                output=rasterName,
                max=circle.radius,
                coordinate=coords,
                flags="b")
     grass.use_temp_region()
     grass.run_command('g.region', zoom=rasterName)
     region = grass.region()
     marea = MaskedArea(region, rasterName, circle.radius)
     return marea
Exemple #3
0
    def CleanUp(self):

        ScattPlotsCondsData.CleanUp(self)        
        for tmp in self.cats_rasts_conds.itervalues():
            grass.try_remove(tmp) 
        for tmp in self.cats_rasts.itervalues():
            RunCommand("g.remove", flags='f',
                       type='raster', name=tmp,
                       getErrorMsg=True)

        self.cats_rasts = {}
        self.cats_rasts_conds = {}
Exemple #4
0
def test():
    nviz = NvizTask('/home/anna/testy/nviz/t12.gxw')
    # nviz = NvizState('/home/anna/testy/nviz/t3.gxw')

    # cmd = nviz.GetCommand()
    cmds = nviz.GetCommandSeries(['aspect', 'elevation'], 'color_map')
    for cmd in cmds:
        print cmd
        returncode, message = RunCommand(getErrorMsg=True,
                                         prog=cmd[0],
                                         **cmd[1])
        print returncode, message
Exemple #5
0
    def DeleteCategory(self, cat_id):

        ScattPlotsCondsData.DeleteCategory(self, cat_id)
        
        grass.try_remove(self.cats_rasts_conds[cat_id])
        del self.cats_rasts_conds[cat_id]

        RunCommand("g.remove", flags='f', type='raster',
                   name=self.cats_rasts[cat_id])
        del self.cats_rasts[cat_id]

        return True
 def _estimateResampling(self):
     output = RunCommand('r.info',
                         flags='g',
                         quiet=False,
                         read=True,
                         map=self.iLayer,
                         env=self.iEnv,
                         parse=parse_key_val)
     if output['datatype'] == 'CELL':
         self.resampling.SetStringSelection('nearest')
     else:
         self.resampling.SetStringSelection('bilinear')
Exemple #7
0
    def writeArea(self, coords, rasterName):
        polyfile = tempfile.NamedTemporaryFile(delete=False)
        polyfile.write("AREA\n")
        for coor in coords:
            east, north = coor
            point = " %s %s\n" % (east, north)
            polyfile.write(point)

        catbuf = "=%d a\n" % self.catId
        polyfile.write(catbuf)
        self.catId = self.catId + 1

        polyfile.close()
        region_settings = grass.parse_command('g.region', flags='p',
                                              delimiter=':')
        pname = polyfile.name.split('/')[-1]
        tmpraster = "rast_" + pname
        tmpvector = "vect_" + pname
        wx.BeginBusyCursor()
        wx.GetApp().Yield()
        RunCommand('r.in.poly', input=polyfile.name, output=tmpraster,
                   rows=region_settings['rows'], overwrite=True)

        RunCommand('r.to.vect', input=tmpraster, output=tmpvector,
                   type='area', overwrite=True)

        RunCommand('v.to.rast', input=tmpvector, output=rasterName,
                   value=1, use='val')
        wx.EndBusyCursor()
        grass.use_temp_region()
        grass.run_command('g.region', vector=tmpvector)
        region = grass.region()

        marea = MaskedArea(region, rasterName)

        RunCommand('g.remove', flags='f', type='raster', name=tmpraster)
        RunCommand('g.remove', flags='f', type='vector', name=tmpvector)

        os.unlink(polyfile.name)
        return marea
Exemple #8
0
def switch_mapset_interactively(guiparent, giface, dbase, location, mapset):
    """Switch current mapset. Emits giface.currentMapsetChanged signal."""
    if dbase:
        if RunCommand('g.mapset',
                      parent=guiparent,
                      location=location,
                      mapset=mapset,
                      dbase=dbase) == 0:
            GMessage(parent=guiparent,
                     message=_("Current GRASS database is <%(dbase)s>.\n"
                               "Current location is <%(loc)s>.\n"
                               "Current mapset is <%(mapset)s>.") % {
                                   'dbase': dbase,
                                   'loc': location,
                                   'mapset': mapset
                               })
            giface.currentMapsetChanged.emit(dbase=dbase,
                                             location=location,
                                             mapset=mapset)
    elif location:
        if RunCommand('g.mapset',
                      parent=guiparent,
                      location=location,
                      mapset=mapset) == 0:
            GMessage(parent=guiparent,
                     message=_("Current location is <%(loc)s>.\n"
                               "Current mapset is <%(mapset)s>.") % {
                                   'loc': location,
                                   'mapset': mapset
                               })
            giface.currentMapsetChanged.emit(dbase=None,
                                             location=location,
                                             mapset=mapset)
    else:
        if RunCommand('g.mapset', parent=guiparent, mapset=mapset) == 0:
            GMessage(parent=guiparent,
                     message=_("Current mapset is <%s>.") % mapset)
            giface.currentMapsetChanged.emit(dbase=None,
                                             location=None,
                                             mapset=mapset)
Exemple #9
0
    def OnUninstall(self, event):
        """Uninstall selected extensions"""
        eList = self._getSelectedExtensions()
        if not eList:
            return

        for ext in eList:
            files = RunCommand('g.extension',
                               parent=self,
                               read=True,
                               quiet=True,
                               extension=ext,
                               operation='remove').splitlines()
            if len(files) > 10:
                files = files[:10]
                files.append('...')
            dlg = wx.MessageDialog(
                parent=self,
                message=_(
                    "List of files to be removed:\n%(files)s\n\n"
                    "Do you want really to remove <%(ext)s> extension?") % {
                        'files': os.linesep.join(files),
                        'ext': ext
                    },
                caption=_("Remove extension"),
                style=wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)

            if dlg.ShowModal() == wx.ID_YES:
                RunCommand('g.extension',
                           flags='f',
                           parent=self,
                           quiet=True,
                           extension=ext,
                           operation='remove')

        self.extList.LoadData()

        # update prompt
        globalvar.UpdateGRASSAddOnCommands(eList)
        toolboxesOutdated()
Exemple #10
0
    def _geomAttrbUpdate(self, fids):
        """Update geometry atrributes of currently selected features

        :param fid: list feature id
        """
        mapLayer = self.parent.toolbars["vdigit"].GetLayer()
        vectorName = mapLayer.GetName()
        if self.tree:
            item = self.tree.FindItemByData("maplayer", mapLayer)
            vdigit = self.tree.GetLayerInfo(item, key="vdigit")
        else:
            item = vdigit = None

        if not vdigit or "geomAttr" not in vdigit:
            return

        dbInfo = gselect.VectorDBInfo(vectorName)
        sqlfile = tempfile.NamedTemporaryFile(mode="w")
        for fid in fids:
            for layer, cats in six.iteritems(self.digit.GetLineCats(fid)):
                table = dbInfo.GetTable(layer)
                for attrb, item in six.iteritems(vdigit["geomAttr"]):
                    val = -1
                    if attrb == "length":
                        val = self.digit.GetLineLength(fid)
                        type = attrb
                    elif attrb == "area":
                        val = self.digit.GetAreaSize(fid)
                        type = attrb
                    elif attrb == "perimeter":
                        val = self.digit.GetAreaPerimeter(fid)
                        type = "length"

                    if val < 0:
                        continue
                    val = UnitsConvertValue(val, type, item["units"])

                    for cat in cats:
                        sqlfile.write(
                            "UPDATE %s SET %s = %f WHERE %s = %d;\n" % (
                                table,
                                item["column"],
                                val,
                                dbInfo.GetKeyColumn(layer),
                                cat,
                            ))

            sqlfile.file.flush()
            RunCommand("db.execute",
                       parent=True,
                       quiet=True,
                       input=sqlfile.name)
Exemple #11
0
    def _rasterize(self, grass_region, layer, cat, out_rast):

        # TODO different thread may be problem when user edits map
        environs = os.environ.copy()
        environs['GRASS_VECTOR_TEMPORARY'] = '1'

        ret, text, msg = RunCommand("v.category",
                                    input=self.vectMap,
                                    getErrorMsg=True,
                                    option='report',
                                    read=True,
                                    env=environs)

        ret, text, msg = RunCommand("v.build",
                                    map=self.vectMap,
                                    getErrorMsg=True,
                                    read=True,
                                    env=environs)

        if ret != 0:
            GException(_("v.build failed:\n%s" % msg))

        environs = os.environ.copy()
        environs["GRASS_REGION"] = grass_region["GRASS_REGION"]
        environs['GRASS_VECTOR_TEMPORARY'] = '1'

        ret, text, msg = RunCommand("v.to.rast",
                                    input=self.vectMap,
                                    use="cat",
                                    layer=str(layer),
                                    cat=str(cat),
                                    output=out_rast,
                                    getErrorMsg=True,
                                    read=True,
                                    overwrite=True,
                                    env=environs)

        if ret != 0:
            GException(_("v.to.rast failed:\n%s" % msg))
Exemple #12
0
    def ComputeStatitistics(self):
        """!Computes statistics for raster map using 'r.univar' module.

        @return statistic in form of dictionary
        """
        # RunCommand enables to run GRASS module
        res = RunCommand(
            'r.univar',  # module name
            flags='g',  # command flags
            map=self.currentRaster,  # module parameters
            read=True)  # get command output

        return gcore.parse_key_val(res, val_type=float)
Exemple #13
0
 def rename(self):
     """Rename layer"""
     if self.selected_layer and self.new_name:
         string = self.old_name + ',' + self.new_name
         self.ChangeEnvironment(self.GetItemText(self.selected_location),
                                self.GetItemText(self.selected_mapset))
         renamed = 0
         label = _("Renaming") + " " + string + " ..."
         self.showNotification.emit(message=label)
         if (self.GetItemText(self.selected_type) == 'vect'):
             renamed = RunCommand('g.rename', vect=string)
         elif (self.GetItemText(self.selected_type) == 'rast'):
             renamed = RunCommand('g.rename', rast=string)
         else:
             renamed = RunCommand('g.rename', rast3d=string)
         if (renamed == 0):
             self.SetItemText(self.selected_layer, self.new_name)
             label = "g.rename " + self.GetItemText(
                 self.selected_type) + "=" + string + "   -- completed"
             self.showNotification.emit(message=label)
             Debug.msg(1, "LAYER RENAMED TO: " + self.new_name)
         self.RestoreBackup()
Exemple #14
0
    def GroupSet(self, group, subgroup):
        kwargs = {}
        if subgroup:
            kwargs['subgroup'] = subgroup

        res = RunCommand('i.group',
                         flags='g',
                         group=group,
                         read=True, **kwargs).strip()

        if res.splitlines()[0]:
            bands = res.splitlines()
            self.scatt_mgr.SetBands(bands)
Exemple #15
0
    def GetGroupBands(self, group, subgroup):
        """Get list of raster bands which are in the soubgroup of group with both having same name."""

        kwargs = {}
        if subgroup:
            kwargs["subgroup"] = subgroup

        res = RunCommand("i.group", flags="g", group=group, read=True, **kwargs).strip()
        bands = None
        if res.split("\n")[0]:
            bands = res.split("\n")

        return bands
Exemple #16
0
    def ImportFile(self, filePath):
        """Tries to import file as vector or raster.

        If successfull sets default region from imported map.
        """
        RunCommand('db.connect', flags='c')
        mapName = os.path.splitext(os.path.basename(filePath))[0]
        vectors = RunCommand('v.in.ogr', input=filePath, flags='l', read=True)

        wx.BeginBusyCursor()
        wx.GetApp().Yield()
        if vectors:
            # vector detected
            returncode, error = RunCommand('v.in.ogr',
                                           input=filePath,
                                           output=mapName,
                                           flags='e',
                                           getErrorMsg=True)
        else:
            returncode, error = RunCommand('r.in.gdal',
                                           input=filePath,
                                           output=mapName,
                                           flags='e',
                                           getErrorMsg=True)
        wx.EndBusyCursor()

        if returncode != 0:
            GError(parent=self,
                   message=_("Import of <%(name)s> failed.\n"
                             "Reason: %(msg)s") % ({
                                 'name': filePath,
                                 'msg': error
                             }))
        else:
            GMessage(message=_(
                "Data file <%(name)s> imported successfully. "
                "The location's default region was set from this imported map."
            ) % {'name': filePath},
                     parent=self)
Exemple #17
0
    def Load(self, url, full=True):
        """Load list of extensions"""
        self._emptyTree()

        if full:
            flags = 'g'
        else:
            flags = 'l'
        retcode, ret, msg = RunCommand(
            'g.extension', read=True, getErrorMsg=True, url=url, flags=flags, quiet=True)
        if retcode != 0:
            raise GException(_("Unable to load extensions. %s") % msg)

        currentNode = None
        for line in ret.splitlines():
            if full:
                try:
                    key, value = line.split('=', 1)
                except ValueError:
                    key = 'name'
                    value = line

                if key == 'name':
                    try:
                        prefix, name = value.split('.', 1)
                    except ValueError:
                        prefix = ''
                        name = value
                    mainNode = self.mainNodes[self._expandPrefix(prefix)]
                    currentNode = self.model.AppendNode(
                        parent=mainNode, label=value)
                    currentNode.data = {'command': value}
                else:
                    if currentNode is not None:
                        currentNode.data[key] = value
            else:
                try:
                    prefix, name = line.strip().split('.', 1)
                except ValueError:
                    prefix = ''
                    name = line.strip()

                if self._expandPrefix(prefix) == prefix:
                    prefix = ''
                module = prefix + '.' + name
                mainNode = self.mainNodes[self._expandPrefix(prefix)]
                currentNode = self.model.AppendNode(
                    parent=mainNode, label=module)
                currentNode.data = {'command': module,
                                    'keywords': '',
                                    'description': ''}
Exemple #18
0
    def CreateDatalist(self, rpair):
        """Build a list of cell value, frequency pairs for histogram
        frequency can be in cell counts, percents, or area
        """
        datalist = []

        if self.scattertype == "bubble":
            freqflag = "cn"
        else:
            freqflag = "n"

        try:
            ret = RunCommand(
                "r.stats",
                parent=self,
                input="%s,%s" % rpair,
                flags=freqflag,
                nsteps=self.bins,
                sep=",",
                quiet=True,
                read=True,
            )

            if not ret:
                return datalist

            for line in ret.splitlines():
                rast1, rast2 = line.strip().split(",")
                rast1 = rast1.strip()
                if "-" in rast1:
                    if rast1[0] == "-":
                        rast1 = "-" + rast1.split("-")[1]
                    else:
                        rast1 = rast1.split("-")[0]

                rast2 = rast2.strip()
                if "-" in rast2:
                    if rast2[0] == "-":
                        rast2 = "-" + rast2.split("-")[1]
                    else:
                        rast2 = rast2.split("-")[0]

                rast1 = rast1.encode("ascii", "ignore")
                rast2 = rast2.encode("ascii", "ignore")

                datalist.append((rast1, rast2))

            return datalist
        except GException as e:
            GError(parent=self, message=e.value)
            return None
Exemple #19
0
    def RunAnalysis(self):

        analysis, valid = self.vnet_data.GetParam("analysis")

        params, err_params, flags = self.vnet_data.GetParams()
        relevant_params = self.vnet_data.GetRelevantParams(analysis)

        if not relevant_params:
            return -1

        if not self.vnet_data.InputsErrorMsgs(
                _("Unable to perform analysis."),
                analysis,
                params,
                flags,
                err_params,
                relevant_params,
        ):
            return -2

        if self.results["vect_map"]:
            self.results["vect_map"].DeleteRenderLayer()

        # history - delete data in buffer for hist step
        self.history.DeleteNewHistStepData()

        # create new map (included to history) for result of analysis
        self.results["vect_map"] = self.history.NewTmpVectMapToHist(
            "vnet_tmp_result")

        if not self.results["vect_map"]:
            return False

        # for case there is some map with same name
        # (when analysis does not produce any map, this map would have been shown as result)
        RunCommand(
            "g.remove",
            flags="f",
            type="vector",
            name=self.results["vect_map"].GetVectMapName(),
        )

        # save data from
        self.history._saveAnInputToHist(analysis, params, flags)

        ret = self.analyses.RunAnalysis(
            self.results["vect_map"].GetVectMapName(), params, flags)
        if not ret:
            return -3
        else:
            return 1
Exemple #20
0
def ReadEpsgCodes():
    """Read EPSG codes with g.proj

    :return: dictionary of EPSG code
    """
    epsgCodeDict = dict()

    ret = RunCommand("g.proj", read=True, list_codes="EPSG")

    for line in ret.splitlines():
        code, descr, params = line.split("|")
        epsgCodeDict[int(code)] = (descr, params)

    return epsgCodeDict
Exemple #21
0
    def _updateTtbByGlobalCosts(self, vectMapName, tlayer):
        # TODO get layer number do not use it directly
        intervals = self.turnsData["global"].GetData()

        cmdUpdGlob = [
            "v.db.update",
            "map=",
            self.inputData["input"].GetValue(),
            "layer=%d" % tlayer,
            "column=cost",
        ]

        dbInfo = VectorDBInfo(vectMapName)
        table = dbInfo.GetTable(tlayer)
        driver, database = dbInfo.GetDbSettings(tlayer)

        sqlFile = grass.tempfile()
        sqlFile_f = open(sqlFile, "w")

        for ival in intervals:
            from_angle = ival[0]
            to_angle = ival[1]
            cost = ival[2]

            if to_angle < from_angle:
                to_angle = math.pi * 2 + to_angle
            # if angle < from_angle:
            #    angle = math.pi * 2  + angle

            where = " WHERE (((angle < {0}) AND ({2} + angle >= {0} AND {2} + angle < {1})) OR \
                            ((angle >= {0}) AND (angle >= {0} AND angle < {1}))) AND cost==0.0 ".format(
                str(from_angle), str(to_angle), str(math.pi * 2))

            stm = ("UPDATE %s SET cost=%f " % (table, cost)) + where + ";\n"
            sqlFile_f.write(stm)

        sqlFile_f.close()

        # TODO improve parser and run in thread

        ret, msg, err = RunCommand(
            "db.execute",
            getErrorMsg=True,
            input=sqlFile,
            read=True,
            driver=driver,
            database=database,
        )

        try_remove(sqlFile)
Exemple #22
0
    def CreateDatalist(self, rpair):
        """Build a list of cell value, frequency pairs for histogram
            frequency can be in cell counts, percents, or area
        """
        datalist = []

        if self.scattertype == 'bubble':
            freqflag = 'cn'
        else:
            freqflag = 'n'

        try:
            ret = RunCommand("r.stats",
                             parent=self,
                             input='%s,%s' % rpair,
                             flags=freqflag,
                             nsteps=self.bins,
                             sep=',',
                             quiet=True,
                             read=True)

            if not ret:
                return datalist

            for line in ret.splitlines():
                rast1, rast2 = line.strip().split(',')
                rast1 = rast1.strip()
                if '-' in rast1:
                    if rast1[0] == '-':
                        rast1 = '-' + rast1.split('-')[1]
                    else:
                        rast1 = rast1.split('-')[0]

                rast2 = rast2.strip()
                if '-' in rast2:
                    if rast2[0] == '-':
                        rast2 = '-' + rast2.split('-')[1]
                    else:
                        rast2 = rast2.split('-')[0]

                rast1 = rast1.encode('ascii', 'ignore')
                rast2 = rast2.encode('ascii', 'ignore')

                datalist.append((rast1, rast2))

            return datalist
        except GException as e:
            GError(parent=self,
                   message=e.value)
            return None
    def _runCommand(self, cmd):
        """!Run command to render data
        """
        if self.type == 'wms':
            ret = 0
            msg = ''
            self.renderMgr.Render(cmd)
        else:
            ret, msg = RunCommand(cmd[0],
                                  getErrorMsg=True,
                                  quiet=True,
                                  **cmd[1])

        return ret, msg
Exemple #24
0
 def _estimateResolution(self):
     output = RunCommand('r.proj',
                         flags='g',
                         quiet=False,
                         read=True,
                         input=self.iLayer,
                         dbase=self.iGisdbase,
                         location=self.iLocation,
                         mapset=self.iMapset,
                         env=self.oEnv).strip()
     params = parse_key_val(output, vsep=' ')
     output = RunCommand('g.region',
                         flags='ug',
                         quiet=False,
                         read=True,
                         env=self.oEnv,
                         parse=lambda x: parse_key_val(x, val_type=float),
                         **params)
     cell_ns = (output['n'] - output['s']) / output['rows']
     cell_ew = (output['e'] - output['w']) / output['cols']
     estimate = (cell_ew + cell_ns) / 2.
     self.resolution.SetValue(str(estimate))
     self.params = params
Exemple #25
0
def main():
    app = wx.App()

    dlg = MapsetAccess(parent=None)
    dlg.CenterOnScreen()

    if dlg.ShowModal() == wx.ID_OK:
        ms = dlg.GetMapsets()
        RunCommand("g.mapsets",
                   parent=None,
                   mapset="%s" % ",".join(ms),
                   operation="set")

    dlg.Destroy()
Exemple #26
0
 def _estimateResampling(self):
     output = RunCommand(
         "r.info",
         flags="g",
         quiet=False,
         read=True,
         map=self.iLayer,
         env=self.iEnv,
         parse=parse_key_val,
     )
     if output["datatype"] == "CELL":
         self.resampling.SetStringSelection("nearest")
     else:
         self.resampling.SetStringSelection("bilinear")
Exemple #27
0
def main():
    app = wx.App()

    dlg = MapsetAccess(parent=None)
    dlg.CenterOnScreen()

    if dlg.ShowModal() == wx.ID_OK:
        ms = dlg.GetMapsets()
        RunCommand('g.mapsets',
                   parent=None,
                   mapset='%s' % ','.join(ms),
                   operation='set')

    dlg.Destroy()
Exemple #28
0
 def OnDelete(self, event):
     """Delete layer or mapset"""
     if (self.selected_layer):
         string = self.GetItemText(self.selected_layer)
         self.ChangeEnvironment(self.GetItemText(self.selected_location),
                                self.GetItemText(self.selected_mapset))
         removed = 0
         # TODO: rewrite this that it will tell map type in the dialog
         if (self._confirmDialog(question=_(
                 'Do you really want to delete map <{m}>?').format(
                     m=string),
                                 title=_('Delete map')) == wx.ID_YES):
             label = _("Deleting") + " " + string + " ..."
             self.showNotification.emit(message=label)
             if (self.GetItemText(self.selected_type) == 'vect'):
                 removed = RunCommand('g.remove',
                                      flags='f',
                                      type='vect',
                                      pattern=string)
             elif (self.GetItemText(self.selected_type) == 'rast'):
                 removed = RunCommand('g.remove',
                                      flags='f',
                                      type='rast',
                                      pattern=string)
             else:
                 removed = RunCommand('g.remove',
                                      flags='f',
                                      type='rast3d',
                                      pattern=string)
             if (removed == 0):
                 self.Delete(self.selected_layer)
                 Debug.msg(1, "LAYER " + string + " DELETED")
                 label = "g.remove -f type=" + self.GetItemText(
                     self.selected_type
                 ) + " pattern=" + string + "    -- completed"  # generate this message (command) automatically?
                 self.showNotification.emit(message=label)
         self.RestoreBackup()
Exemple #29
0
    def OnCleaningRun(self, event):
        """Builds options and runs v.clean
        """
        self.GetCmdStrings()

        err = list()
        for p, name in ((self.inmap, _('Name of input vector map')),
                        (self.outmap, _('Name for output vector map')),
                        (self.tools_string, _('Tools')), (self.thresh_string,
                                                          _('Threshold'))):
            if not p:
                err.append(_("'%s' not defined") % name)
        if err:
            GError(_("Some parameters not defined. Operation "
                     "canceled.\n\n%s") % '\n'.join(err),
                   parent=self)
            return

        self.SetStatusText(_("Executing selected cleaning operations..."))
        snum = len(self.toolslines.keys())

        if self.log:
            cmd = [
                self.cmd,
                'input=%s' % self.inmap,
                'output=%s' % self.outmap,
                'tool=%s' % self.tools_string,
                'thres=%s' % self.thresh_string
            ]
            if self.ftype_string:
                cmd.append('type=%s' % self.ftype_string)
            if self.overwrite.IsChecked():
                cmd.append('--overwrite')

            self.log.RunCmd(cmd, onDone=self.OnDone)
            self.parent.Raise()
        else:
            if self.overwrite.IsChecked():
                overwrite = True
            else:
                overwrite = False

            RunCommand(self.cmd,
                       input=self.inmap,
                       output=self.outmap,
                       type=self.ftype_string,
                       tool=self.tools_string,
                       thresh=self.thresh_string,
                       overwrite=overwrite)
 def OnSetButton(self, event=None):
     """Set default region"""
     ret = RunCommand('g.region',
                      flags='sa',
                      n=self.north,
                      s=self.south,
                      e=self.east,
                      w=self.west,
                      nsres=self.nsres,
                      ewres=self.ewres,
                      t=self.top,
                      b=self.bottom,
                      tbres=self.tbres)
     if ret == 0:
         self.Destroy()