def _initGui(self): """setup the user interface""" self.ui = Ui_dataCatalogDlg() self.ui.setupUi(self) #get settings self.s = settings() self.gh = gh.geometryHelper(self.iface) #setup a message bar self.bar = QgsMessageBar() self.bar.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) self.ui.verticalLayout.addWidget(self.bar) #vars self.firstShow = True self.wms = None self.wfs = None self.wmts = None self.wcs = None self.dl = None self.zoek = '' #datamodel self.model = QtGui.QStandardItemModel(self) self.proxyModel = QtGui.QSortFilterProxyModel(self) self.proxyModel.setSourceModel(self.model) self.ui.resultView.setModel(self.proxyModel) #completer self.completer = QtGui.QCompleter(self) self.completerModel = QtGui.QStringListModel(self) self.ui.zoekTxt.setCompleter(self.completer) self.completer.setModel(self.completerModel) self.md = metadata.MDReader(timeout=self.s.timeout, proxyUrl=self.s.proxyUrl) #eventhandlers self.ui.zoekBtn.clicked.connect(self.onZoekClicked) self.ui.addWMSbtn.clicked.connect(self.addWMS) self.ui.addWFSbtn.clicked.connect(self.addWFS) self.ui.addWMTSbtn.clicked.connect(self.addWMTS) self.ui.addWCSbtn.clicked.connect(self.addWCS) self.ui.DLbtn.clicked.connect(lambda: self.openUrl(self.dl)) self.ui.resultView.clicked.connect(self.resultViewClicked) self.ui.modelFilterCbx.currentIndexChanged.connect( self.modelFilterCbxIndexChanged) self.finished.connect(self.clean)
def _initGui(self): """setup the user interface""" self.ui = Ui_dataCatalogDlg() self.ui.setupUi(self) #get settings self.s = settings() self.gh = gh.geometryHelper( self.iface ) #setup a message bar self.bar = QgsMessageBar() self.bar.setSizePolicy( QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed ) self.ui.verticalLayout.addWidget(self.bar) #vars self.firstShow = True self.wms = None self.wfs = None self.wmts = None self.wcs = None self.dl = None self.zoek = '' #datamodel self.model = QtGui.QStandardItemModel(self) self.proxyModel = QtGui.QSortFilterProxyModel(self) self.proxyModel.setSourceModel(self.model) self.ui.resultView.setModel( self.proxyModel ) #completer self.completer = QtGui.QCompleter( self ) self.completerModel = QtGui.QStringListModel(self) self.ui.zoekTxt.setCompleter(self.completer ) self.completer.setModel(self.completerModel ) self.md = metadata.MDReader(timeout=self.s.timeout, proxyUrl=self.s.proxyUrl) #eventhandlers self.ui.zoekBtn.clicked.connect(self.onZoekClicked) self.ui.addWMSbtn.clicked.connect(self.addWMS) self.ui.addWFSbtn.clicked.connect(self.addWFS) self.ui.addWMTSbtn.clicked.connect(self.addWMTS) self.ui.addWCSbtn.clicked.connect(self.addWCS) self.ui.DLbtn.clicked.connect(lambda: self.openUrl(self.dl)) self.ui.resultView.clicked.connect(self.resultViewClicked) self.ui.modelFilterCbx.currentIndexChanged.connect(self.modelFilterCbxIndexChanged) self.finished.connect(self.clean)
class dataCatalog(QtGui.QDialog): def __init__(self, iface): QtGui.QDialog.__init__(self, None) self.setWindowFlags( self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint ) #self.setWindowFlags( self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint) self.iface = iface # initialize locale locale = QtCore.QSettings().value("locale/userLocale", "nl") locale = locale[0:2] localePath = os.path.join(os.path.dirname(__file__), 'i18n', '{}.qm'.format(locale)) if os.path.exists(localePath): self.translator = QtCore.QTranslator() self.translator.load(localePath) if QtCore.qVersion() > '4.3.3': QtCore.QCoreApplication.installTranslator(self.translator) self._initGui() def _initGui(self): """setup the user interface""" self.ui = Ui_dataCatalogDlg() self.ui.setupUi(self) #get settings self.s = settings() self.gh = gh.geometryHelper( self.iface ) #setup a message bar self.bar = QgsMessageBar() self.bar.setSizePolicy( QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed ) self.ui.verticalLayout.addWidget(self.bar) #vars self.firstShow = True self.wms = None self.wfs = None self.wmts = None self.wcs = None self.dl = None self.zoek = '' #datamodel self.model = QtGui.QStandardItemModel(self) self.proxyModel = QtGui.QSortFilterProxyModel(self) self.proxyModel.setSourceModel(self.model) self.ui.resultView.setModel( self.proxyModel ) #completer self.completer = QtGui.QCompleter( self ) self.completerModel = QtGui.QStringListModel(self) self.ui.zoekTxt.setCompleter(self.completer ) self.completer.setModel(self.completerModel ) self.md = metadata.MDReader(timeout=self.s.timeout, proxyUrl=self.s.proxyUrl) #eventhandlers self.ui.zoekBtn.clicked.connect(self.onZoekClicked) self.ui.addWMSbtn.clicked.connect(self.addWMS) self.ui.addWFSbtn.clicked.connect(self.addWFS) self.ui.addWMTSbtn.clicked.connect(self.addWMTS) self.ui.addWCSbtn.clicked.connect(self.addWCS) self.ui.DLbtn.clicked.connect(lambda: self.openUrl(self.dl)) self.ui.resultView.clicked.connect(self.resultViewClicked) self.ui.modelFilterCbx.currentIndexChanged.connect(self.modelFilterCbxIndexChanged) self.finished.connect(self.clean) def _setModel(self, records): self.model.clear() reclist = sorted(records, key=lambda k: k['title']) for rec in reclist: title = QtGui.QStandardItem( rec['title'] ) #0 wms = QtGui.QStandardItem( rec['wms'][1] ) #1 downloadLink = QtGui.QStandardItem(rec['download']) #2 id = QtGui.QStandardItem( rec['uuid'] ) #3 abstract = QtGui.QStandardItem( rec['abstract'] ) #4 wfs = QtGui.QStandardItem( rec['wfs'][1] ) #5 wcs = QtGui.QStandardItem( rec['wcs'][1] ) #6 wmts = QtGui.QStandardItem( rec['wmts'][1] ) #7 ### wmsName = QtGui.QStandardItem( rec['wms'][0] ) #8 wfsName = QtGui.QStandardItem( rec['wfs'][0] ) #9 wcsName = QtGui.QStandardItem( rec['wcs'][0] ) #10 wmtsName = QtGui.QStandardItem( rec['wmts'][0] ) #11 self.model.appendRow([title,wms,downloadLink,id,abstract,wfs,wcs,wmts,wmsName,wfsName,wcsName,wmtsName]) #overwrite def show(self): QtGui.QDialog.show(self) self.setWindowModality(0) if self.firstShow: inet = internet_on( self.s.proxyUrl ) if inet: self.ui.organisatiesCbx.addItems( ['']+ self.md.list_organisations() ) keywords = sorted( self.md.list_suggestionKeyword() ) self.completerModel.setStringList( keywords ) self.bronnen = self.md.list_bronnen() #self.ui.keywordCbx.addItems( ['']+ keywords ) self.ui.typeCbx.addItems( ['']+ [ n[0] for n in self.md.dataTypes] ) self.ui.INSPIREannexCbx.addItems( ['']+ self.md.inspireannex ) self.ui.INSPIREserviceCbx.addItems( ['']+ self.md.inspireServiceTypes ) self.ui.INSPIREthemaCbx.addItems( ['']+ self.md.list_inspire_theme() ) self.firstShow = False else: self.bar.pushMessage( QtCore.QCoreApplication.translate("datacatalog", "Waarschuwing "), QtCore.QCoreApplication.translate("datacatalog", "Kan geen verbing maken met het internet."), level=QgsMessageBar.WARNING, duration=3) #eventhandlers def resultViewClicked(self): if self.ui.resultView.selectedIndexes(): row = self.ui.resultView.selectedIndexes()[0].row() self.wms = self.proxyModel.data( self.proxyModel.index( row, 1) ) self.dl = self.proxyModel.data( self.proxyModel.index( row, 2) ) self.wfs = self.proxyModel.data( self.proxyModel.index( row, 5) ) self.wcs = self.proxyModel.data( self.proxyModel.index( row, 6) ) self.wmts= self.proxyModel.data( self.proxyModel.index( row, 7) ) ## self.wmsLr = self.proxyModel.data( self.proxyModel.index( row, 8) ) self.wfsLr = self.proxyModel.data( self.proxyModel.index( row, 9) ) self.wcsLr = self.proxyModel.data( self.proxyModel.index( row, 10) ) self.wmtsLr = self.proxyModel.data( self.proxyModel.index( row, 11) ) ## title = self.proxyModel.data( self.proxyModel.index( row, 0) ) uuid = self.proxyModel.data( self.proxyModel.index( row, 3) ) abstract = self.proxyModel.data( self.proxyModel.index( row, 4) ) self.ui.descriptionText.setText( """<h3>%s</h3><div>%s</div><br/><br/> <a href='http://www.nationaalgeoregister.nl/geonetwork/srv/search/?uuid=%s'> Bekijk in Nationaal Georegister</a>""" % (title , abstract, uuid )) if self.wms: self.ui.addWMSbtn.setEnabled(1) else: self.ui.addWMSbtn.setEnabled(0) if self.wfs: self.ui.addWFSbtn.setEnabled(1) else: self.ui.addWFSbtn.setEnabled(0) if self.wmts: self.ui.addWMTSbtn.setEnabled(1) else: self.ui.addWMTSbtn.setEnabled(0) if self.wcs: self.ui.addWCSbtn.setEnabled(1) else: self.ui.addWCSbtn.setEnabled(0) if self.dl: self.ui.DLbtn.setEnabled(1) else: self.ui.DLbtn.setEnabled(0) def onZoekClicked(self): self.zoek = self.ui.zoekTxt.currentText() self.search() def modelFilterCbxIndexChanged(self): value = self.ui.modelFilterCbx.currentIndex() if value == 1: self.filterModel(1) elif value == 2: self.filterModel(5) elif value == 3: self.filterModel(2) elif value == 4: self.filterModel(6) elif value == 5: self.filterModel(7) else: self.filterModel() def filterModel(self, col=None): if col != None: self.proxyModel.setFilterKeyColumn(col) expr = QtCore.QRegExp("?*", QtCore.Qt.CaseInsensitive, QtCore.QRegExp.Wildcard ) self.proxyModel.setFilterRegExp(expr) else: self.proxyModel.setFilterRegExp(None) def search(self): try: QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) if self.ui.filterBox.isChecked(): orgName= self.ui.organisatiesCbx.currentText() dataTypes= [ n[1] for n in self.md.dataTypes if n[0] == self.ui.typeCbx.currentText()] if dataTypes != []: dataType= dataTypes[0] else: dataType='' #siteIds = [ n[0] for n in self.bronnen if n[1] == self.ui.bronCbx.currentText() ] #if siteIds != []: siteId= siteIds[0] #else: siteId ='' #keyword = self.ui.keywordCbx.currentText() inspiretheme= self.ui.INSPIREthemaCbx.currentText() inspireannex= self.ui.INSPIREannexCbx.currentText() inspireServiceType= self.ui.INSPIREserviceCbx.currentText() searchResult = metadata.MDdata( self.md.searchAll( self.zoek, orgName, dataType, None, inspiretheme, inspireannex, inspireServiceType)) else: searchResult = metadata.MDdata( self.md.searchAll( self.zoek )) except: self.bar.pushMessage("Error", str( sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=3) return finally: QtGui.QApplication.restoreOverrideCursor() self.ui.countLbl.setText( "Aantal gevonden: %s" % searchResult.count ) self.ui.descriptionText.setText('') self._setModel(searchResult.records) if searchResult.count == 0: self.bar.pushMessage( QtCore.QCoreApplication.translate("datacatalog", "Waarschuwing "), QtCore.QCoreApplication.translate("datacatalog", "Er zijn geen resultaten gevonden voor deze zoekopdracht"), duration=5) def openUrl(self, url): if url: webbrowser.open_new_tab( url.encode("utf-8") ) def addWMS(self): if self.wms == None: return crs = self.gh.getGetMapCrs(self.iface).authid() if crs != 'EPSG:28992' or crs != 'EPSG:3857' or crs != 'EPSG:3043': crs = 'EPSG:28992' try: lyrs = metadata.getWmsLayerNames( self.wms, self.s.proxyUrl ) except: self.bar.pushMessage( "Error", str( sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return if len(lyrs) == 0: self.bar.pushMessage("WMS", QtCore.QCoreApplication.translate("datacatalog", "Kan geen lagen vinden in: %s" % self.wms ), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem(self, "WMS toevoegen", "Kies een laag om toe te voegen", [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle ][0] style = [n[2] for n in lyrs if n[1] == layerTitle ][0] url= self.wms.split('?')[0] if crs != 'EPSG:28992' or crs != 'EPSG:3857' : crs = 'EPSG:28992' wmsUrl = "url=%s&layers=%s&format=image/png&styles=%s&crs=%s" % (url, layerName, style , crs) try: rlayer = QgsRasterLayer(wmsUrl, layerTitle, 'wms') if rlayer.isValid(): QgsMapLayerRegistry.instance().addMapLayer(rlayer) else: self.bar.pushMessage("Error", QtCore.QCoreApplication.translate("datacatalog", "Kan WMS niet laden"), level=QgsMessageBar.CRITICAL, duration=10) except: self.bar.pushMessage("Error", str( sys.exc_info()[1] ), level=QgsMessageBar.CRITICAL, duration=10) return def addWFS(self): if self.wfs == None: return try: lyrs = metadata.getWFSLayerNames( self.wfs, self.s.proxyUrl ) except: self.bar.pushMessage( "Error", str( sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return if len(lyrs) == 0: self.bar.pushMessage("WFS", QtCore.QCoreApplication.translate("datacatalog", "Kan geen lagen vinden in: %s" % self.wfs ), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem(self, QtCore.QCoreApplication.translate("datacatalog", "WFS toevoegen"), QtCore.QCoreApplication.translate("datacatalog", "Kies een laag om toe te voegen"), [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle ][0] crs = [n[2] for n in lyrs if n[1] == layerTitle ][0] url = self.wfs.split('?')[0] if self.ui.wfsBboxchk.isChecked(): extent = self.iface.mapCanvas().extent() minX, minY = self.gh.prjPtFromMapCrs([extent.xMinimum(),extent.yMinimum()], int(crs.split(":")[-1]) ) maxX, maxY = self.gh.prjPtFromMapCrs([extent.xMaximum(),extent.yMaximum()], int(crs.split(":")[-1]) ) bbox = [minX, minY, maxX, maxY] else: bbox = None ###wfsUri = "WFS:{0}|{1}".format(url,layerName) wfsUri = metadata.makeWFSuri( url, layerName, crs, bbox=bbox ) try: vlayer = QgsVectorLayer( wfsUri, layerTitle , "WFS") ###vlayer = QgsVectorLayer( wfsUri, layerTitle , "ogr") QgsMapLayerRegistry.instance().addMapLayer(vlayer) except: self.bar.pushMessage("Error", str( sys.exc_info()[1] ), level=QgsMessageBar.CRITICAL, duration=10) return def addWMTS(self): if self.wmts == None: return try: lyrs = metadata.getWMTSlayersNames( self.wmts, self.s.proxyUrl ) except: self.bar.pushMessage("Error",'Kan niet connecteren met '+ self.wmts, level=QgsMessageBar.CRITICAL, duration=10) return if len(lyrs) == 0: self.bar.pushMessage("WMTS", QtCore.QCoreApplication.translate("datacatalog", "Kan geen lagen vinden in: %s" % self.wmts ), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem(self, "WMTS toevoegen", "Kies een laag om toe te voegen", [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle ][0] matrix = [n[2] for n in lyrs if n[1] == layerTitle ][0] frmt = [n[3] for n in lyrs if n[1] == layerTitle ][0] srs = [n[4] for n in lyrs if n[1] == layerTitle ][0] wmtsUrl= metadata.makeWMTSuri(self.wmts , layerName, matrix, format=frmt, srsname=srs) try: rlayer = QgsRasterLayer(wmtsUrl, layerTitle, 'wms') if rlayer.isValid(): QgsMapLayerRegistry.instance().addMapLayer(rlayer) else: self.bar.pushMessage("Error", QtCore.QCoreApplication.translate("datacatalog", "Kan WMS niet laden"), level=QgsMessageBar.CRITICAL, duration=10) except: self.bar.pushMessage("Error", str( sys.exc_info()[1] ), level=QgsMessageBar.CRITICAL, duration=10) return def addWCS(self): try: QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) lyrs = metadata.getWCSlayerNames( self.wcs, self.s.proxyUrl ) except: self.bar.pushMessage( "Error", str( sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return finally: QtGui.QApplication.restoreOverrideCursor() if len(lyrs) == 0: self.bar.pushMessage("WCS", QtCore.QCoreApplication.translate("datacatalog", "Kan geen lagen vinden in: %s" % self.wcs ), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem(self, "WCS toevoegen", "Kies een laag om toe te voegen", [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle ][0] layerFormat = [n[2] for n in lyrs if n[1] == layerTitle ][0] srs = [n[3] for n in lyrs if n[1] == layerTitle ][0] axis = [n[4] for n in lyrs if n[1] == layerTitle ][0] wcsUri = metadata.makeWCSuri(self.wcs, layerName, srsname=srs, invertAxis=axis ) try: rlayer = QgsRasterLayer( wcsUri, layerTitle , "wcs") if rlayer.isValid(): QgsMapLayerRegistry.instance().addMapLayer(rlayer) if rlayer.bandCount() > 1: rlayer.setDrawingStyle("MultiBandSingleBandGray") else: self.bar.pushMessage("Error", QtCore.QCoreApplication.translate("datacatalog", "Kan WCS niet laden"), level=QgsMessageBar.CRITICAL, duration=10) except: self.bar.pushMessage("Error", str( sys.exc_info()[1] ), level=QgsMessageBar.CRITICAL, duration=10) return def clean(self): self.model.clear() self.wms = None self.wfs = None self.dl = None self.wmts = None self.wcs = None self.ui.zoekTxt.setCurrentIndex(0) self.ui.descriptionText.setText('') self.ui.countLbl.setText( "") self.ui.msgLbl.setText("" ) self.ui.DLbtn.setEnabled(0) self.ui.addWFSbtn.setEnabled(0) self.ui.addWMTSbtn.setEnabled(0) self.ui.addWMSbtn.setEnabled(0) self.ui.addWCSbtn.setEnabled(0) self.ui.modelFilterCbx.setCurrentIndex(0)
class dataCatalog(QtGui.QDialog): def __init__(self, iface): QtGui.QDialog.__init__(self, None) self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint) #self.setWindowFlags( self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint) self.iface = iface # initialize locale locale = QtCore.QSettings().value("locale/userLocale", "nl") locale = locale[0:2] localePath = os.path.join(os.path.dirname(__file__), 'i18n', '{}.qm'.format(locale)) if os.path.exists(localePath): self.translator = QtCore.QTranslator() self.translator.load(localePath) if QtCore.qVersion() > '4.3.3': QtCore.QCoreApplication.installTranslator(self.translator) self._initGui() def _initGui(self): """setup the user interface""" self.ui = Ui_dataCatalogDlg() self.ui.setupUi(self) #get settings self.s = settings() self.gh = gh.geometryHelper(self.iface) #setup a message bar self.bar = QgsMessageBar() self.bar.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) self.ui.verticalLayout.addWidget(self.bar) #vars self.firstShow = True self.wms = None self.wfs = None self.wmts = None self.wcs = None self.dl = None self.zoek = '' #datamodel self.model = QtGui.QStandardItemModel(self) self.proxyModel = QtGui.QSortFilterProxyModel(self) self.proxyModel.setSourceModel(self.model) self.ui.resultView.setModel(self.proxyModel) #completer self.completer = QtGui.QCompleter(self) self.completerModel = QtGui.QStringListModel(self) self.ui.zoekTxt.setCompleter(self.completer) self.completer.setModel(self.completerModel) self.md = metadata.MDReader(timeout=self.s.timeout, proxyUrl=self.s.proxyUrl) #eventhandlers self.ui.zoekBtn.clicked.connect(self.onZoekClicked) self.ui.addWMSbtn.clicked.connect(self.addWMS) self.ui.addWFSbtn.clicked.connect(self.addWFS) self.ui.addWMTSbtn.clicked.connect(self.addWMTS) self.ui.addWCSbtn.clicked.connect(self.addWCS) self.ui.DLbtn.clicked.connect(lambda: self.openUrl(self.dl)) self.ui.resultView.clicked.connect(self.resultViewClicked) self.ui.modelFilterCbx.currentIndexChanged.connect( self.modelFilterCbxIndexChanged) self.finished.connect(self.clean) def _setModel(self, records): self.model.clear() reclist = sorted(records, key=lambda k: k['title']) for rec in reclist: title = QtGui.QStandardItem(rec['title']) #0 wms = QtGui.QStandardItem(rec['wms'][1]) #1 downloadLink = QtGui.QStandardItem(rec['download']) #2 id = QtGui.QStandardItem(rec['uuid']) #3 abstract = QtGui.QStandardItem(rec['abstract']) #4 wfs = QtGui.QStandardItem(rec['wfs'][1]) #5 wcs = QtGui.QStandardItem(rec['wcs'][1]) #6 wmts = QtGui.QStandardItem(rec['wmts'][1]) #7 ### wmsName = QtGui.QStandardItem(rec['wms'][0]) #8 wfsName = QtGui.QStandardItem(rec['wfs'][0]) #9 wcsName = QtGui.QStandardItem(rec['wcs'][0]) #10 wmtsName = QtGui.QStandardItem(rec['wmts'][0]) #11 self.model.appendRow([ title, wms, downloadLink, id, abstract, wfs, wcs, wmts, wmsName, wfsName, wcsName, wmtsName ]) #overwrite def show(self): QtGui.QDialog.show(self) self.setWindowModality(0) if self.firstShow: inet = internet_on(self.s.proxyUrl) if inet: self.ui.organisatiesCbx.addItems([''] + self.md.list_organisations()) keywords = sorted(self.md.list_suggestionKeyword()) self.completerModel.setStringList(keywords) self.bronnen = self.md.list_bronnen() #self.ui.keywordCbx.addItems( ['']+ keywords ) self.ui.typeCbx.addItems([''] + [n[0] for n in self.md.dataTypes]) self.ui.INSPIREannexCbx.addItems([''] + self.md.inspireannex) self.ui.INSPIREserviceCbx.addItems([''] + self.md.inspireServiceTypes) self.ui.INSPIREthemaCbx.addItems([''] + self.md.list_inspire_theme()) self.firstShow = False else: self.bar.pushMessage( QtCore.QCoreApplication.translate("datacatalog", "Waarschuwing "), QtCore.QCoreApplication.translate( "datacatalog", "Kan geen verbing maken met het internet."), level=QgsMessageBar.WARNING, duration=3) #eventhandlers def resultViewClicked(self): if self.ui.resultView.selectedIndexes(): row = self.ui.resultView.selectedIndexes()[0].row() self.wms = self.proxyModel.data(self.proxyModel.index(row, 1)) self.dl = self.proxyModel.data(self.proxyModel.index(row, 2)) self.wfs = self.proxyModel.data(self.proxyModel.index(row, 5)) self.wcs = self.proxyModel.data(self.proxyModel.index(row, 6)) self.wmts = self.proxyModel.data(self.proxyModel.index(row, 7)) ## self.wmsLr = self.proxyModel.data(self.proxyModel.index(row, 8)) self.wfsLr = self.proxyModel.data(self.proxyModel.index(row, 9)) self.wcsLr = self.proxyModel.data(self.proxyModel.index(row, 10)) self.wmtsLr = self.proxyModel.data(self.proxyModel.index(row, 11)) ## title = self.proxyModel.data(self.proxyModel.index(row, 0)) uuid = self.proxyModel.data(self.proxyModel.index(row, 3)) abstract = self.proxyModel.data(self.proxyModel.index(row, 4)) self.ui.descriptionText.setText( """<h3>%s</h3><div>%s</div><br/><br/> <a href='http://www.nationaalgeoregister.nl/geonetwork/srv/search/?uuid=%s'> Bekijk in Nationaal Georegister</a>""" % (title, abstract, uuid)) if self.wms: self.ui.addWMSbtn.setEnabled(1) else: self.ui.addWMSbtn.setEnabled(0) if self.wfs: self.ui.addWFSbtn.setEnabled(1) else: self.ui.addWFSbtn.setEnabled(0) if self.wmts: self.ui.addWMTSbtn.setEnabled(1) else: self.ui.addWMTSbtn.setEnabled(0) if self.wcs: self.ui.addWCSbtn.setEnabled(1) else: self.ui.addWCSbtn.setEnabled(0) if self.dl: self.ui.DLbtn.setEnabled(1) else: self.ui.DLbtn.setEnabled(0) def onZoekClicked(self): self.zoek = self.ui.zoekTxt.currentText() self.search() def modelFilterCbxIndexChanged(self): value = self.ui.modelFilterCbx.currentIndex() if value == 1: self.filterModel(1) elif value == 2: self.filterModel(5) elif value == 3: self.filterModel(2) elif value == 4: self.filterModel(6) elif value == 5: self.filterModel(7) else: self.filterModel() def filterModel(self, col=None): if col != None: self.proxyModel.setFilterKeyColumn(col) expr = QtCore.QRegExp("?*", QtCore.Qt.CaseInsensitive, QtCore.QRegExp.Wildcard) self.proxyModel.setFilterRegExp(expr) else: self.proxyModel.setFilterRegExp(None) def search(self): try: QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) if self.ui.filterBox.isChecked(): orgName = self.ui.organisatiesCbx.currentText() dataTypes = [ n[1] for n in self.md.dataTypes if n[0] == self.ui.typeCbx.currentText() ] if dataTypes != []: dataType = dataTypes[0] else: dataType = '' #siteIds = [ n[0] for n in self.bronnen if n[1] == self.ui.bronCbx.currentText() ] #if siteIds != []: siteId= siteIds[0] #else: siteId ='' #keyword = self.ui.keywordCbx.currentText() inspiretheme = self.ui.INSPIREthemaCbx.currentText() inspireannex = self.ui.INSPIREannexCbx.currentText() inspireServiceType = self.ui.INSPIREserviceCbx.currentText() searchResult = metadata.MDdata( self.md.searchAll(self.zoek, orgName, dataType, None, inspiretheme, inspireannex, inspireServiceType)) else: searchResult = metadata.MDdata(self.md.searchAll(self.zoek)) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=3) return finally: QtGui.QApplication.restoreOverrideCursor() self.ui.countLbl.setText("Aantal gevonden: %s" % searchResult.count) self.ui.descriptionText.setText('') self._setModel(searchResult.records) if searchResult.count == 0: self.bar.pushMessage( QtCore.QCoreApplication.translate("datacatalog", "Waarschuwing "), QtCore.QCoreApplication.translate( "datacatalog", "Er zijn geen resultaten gevonden voor deze zoekopdracht"), duration=5) def openUrl(self, url): if url: webbrowser.open_new_tab(url.encode("utf-8")) def addWMS(self): if self.wms == None: return crs = self.gh.getGetMapCrs(self.iface).authid() if crs != 'EPSG:28992' or crs != 'EPSG:3857' or crs != 'EPSG:3043': crs = 'EPSG:28992' try: lyrs = metadata.getWmsLayerNames(self.wms, self.s.proxyUrl) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return if len(lyrs) == 0: self.bar.pushMessage( "WMS", QtCore.QCoreApplication.translate( "datacatalog", "Kan geen lagen vinden in: %s" % self.wms), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem( self, "WMS toevoegen", "Kies een laag om toe te voegen", [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle][0] style = [n[2] for n in lyrs if n[1] == layerTitle][0] url = self.wms.split('?')[0] if crs != 'EPSG:28992' or crs != 'EPSG:3857': crs = 'EPSG:28992' wmsUrl = "url=%s&layers=%s&format=image/png&styles=%s&crs=%s" % ( url, layerName, style, crs) try: rlayer = QgsRasterLayer(wmsUrl, layerTitle, 'wms') if rlayer.isValid(): QgsMapLayerRegistry.instance().addMapLayer(rlayer) else: self.bar.pushMessage("Error", QtCore.QCoreApplication.translate( "datacatalog", "Kan WMS niet laden"), level=QgsMessageBar.CRITICAL, duration=10) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return def addWFS(self): if self.wfs == None: return try: lyrs = metadata.getWFSLayerNames(self.wfs, self.s.proxyUrl) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return if len(lyrs) == 0: self.bar.pushMessage( "WFS", QtCore.QCoreApplication.translate( "datacatalog", "Kan geen lagen vinden in: %s" % self.wfs), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem( self, QtCore.QCoreApplication.translate("datacatalog", "WFS toevoegen"), QtCore.QCoreApplication.translate( "datacatalog", "Kies een laag om toe te voegen"), [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle][0] crs = [n[2] for n in lyrs if n[1] == layerTitle][0] url = self.wfs.split('?')[0] if self.ui.wfsBboxchk.isChecked(): extent = self.iface.mapCanvas().extent() minX, minY = self.gh.prjPtFromMapCrs( [extent.xMinimum(), extent.yMinimum()], int(crs.split(":")[-1])) maxX, maxY = self.gh.prjPtFromMapCrs( [extent.xMaximum(), extent.yMaximum()], int(crs.split(":")[-1])) bbox = [minX, minY, maxX, maxY] else: bbox = None ###wfsUri = "WFS:{0}|{1}".format(url,layerName) wfsUri = metadata.makeWFSuri(url, layerName, crs, bbox=bbox) try: vlayer = QgsVectorLayer(wfsUri, layerTitle, "WFS") ###vlayer = QgsVectorLayer( wfsUri, layerTitle , "ogr") QgsMapLayerRegistry.instance().addMapLayer(vlayer) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return def addWMTS(self): if self.wmts == None: return try: lyrs = metadata.getWMTSlayersNames(self.wmts, self.s.proxyUrl) except: self.bar.pushMessage("Error", 'Kan niet connecteren met ' + self.wmts, level=QgsMessageBar.CRITICAL, duration=10) return if len(lyrs) == 0: self.bar.pushMessage( "WMTS", QtCore.QCoreApplication.translate( "datacatalog", "Kan geen lagen vinden in: %s" % self.wmts), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem( self, "WMTS toevoegen", "Kies een laag om toe te voegen", [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle][0] matrix = [n[2] for n in lyrs if n[1] == layerTitle][0] frmt = [n[3] for n in lyrs if n[1] == layerTitle][0] srs = [n[4] for n in lyrs if n[1] == layerTitle][0] wmtsUrl = metadata.makeWMTSuri(self.wmts, layerName, matrix, format=frmt, srsname=srs) try: rlayer = QgsRasterLayer(wmtsUrl, layerTitle, 'wms') if rlayer.isValid(): QgsMapLayerRegistry.instance().addMapLayer(rlayer) else: self.bar.pushMessage("Error", QtCore.QCoreApplication.translate( "datacatalog", "Kan WMS niet laden"), level=QgsMessageBar.CRITICAL, duration=10) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return def addWCS(self): try: QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) lyrs = metadata.getWCSlayerNames(self.wcs, self.s.proxyUrl) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return finally: QtGui.QApplication.restoreOverrideCursor() if len(lyrs) == 0: self.bar.pushMessage( "WCS", QtCore.QCoreApplication.translate( "datacatalog", "Kan geen lagen vinden in: %s" % self.wcs), level=QgsMessageBar.WARNING, duration=10) return elif len(lyrs) == 1: layerTitle = lyrs[0][1] else: layerTitle, accept = QtGui.QInputDialog.getItem( self, "WCS toevoegen", "Kies een laag om toe te voegen", [n[1] for n in lyrs], editable=0) if not accept: return layerName = [n[0] for n in lyrs if n[1] == layerTitle][0] layerFormat = [n[2] for n in lyrs if n[1] == layerTitle][0] srs = [n[3] for n in lyrs if n[1] == layerTitle][0] axis = [n[4] for n in lyrs if n[1] == layerTitle][0] wcsUri = metadata.makeWCSuri(self.wcs, layerName, srsname=srs, invertAxis=axis) try: rlayer = QgsRasterLayer(wcsUri, layerTitle, "wcs") if rlayer.isValid(): QgsMapLayerRegistry.instance().addMapLayer(rlayer) if rlayer.bandCount() > 1: rlayer.setDrawingStyle("MultiBandSingleBandGray") else: self.bar.pushMessage("Error", QtCore.QCoreApplication.translate( "datacatalog", "Kan WCS niet laden"), level=QgsMessageBar.CRITICAL, duration=10) except: self.bar.pushMessage("Error", str(sys.exc_info()[1]), level=QgsMessageBar.CRITICAL, duration=10) return def clean(self): self.model.clear() self.wms = None self.wfs = None self.dl = None self.wmts = None self.wcs = None self.ui.zoekTxt.setCurrentIndex(0) self.ui.descriptionText.setText('') self.ui.countLbl.setText("") self.ui.msgLbl.setText("") self.ui.DLbtn.setEnabled(0) self.ui.addWFSbtn.setEnabled(0) self.ui.addWMTSbtn.setEnabled(0) self.ui.addWMSbtn.setEnabled(0) self.ui.addWCSbtn.setEnabled(0) self.ui.modelFilterCbx.setCurrentIndex(0)