def __init__(self, layer, mapfile, maskfile): if not haveGdal: sys.stderr.write(_("Unable to load GDAL Python bindings.\n"\ "WMS layers can not be displayed without the bindings.\n")) self.layer = layer wx.EvtHandler.__init__(self) # thread for d.wms commands self.thread = CmdThread(self) self.Bind(EVT_CMD_DONE, self.OnDataFetched) self.downloading = False self.renderedRegion = None self.updateMap = True self.fetched_data_cmd = None self.cmdStdErr = GStderr(self) self.mapfile = mapfile self.maskfile = maskfile self.tempMap = grass.tempfile() self.dstSize = {} self.Bind(EVT_CMD_OUTPUT, self.OnCmdOutput) self.dataFetched = Signal('RenderWMSMgr.dataFetched') self.updateProgress = Signal('RenderWMSMgr.updateProgress')
def __init__(self, parent, layer, giface): wx.Dialog.__init__(self, parent=parent, title=("Save web service layer as raster map"), id=wx.ID_ANY) self.layer = layer self._giface = giface self.cmd = self.layer.GetCmd() self.thread = CmdThread(self) self.cmdStdErr = GStderr(self) self._createWidgets()
def ComputeNodes(self, activate): """Start/stop snapping mode""" if not haveCtypes: GMessage(parent=self, message=_("Unable to use ctypes. \n") + _("Snapping mode can not be activated.")) return -1 if not activate: if self.tmp_maps.HasTmpVectMap("vnet_snap_points"): self.snapPts.DeleteRenderLayer() self.giface.updateMap.emit(render=False, renderVector=False) if 'cmdThread' in self.snapData: self.snapData['cmdThread'].abort() self.data.SetSnapping(False) self.snapping.emit(evt="deactivated") return -1 self.data.SetSnapping(activate) params, inv_params, flags = self.data.GetParams() if not self.data.InputsErrorMsgs( msg=_("Snapping mode can not be activated."), analysis=None, params=params, inv_params=inv_params, flags=flags, relevant_params=["input", "node_layer"]): return -1 if not self.tmp_maps.HasTmpVectMap("vnet_snap_points"): endStr = _( "Do you really want to activate snapping and overwrite it?") self.snapPts = self.tmp_maps.AddTmpVectMap("vnet_snap_points", endStr) if not self.snapPts: return -1 elif self.snapPts.VectMapState() == 0: dlg = wx.MessageDialog( message=_("Temporary map '%s' was changed outside " + "vector analysis tool.\n" "Do you really want to activate " + "snapping and overwrite it? ") % self.snapPts.GetVectMapName(), caption=_("Overwrite map"), style=wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION | wx.CENTRE) ret = dlg.ShowModal() dlg.Destroy() if ret == wx.ID_NO: self.tmp_maps.DeleteTmpMap(self.snapPts) return -1 self.data.SetSnapping(True) inpFullName = params["input"] inpName, mapSet = inpFullName.split("@") computeNodes = True if "inputMap" not in self.snapData: pass elif inpFullName != self.snapData["inputMap"].GetVectMapName(): self.snapData["inputMap"] = VectMap(None, inpFullName) elif self.snapData["inputMap"].VectMapState() == 1: computeNodes = False # new map needed if computeNodes: if 'cmdThread' not in self.snapData: self.snapData['cmdThread'] = CmdThread(self) else: self.snapData['cmdThread'].abort() cmd = [ "v.to.points", "input=" + params['input'], "output=" + self.snapPts.GetVectMapName(), "use=node", "--overwrite" ] # process GRASS command with argument self.snapData["inputMap"] = VectMap(None, inpFullName) self.snapData["inputMap"].SaveVectMapState() self.Bind(EVT_CMD_DONE, self._onNodesDone) self.snapData['cmdThread'].RunCmd(cmd) self.snapping.emit(evt="computing_points") return 0 # map is already created and up to date for input data else: self.snapPts.AddRenderLayer() self.giface.updateMap.emit(render=True, renderVector=True) self.snapping.emit(evt="computing_points_done") return 1
def __init__(self, parent, web_service, **kwargs): """Show data from capabilities file. Signal: capParsed - this signal is emitted when capabilities file is downloaded (after ConnectToServer method was called) :param parent: parent widget :param web_service: web service to be panel generated for """ wx.Panel.__init__(self, parent=parent, id=wx.ID_ANY) self.parent = parent self.ws = web_service self.capParsed = Signal('WSPanel.capParsed') # stores widgets, which represents parameters/flags of d.wms self.params = {} self.flags = {} self.o_layer_name = '' # stores err output from r.in.wms during getting capabilities self.cmd_err_str = '' # stores selected layer from layer list self.sel_layers = [] # downloaded and parsed data from server successfully? self.is_connected = False # common part of command for r.in.wms -c and d.wms self.ws_cmdl = None # provides information about driver parameters self.drv_info = WMSDriversInfo() self.drv_props = self.drv_info.GetDrvProperties(self.ws) self.ws_drvs = { 'WMS_1.1.1': { 'cmd': [ 'wms_version=1.1.1', 'driver=WMS_GRASS'], 'cap_parser': lambda temp_file: WMSCapabilities( temp_file, '1.1.1'), }, 'WMS_1.3.0': { 'cmd': [ 'wms_version=1.3.0', 'driver=WMS_GRASS'], 'cap_parser': lambda temp_file: WMSCapabilities( temp_file, '1.3.0'), }, 'WMTS': { 'cmd': ['driver=WMTS_GRASS'], 'cap_parser': WMTSCapabilities, }, 'OnEarth': { 'cmd': ['driver=OnEarth_GRASS'], 'cap_parser': OnEarthCapabilities, }} self.cmdStdErr = GStderr(self) self.cmd_thread = CmdThread(self) self.cap_file = grass.tempfile() reqDataBox = StaticBox( parent=self, label=_(" Requested data settings ")) self._nb_sizer = wx.StaticBoxSizer(reqDataBox, wx.VERTICAL) self.notebook = GNotebook( parent=self, style=FN.FNB_FANCY_TABS | FN.FNB_NO_X_BUTTON | FN.FNB_NODRAG) self._requestPage() self._advancedSettsPage() self._layout() self.layerSelected = self.list.layerSelected self.Bind(EVT_CMD_DONE, self.OnCapDownloadDone) self.Bind(EVT_CMD_OUTPUT, self.OnCmdOutput) self.SetMinSize((-1, 300))