def SetParams(self, params, flags): changed_params = {} for p, v in six.iteritems(params): if p == "analysis" and v not in self.an_props.used_an: continue if p == "input": mapName, mapSet = ParseMapStr(v) v = mapName + "@" + mapSet if p in self.params: if isinstance(v, str): v = v.strip() self.params[p] = v changed_params[p] = v changed_flags = {} for p, v in six.iteritems(flags): if p in self.flags: self.flags[p] = v changed_flags[p] = v self.parametersChanged.emit( method="SetParams", kwargs={"changed_params": changed_params, "changed_flags": changed_flags}, ) return changed_params, changed_flags
def _runTurnsAn(self, analysis, output, params, flags, catPts): # Creates part of cmd fro analysis cmdParams = [analysis] cmdParams.extend(self._setInputParams(analysis, params, flags)) cmdParams.append("output=" + output) cats = {} for cat_name, pts_coor in six.iteritems(catPts): for coor in pts_coor: cat_num = str( GetNearestNodeCat( e=coor[0], n=coor[1], field=int( params["turn_cat_layer"], tresh=params["max_dist"]), vectMap=params["input"])) if cat_num < 0: continue if cat_name in cats: cats[cat_name].append(cat_num) else: cats[cat_name] = [cat_num] for cat_name, cat_nums in six.iteritems(cats): cmdParams.append(cat_name + "=" + ",".join(cat_nums)) self.tmpTurnAn = AddTmpMapAnalysisMsg( "vnet_tunr_an_tmp", self.tmp_maps) if not self.tmpTurnAn: return False # create and run commands which goes to analysis thread mapName, mapSet = ParseMapStr(self.tmpTurnAn.GetVectMapName()) cmdCopy = [ "g.copy", "vector=%s,%s" % (params['input'], mapName), "--overwrite", ] cmdParams.append("input=" + self.tmpTurnAn.GetVectMapName()) ret, msg, err = RunCommand('g.copy', getErrorMsg=True, vector="%s,%s" % (params['input'], mapName), read=True, overwrite=True) self._updateTtbByGlobalCosts(self.tmpTurnAn.GetVectMapName(), int(params["turn_layer"])) self._setCmdForSpecificAn(cmdParams) cmdParams.append("-t") self._prepareCmd(cmdParams) self.goutput.RunCmd(command=cmdParams, onDone=self._runTurnsAnDone)
def CreateTttb(self, params): outputMap = params["output"] mapName, mapSet = ParseMapStr(outputMap) if mapSet != grass.gisenv()["MAPSET"]: GMessage(parent=self, message=_("Map can be created only in current mapset")) return False existsMap = grass.find_file(name=mapName, element="vector", mapset=grass.gisenv()["MAPSET"]) if existsMap["name"]: dlg = wx.MessageDialog( parent=self.guiparent, message=_("Vector map %s already exists. " + "Do you want to overwrite it?") % (existsMap["fullname"]), caption=_("Overwrite vector map"), style=wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION | wx.CENTRE, ) ret = dlg.ShowModal() dlg.Destroy() if ret == wx.ID_NO: return False cmdTtb = [ "v.net.turntable", "input=" + params["input"], "output=" + params["output"], "arc_layer=" + params["arc_layer"], "turn_layer=" + params["turn_layer"], "turn_cat_layer=" + params["turn_cat_layer"], "--overwrite", ] self.goutput.RunCmd(command=cmdTtb, onDone=self._createTtbDone) return True
def _vnetPathRunAn(self, analysis, output, params, flags, catPts): """Called when analysis is run for v.net.path module""" if self.pts_data.GetPointsCount() < 1: return False cats = self.data.GetAnalysisProperties()["cmdParams"]["cats"] # Creates part of cmd fro analysis cmdParams = [analysis] cmdParams.extend(self._setInputParams(analysis, params, flags)) cmdParams.append("output=" + output) cmdPts = [] for cat in cats: if len(catPts[cat[0]]) < 1: # TODO GMessage(message=_("Please choose '%s' and '%s' point.") % (cats[0][1], cats[1][1])) return False cmdPts.append(catPts[cat[0]][0]) resId = 1 inpPoints = str(resId) + " " + str(cmdPts[0][0]) + " " + str( cmdPts[0][1]) + " " + str(cmdPts[1][0]) + " " + str(cmdPts[1][1]) self.coordsTmpFile = grass.tempfile() coordsTmpFileOpened = open(self.coordsTmpFile, 'w') coordsTmpFileOpened.write(inpPoints) coordsTmpFileOpened.close() if flags["t"]: cmdParams.append("-t") self.tmpTurnAn = AddTmpMapAnalysisMsg("vnet_tunr_an_tmp", self.tmp_maps) if not self.tmpTurnAn: return False mapName, mapSet = ParseMapStr(self.tmpTurnAn.GetVectMapName()) cmdCopy = [ "g.copy", "vector=%s,%s" % (params["input"], mapName), "--overwrite", ] cmdParams.append("input=" + self.tmpTurnAn.GetVectMapName()) ret, msg, err = RunCommand('g.copy', getErrorMsg=True, vector="%s,%s" % (params['input'], mapName), read=True, overwrite=True) self._updateTtbByGlobalCosts(self.tmpTurnAn.GetVectMapName(), int(params["turn_layer"])) # self._prepareCmd(cmdCopy) #self.goutput.RunCmd(command = cmdCopy) else: cmdParams.append("input=" + params["input"]) cmdParams.append("file=" + self.coordsTmpFile) cmdParams.append("dmax=" + str(params["max_dist"])) cmdParams.append("--overwrite") self._prepareCmd(cmd=cmdParams) if flags["t"]: self.goutput.RunCmd(command=cmdParams, onDone=self._vnetPathRunTurnsAnDone) else: self.goutput.RunCmd(command=cmdParams, onDone=self._vnetPathRunAnDone)
def SaveTmpLayer(self, layer_name): """Permanently saves temporary map of analysis result""" msg = _("Vector map with analysis result does not exist.") if not hasattr(self.results["vect_map"], "GetVectMapName"): GMessage(parent=self.guiparent, message=msg) return mapToAdd = self.results["vect_map"].GetVectMapName() mapToAddEx = grass.find_file(name=mapToAdd, element='vector', mapset=grass.gisenv()['MAPSET']) if not mapToAddEx["name"]: GMessage(parent=self.guiparent, message=msg) return addedMap = layer_name mapName, mapSet = ParseMapStr(addedMap) if mapSet != grass.gisenv()['MAPSET']: GMessage( parent=self.guiparent, message=_("Map can be saved only to currently set mapset")) return existsMap = grass.find_file(name=mapName, element='vector', mapset=grass.gisenv()['MAPSET']) if existsMap["name"]: dlg = wx.MessageDialog(parent=self.guiparent, message=_("Vector map %s already exists. " + "Do you want to overwrite it?") % (existsMap["fullname"]), caption=_("Overwrite vector map"), style=wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION | wx.CENTRE) ret = dlg.ShowModal() if ret == wx.ID_NO: dlg.Destroy() return dlg.Destroy() RunCommand("g.copy", overwrite=True, vector=[self.results["vect_map"].GetVectMapName(), mapName]) if len(self.giface.GetLayerList().GetLayersByName(mapName)) == 0: # TODO: get rid of insert cmd, cmd_colors = self.vnet_data.GetLayerStyle() cmd.insert(0, 'd.vect') cmd.append('map=%s' % mapName) self.giface.GetLayerList().AddLayer(ltype="vector", name=mapName, cmd=cmd, checked=True) if cmd_colors: layerStyleVnetColors = cmdlist_to_tuple(cmd_colors) RunCommand(layerStyleVnetColors[0], **layerStyleVnetColors[1]) else: self.giface.updateMap.emit(render=True, renderVector=True)