def testTripleStoreConnection(self, calledfromotherfunction=False): if self.proxyHost != None and self.ProxyPort != None: proxy = urllib.ProxyHandler({'http': proxyHost}) opener = urllib.build_opener(proxy) urllib.install_opener(opener) sparql = SPARQLWrapper( self.tripleStoreEdit.text(), agent= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11" ) sparql.setQuery("SELECT ?a ?b ?c WHERE { ?a ?b ?c .} LIMIT 1") sparql.setReturnFormat(JSON) print("now sending query") try: results = sparql.query() if not calledfromotherfunction: msgBox = QMessageBox() msgBox.setText("URL depicts a valid SPARQL Endpoint!") msgBox.exec() return True except: msgBox = QMessageBox() msgBox.setText("URL does not depict a valid SPARQL Endpoint!") msgBox.exec() return False
def finished(self, result): if result == True: self.dlg.geoClassListModel.clear() self.dlg.comboBox.setCurrentIndex(0) self.maindlg.currentgraph = self.graph self.dlg.layercount.setText("[" + str(len(self.geoconcepts)) + "]") for geo in self.geoconcepts: item = QStandardItem() item.setData(geo, 1) item.setText(geo[geo.rfind('/') + 1:]) self.dlg.geoClassListModel.appendRow(item) #comp=QCompleter(self.dlg.layerconcepts) #comp.setCompletionMode(QCompleter.PopupCompletion) #comp.setModel(self.dlg.layerconcepts.model()) #self.dlg.layerconcepts.setCompleter(comp) self.dlg.inp_sparql2.setPlainText( self.triplestoreconf[0]["querytemplate"][0]["query"].replace( "%%concept%%", self.geoconcepts[0])) self.dlg.inp_sparql2.columnvars = {} self.maindlg.loadedfromfile = True self.maindlg.justloadingfromfile = False self.loadgraphdlg.close() else: msgBox = QMessageBox() msgBox.setText(self.exception) msgBox.exec() self.progress.close()
def applyCustomSPARQLEndPoint(self): if not self.testTripleStoreConnection(True): return if self.tripleStoreNameEdit.text()=="": msgBox=QMessageBox() msgBox.setWindowTitle("Triple Store Name is missing!") msgBox.setText("Please enter a triple store name") msgBox.exec() return #self.endpoints.append(self.tripleStoreEdit.text()) self.comboBox.addItem(self.tripleStoreNameEdit.text()) curprefixes=[] for i in range(self.prefixList.count()): curprefixes.append(self.prefixList.item(i).text() ) if self.addTripleStore: index=len(self.triplestoreconf) self.tripleStoreChooser.addItem(self.tripleStoreNameEdit.text() ) self.triplestoreconf.append({}) self.triplestoreconf[index]["querytemplate"]=[] self.triplestoreconf[index]["querytemplate"].append({}) self.triplestoreconf[index]["querytemplate"][0]["label"]="Example Query" self.triplestoreconf[index]["querytemplate"][0]["query"]=self.exampleQuery.toPlainText() else: index=self.tripleStoreChooser.currentIndex() self.triplestoreconf[index]={} self.triplestoreconf[index]["endpoint"]=self.tripleStoreEdit.text() self.triplestoreconf[index]["name"]=self.tripleStoreNameEdit.text() self.triplestoreconf[index]["mandatoryvariables"]=[] self.triplestoreconf[index]["mandatoryvariables"].append(self.queryVarEdit.text()) self.triplestoreconf[index]["mandatoryvariables"].append(self.queryVarItemEdit.text()) self.triplestoreconf[index]["prefixes"]=curprefixes self.triplestoreconf[index]["crs"]=self.epsgEdit.text() self.triplestoreconf[index]["active"]=self.activeCheckBox.isChecked() self.addTripleStore=False
def loadTripleStoreConfig(self): if self.tripleStoreChooser.currentIndex() < len(self.triplestoreconf): self.tripleStoreEdit.setText(self.triplestoreconf[ self.tripleStoreChooser.currentIndex()]["endpoint"]) self.tripleStoreNameEdit.setText(self.triplestoreconf[ self.tripleStoreChooser.currentIndex()]["name"]) self.prefixList.clear() msgBox = QMessageBox() msgBox.setWindowTitle("Mandatory variables missing!") msgBox.setText( "The SPARQL query is missing the following mandatory variables: " ) msgBox.exec() for prefix in self.triplestoreconf[ self.tripleStoreChooser.currentIndex()]["prefixes"]: self.prefixList.addItem(prefix) self.prefixList.sortItems() if "active" in self.triplestoreconf[ self.tripleStoreChooser.currentIndex()]: self.activeCheckBox.setChecked(self.triplestoreconf[ self.tripleStoreChooser.currentIndex()]["active"]) if "crs" in self.triplestoreconf[ self.tripleStoreChooser.currentIndex()]: self.epsgEdit.setText( str(self.triplestoreconf[ self.tripleStoreChooser.currentIndex()]["crs"])) else: self.epsgEdit.setText("4326") self.exampleQuery.setPlainText( self.triplestoreconf[self.tripleStoreChooser.currentIndex()] ["querytemplate"][0]["query"])
def closeEvent(self, event): if self.isRecalculating or self.configurationHasChanged: return if self.unsavedChanges: msgBox = QMessageBox() msgBox.setIcon(QMessageBox.Information) msgBox.setWindowTitle(self.tr('Nicht gespeicherte Aenderungen')) msgBox.setText(self.tr('Moechten Sie die Ergebnisse speichern?')) msgBox.setStandardButtons(QMessageBox.Cancel | QMessageBox.No | QMessageBox.Yes) cancelBtn = msgBox.button(QMessageBox.Cancel) cancelBtn.setText(self.tr("Abbrechen")) noBtn = msgBox.button(QMessageBox.No) noBtn.setText(self.tr("Nein")) yesBtn = msgBox.button(QMessageBox.Yes) yesBtn.setText(self.tr("Ja")) msgBox.show() msgBox.exec() if msgBox.clickedButton() == yesBtn: self.onSave() self.drawTool.reset() elif msgBox.clickedButton() == cancelBtn: event.ignore() return elif msgBox.clickedButton() == noBtn: self.drawTool.reset() else: self.drawTool.reset() self.timer.stop()
def finished(self, result): self.progress.close() if self.feasibleConfiguration and self.testConfiguration: msgBox = QMessageBox() msgBox.setStandardButtons(QMessageBox.Yes) msgBox.addButton(QMessageBox.No) msgBox.setWindowTitle("Automatic Detection Successful") msgBox.setText(self.message) if msgBox.exec() != QMessageBox.Yes: return else: self.comboBox.addItem(self.triplestorename) self.tripleStoreChooser.addItem(self.triplestorename) index = len(self.triplestoreconf) self.triplestoreconf.append({}) self.triplestoreconf[index] = self.configuration self.addTripleStore = False self.prefixes.append("") for prefix in self.configuration["prefixes"]: self.prefixes[ index] += "PREFIX " + prefix + ":<" + self.configuration[ "prefixes"][prefix] + ">\n" elif self.feasibleConfiguration: msgBox = QMessageBox() msgBox.setText(self.message) msgBox.setWindowTitle("Automatic Detection Successful") msgBox.exec() else: msgBox = QMessageBox() msgBox.setText(self.message) msgBox.setWindowTitle("Automatic Detection Failed") msgBox.exec() iface.messageBar().pushMessage("Detect Triple Store Configuration", "OK", level=Qgis.Success)
def finished(self, result): if self.geojson == None: msgBox = QMessageBox() msgBox.setText( "The query yielded no results. Therefore no layer will be created!" ) msgBox.exec() return if self.geojson != None and isinstance(self.geojson, int) and not self.allownongeo: msgBox = QMessageBox() msgBox.setText( "The query did not retrieve a geometry result. However, there were " + str(self.geojson) + " non-geometry query results. You can retrieve them by allowing non-geometry queries!" ) msgBox.exec() return self.progress.close() vlayer = QgsVectorLayer( json.dumps(self.geojson, sort_keys=True, indent=4), "unicorn_" + self.filename, "ogr") print(vlayer.isValid()) QgsProject.instance().addMapLayer(vlayer) canvas = iface.mapCanvas() canvas.setExtent(vlayer.extent()) iface.messageBar().pushMessage("Add layer", "OK", level=Qgis.Success)
def open_copyright_message(dialog: QDialog): """Display a window to bring a reminder of the OSM copyrights.""" def read_copyright(): open_webpage('https://www.openstreetmap.org/copyright') set_setting("copyright_dialog", "OpenStreetMap") def know_copyright(): set_setting("copyright_dialog", "OpenStreetMap") if not get_setting("copyright_dialog"): message = QMessageBox(dialog) text = tr( 'OpenStreetMap® is open data, licensed under the' ' Open Data Commons Open Database License (ODbL) ' 'by the OpenStreetMap Foundation.' ) + '\n' text += tr( 'The Foundation requires that you use the credit ' '“© OpenStreetMap contributors” on any product using OSM data.' ) + '\n' text += tr( 'You should read https://www.openstreetmap.org/copyright' ) message.setText(text) message.setIcon(QMessageBox.Question) no_button = QPushButton(tr('I understand the copyrights, access to the plugin'), message) yes_button = QPushButton(tr('I want to read the copyrights'), message) message.addButton(no_button, QMessageBox.NoRole) message.addButton(yes_button, QMessageBox.YesRole) yes_button.clicked.connect(read_copyright) no_button.clicked.connect(know_copyright) message.exec()
def showError(): msgBox = QMessageBox() msgBox.setIcon(QMessageBox.Information) msgBox.setWindowTitle(shortMessage) msgBox.setText(longMessage) msgBox.setStandardButtons(QMessageBox.Ok) msgBox.show() msgBox.exec()
def getClassesFromLabel(self, comboBox): viewlist = [] resultlist = [] label = self.conceptSearchEdit.text() if label == "": return language = "en" results = {} self.searchResult.clear() query = "" position = self.tripleStoreEdit.currentIndex() if self.tripleStoreEdit.currentIndex() > len(self.triplestoreconf): if self.findProperty.isChecked(): self.addVocab[self.addVocab.keys()[ position - len(self.triplestoreconf)]]["source"]["properties"] viewlist = {k: v for k, v in d.iteritems() if label in k} else: self.addVocab[self.addVocab.keys()[ position - len(self.triplestoreconf)]]["source"]["classes"] viewlist = {k: v for k, v in d.iteritems() if label in k} for res in viewlist: item = QListWidgetItem() item.setData(1, val) item.setText(key) self.searchResult.addItem(item) else: if self.findProperty.isChecked(): if "propertyfromlabelquery" in self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]: query = self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]["propertyfromlabelquery"].replace( "%%label%%", label) else: if "classfromlabelquery" in self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]: query = self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]["classfromlabelquery"].replace("%%label%%", label) if query == "": msgBox = QMessageBox() msgBox.setText( "No search query specified for this triplestore") msgBox.exec() return self.qtask = SearchTask( "Searching classes/properties for " + label + " in " + self.triplestoreconf[self.tripleStoreEdit.currentIndex() + 1]["endpoint"], self.triplestoreconf[self.tripleStoreEdit.currentIndex() + 1]["endpoint"], query, self.triplestoreconf, self.findProperty, self.tripleStoreEdit, self.searchResult, self.prefixes, label, language, None) QgsApplication.taskManager().addTask(self.qtask) return viewlist
def create_unicorn_layer(self): endpointIndex = self.dlg.comboBox.currentIndex() # SPARQL query #print(self.loadedfromfile) # query query = self.dlg.inp_sparql2.toPlainText() if self.loadedfromfile: curindex = self.dlg.proxyModel.mapToSource( self.dlg.geoClassList.selectionModel().currentIndex()) if curindex != None and self.dlg.geoClassListModel.itemFromIndex( curindex) != None: concept = self.dlg.geoClassListModel.itemFromIndex( curindex).data(1) else: concept = "http://www.opengis.net/ont/geosparql#Feature" geojson = self.getGeoJSONFromGeoConcept(self.currentgraph, concept) vlayer = QgsVectorLayer( json.dumps(geojson, sort_keys=True, indent=4), "unicorn_" + self.dlg.inp_label.text(), "ogr") print(vlayer.isValid()) QgsProject.instance().addMapLayer(vlayer) canvas = iface.mapCanvas() canvas.setExtent(vlayer.extent()) iface.messageBar().pushMessage("Add layer", "OK", level=Qgis.Success) #iface.messageBar().pushMessage("Error", "An error occured", level=Qgis.Critical) #self.dlg.close() return else: endpoint_url = self.triplestoreconf[endpointIndex]["endpoint"] missingmandvars = [] for mandvar in self.triplestoreconf[endpointIndex][ "mandatoryvariables"]: if mandvar not in query: missingmandvars.append("?" + mandvar) if missingmandvars != [] and not self.dlg.allownongeo.isChecked(): msgBox = QMessageBox() msgBox.setWindowTitle("Mandatory variables missing!") msgBox.setText( "The SPARQL query is missing the following mandatory variables: " + str(missingmandvars)) msgBox.exec() progress = QProgressDialog( "Querying layer from " + endpoint_url + "...", "Abort", 0, 0, self.dlg) progress.setWindowModality(Qt.WindowModal) progress.setCancelButton(None) progress.show() self.qtask = QueryLayerTask( "Querying QGIS Layer from " + endpoint_url, endpoint_url, "".join(self.prefixes[endpointIndex]) + query, self.triplestoreconf[endpointIndex], self.dlg.allownongeo.isChecked(), self.dlg.inp_label.text(), progress) QgsApplication.taskManager().addTask(self.qtask)
def geocode(self): try: nominatimurl = self.nominatimurl.format( **{'address': self.geocodeSearch.text()}) self.networkrequest(nominatimurl) except Exception as e: msgBox = QMessageBox() msgBox.setWindowTitle("Mandatory variables missing!") msgBox.setText(str(e)) msgBox.exec()
def details_message_box(error, more_details): msgBox = QMessageBox() msgBox.setWindowTitle("AcATaMa - Error handler") msgBox.setText("<i>{}</i>".format(error)) msgBox.setInformativeText("If you consider this as an error of AcATaMa, report it in " "<a href='https://github.com/SMByC/AcATaMa/issues'>issue tracker</a>") msgBox.setDetailedText(more_details) msgBox.setTextFormat(Qt.RichText) msgBox.setStandardButtons(QMessageBox.Ok) msgBox.exec() del msgBox
def __init__(self, column, row, triplestoreconf, interlinkOrEnrich, table, fieldname, layer, valuemap): super(QDialog, self).__init__() self.setupUi(self) self.currentcol = column self.currentrow = row self.table = table self.fieldname = fieldname self.triplestoreconf = triplestoreconf self.interlinkOrEnrich = interlinkOrEnrich self.valuemap = None if self.table.item(row, column) != None and self.table.item( row, column).data(1) != None: self.valuemap = json.loads(self.table.item(row, column).data(1)) msgBox = QMessageBox() msgBox.setText(str(self.valuemap)) msgBox.exec() self.queryedit.zoomIn(4) self.queryhighlight = SPARQLHighlighter(self.queryedit) if self.table.item(row, column) != None and self.table.item( row, column).data(2) != None and self.table.item( row, column).data(2) != "ValueMap{}": self.queryedit.setPlainText(self.table.item(row, column).data(2)) else: self.queryedit.setPlainText( "SELECT ?item\n WHERE {\n ?item ?rel %%" + fieldname + "%% . \n}") for triplestore in self.triplestoreconf: if not "File" == triplestore["name"]: self.tripleStoreEdit.addItem(triplestore["name"]) while self.valmaptable.rowCount() > 0: self.valmaptable.removeRow(0) row = 0 self.valmaptable.setColumnCount(2) self.valmaptable.setHorizontalHeaderLabels(["From", "To"]) if self.valuemap != None: for key in self.valuemap: row = self.valmaptable.rowCount() self.valmaptable.insertRow(row) item = QTableWidgetItem(key) item2 = QTableWidgetItem(self.valuemap[key]) self.valmaptable.setItem(row, 0, item) self.valmaptable.setItem(row, 1, item2) toaddset = {"All"} for f in layer.getFeatures(): toaddset.add(f.attribute(fieldname)) for item in toaddset: self.cbox.addItem(str(item)) self.findMappingButton.clicked.connect( self.createValueMappingSearchDialog) self.addMappingButton.clicked.connect(self.addMappingToTable) self.deleteRowButton.clicked.connect(self.deleteSelectedRow) self.applyButton.clicked.connect(self.applyMapping)
def setBBOXExtentQuery(self): if len(QgsProject.instance().layerTreeRoot().children()) > 0: self.mts_layer = QgsProject.instance().layerTreeRoot().children()[ self.chooseBBOXLayer.currentIndex()].layer() self.layerExtentOrBBOX = True self.setBBOXInQuery() self.close() else: msgBox = QMessageBox() msgBox.setWindowTitle("No layer loaded in QGIS!") msgBox.setText( "No layer has been loaded in QGIS to get an extent from!") msgBox.exec()
def addNewLayerToTripleStore(self): #ttlstring=self.layerToTTLString(layer) queryString = "INSERT DATA { GRAPH <http://example.com/> { " + self.ttlstring + " } }" sparql = SPARQLWrapper(self.tripleStoreURLEdit.text()) sparql.setHTTPAuth(BASIC) if self.usernameEdit.text() != "" and self.passwordEdit.text() != "": sparql.setCredentials(self.usernameEdit.text(), self.passwordEdit.text()) sparql.setQuery(queryString) sparql.method = 'POST' results = sparql.query() msgBox = QMessageBox() msgBox.setWindowTitle("SPARQL UPDATE Status") msgBox.setText(str(results.response.read())) msgBox.exec()
def on_success(r): self.show_results() if not self.settings.show_result_layer_info: return msg_box = QMessageBox(self.ui) msg_box.setText( 'Die Ergebnislayer wurden dem QGIS-Layerbaum ' 'in der Gruppe "Projektwirkung" hinzugefügt. Nur der' ' oberste Ergebnislayer ist aktiviert.\n\n' 'Um die anderen Ergebnisse anzuzeigen, ' 'aktivieren Sie sie bitte manuell im Layerbaum.\n') check = QCheckBox('nicht wieder anzeigen') msg_box.setCheckBox(check) msg_box.exec() if check.isChecked(): self.settings.show_result_layer_info = False
def createVarInputDialog(self): hasVectorLayer=False layers = QgsProject.instance().layerTreeRoot().children() for layer in layers: if layer.layer().type() == QgsMapLayer.VectorLayer: hasVectorLayer=True if hasVectorLayer==False: msgBox=QMessageBox() msgBox.setWindowTitle("No vector layer loaded") msgBox.setText("No vector layer has been loaded in QGIS to create a query variable from.") msgBox.exec() return self.interlinkdialog = VarInputDialog(self,self,self.columnvars) self.interlinkdialog.setMinimumSize(650, 120) self.interlinkdialog.setWindowTitle("Select Column as Variable") self.interlinkdialog.exec_()
def restoreFactory(self): __location__ = os.path.realpath( os.path.join(os.getcwd(), os.path.dirname(__file__))) with open(os.path.join(__location__, 'triplestoreconf.json'), 'r') as myfile: data = myfile.read() self.triplestoreconf = json.loads(data) self.tripleStoreChooser.clear() for item in self.triplestoreconf: self.tripleStoreChooser.addItem(item["name"]) self.writeConfiguration() msgBox = QMessageBox() msgBox.setWindowTitle("Triple Store Settings Reset!") msgBox.setText("Triple store settings have been reset to default!") msgBox.exec() return
def applyMapping(self): resmap = {} for row in range(self.valmaptable.rowCount()): fromm = self.valmaptable.item(row, 0).text() to = self.valmaptable.item(row, 1).text() resmap[fromm] = to msgBox = QMessageBox() msgBox.setText(str(resmap)) msgBox.exec() item = QTableWidgetItem("ValueMap{}") item.setData(1, str(json.dumps(resmap))) if "SELECT ?item\n WHERE {\n ?item ?rel %%" + self.fieldname + "%% . \n}" != self.queryedit.toPlainText( ): item.setData(2, self.queryedit.toPlainText()) item.setData(3, self.tripleStoreEdit.currentText()) self.table.setItem(self.currentrow, self.currentcol, item) self.close() return resmap
def verification_remove_preset(self, item: QListWidgetItem, name: str): """Verification of the removal a preset.""" validate_delete = QMessageBox( QMessageBox.Warning, tr('Confirm preset deletion'), tr('Are you sure you want to delete the preset \'{}\'?'.format( name)), QMessageBox.Yes | QMessageBox.Cancel, self.dialog) ok = validate_delete.exec() if ok == QMessageBox.Yes: self.remove_preset(item, name)
def veureInfo(self): if self.info is not None: box = QMessageBox(self) box.setWindowTitle('Info del mapa simbòlic') txt = '<table width="600">' params = self.info.split('\n') for param in params: linea = param.strip() if linea.endswith(':'): linea += ' ---' txt += '<tr><td><nobr>· {}</nobr></td></tr>'.format(linea) txt += '</table>' box.setTextFormat(Qt.RichText) box.setText("Paràmetres d'agregació de dades:") box.setInformativeText(txt) box.setIcon(QMessageBox.Information) box.setStandardButtons(QMessageBox.Ok) box.setDefaultButton(QMessageBox.Ok) box.exec()
def verification_delete_query(self, row: int): """Delete a query in the preset""" name = self.list_queries.item(row).text() validate_delete = QMessageBox( QMessageBox.Warning, tr('Confirm query deletion'), tr('Are you sure you want to delete the query \'{}\'?'.format(name)), QMessageBox.Yes | QMessageBox.Cancel, self ) ok = validate_delete.exec() if ok == QMessageBox.Yes: self.delete_query(row)
def finished(self, result): self.progress.close() if self.feasibleConfiguration and self.testConfiguration: msgBox=QMessageBox() msgBox.setStandardButtons(QMessageBox.Yes) msgBox.addButton(QMessageBox.No) msgBox.setWindowTitle("Automatic Detection Successful") msgBox.setText(self.message) if msgBox.exec()!=QMessageBox.Yes: return else: self.comboBox.addItem(self.triplestorename) if self.tripleStoreChooser!=None: self.tripleStoreChooser.addItem(self.triplestorename) index=len(self.triplestoreconf) self.triplestoreconf.append({}) self.triplestoreconf[index]=self.configuration self.addTripleStore=False self.prefixes.append("") for prefix in self.configuration["prefixes"]: self.prefixes[index]+="PREFIX "+prefix+":<"+self.configuration["prefixes"][prefix]+">\n" if self.permanentAdd!=None and self.permanentAdd: __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) f = open(os.path.join(__location__, 'triplestoreconf_personal.json'), "w") f.write(json.dumps(self.triplestoreconf,indent=2)) f.close() if self.parentdialog!=None: self.parentdialog.close() elif self.feasibleConfiguration: msgBox=QMessageBox() msgBox.setText(self.message) msgBox.setWindowTitle("Automatic Detection Successful") msgBox.exec() else: msgBox=QMessageBox() msgBox.setText(self.message) msgBox.setWindowTitle("Automatic Detection Failed") msgBox.exec() iface.messageBar().pushMessage("Detect Triple Store Configuration", "OK", level=Qgis.Success)
def onRemoveParameterSet(self): currParamset = self.fieldParamSet.currentText() # No action if there is no parameter set specified if currParamset == '': return # Standard set cannot be deleted if currParamset == self.paramHandler.defaultSet: QMessageBox.critical(self, self.tr('Parameterset loeschen'), self.tr('Standardparameterset kann nicht geloescht werden.'), QMessageBox.Ok) return # Ask before removing msgBox = QMessageBox() msgBox.setIcon(QMessageBox.Information) msgBox.setWindowTitle(self.tr('Parameterset loeschen')) msgBox.setText(self.tr('Moechten Sie das Parameterset wirklich loeschen?')) msgBox.setStandardButtons(QMessageBox.No | QMessageBox.Yes) noBtn = msgBox.button(QMessageBox.No) noBtn.setText(self.tr("Nein")) yesBtn = msgBox.button(QMessageBox.Yes) yesBtn.setText(self.tr("Ja")) msgBox.show() msgBox.exec() if msgBox.clickedButton() == yesBtn: success = self.paramHandler.removeParameterSet(currParamset) if not success: QMessageBox.critical(self, self.tr('Parameterset loeschen'), self.tr('Ein Fehler ist aufgetreten. Parameterset kann nicht geloescht werden.'), QMessageBox.Ok) else: # Set default set self.paramHandler.setParameterSet(self.paramHandler.defaultSet) # Update drop down list to remove set self.fillParametersetList() # Fill in values of default set self.fillInValues() # Deactivate / Activate status of field HMKran depending on # point type of start point self.updateHMKran(self.projectHandler.A_type)
def applyVar(self): layers = QgsProject.instance().layerTreeRoot().children() index=self.chooseLayer.currentIndex() layer = layers[index].layer() layername=self.chooseLayer.currentText() fieldname=self.chooseField.currentText() if layer.featureCount()==0: msgBox=QMessageBox() msgBox.setText("The layer column does not contain any features, therefore no query variable will be created!") msgBox.exec() self.close() return if self.varNameEdit.text()!="": varname="?_"+self.varNameEdit.text() else: varname="?_"+layername.replace(" ","")+"_"+fieldname.replace(" ","") self.inputfield.insertPlainText(varname) queryinsert="VALUES "+varname+" {" attlist={""} for f in layer.getFeatures(): attlist.add(f[fieldname]) for att in attlist: if att!="": if self.varType.currentText()=="URI" or (self.varType.currentText()=="Automatic" and att.startswith("http")): query+="<"+att+">" elif self.varType.currentText()=="Integer" or self.varType.currentText()=="Double": query+=att elif self.varType.currentText()=="Date": query+="\""+att+"\"^^xsd:date" elif self.varType.currentText()=="String" or self.varType.currentText()=="Automatic": queryinsert+="\""+att+"\"" if self.isLabelLabel.isChecked(): queryinsert+="@"+self.labelLang.text() queryinsert+=" " queryinsert+="}" self.columnvars[varname]=queryinsert self.close()
def finished(self, result): counter = 0 if self.sortedatt != None: for att in self.sortedatt: if att[1] < 1: continue if att[0] in self.labels: item = QListWidgetItem() item.setText(self.labels[att[0]] + " (" + str(att[1]) + "%)") item.setData(1, self.urilist[att[0]]) self.searchResult.addItem(item) counter += 1 else: item = QListWidgetItem() item.setText(att[0] + " (" + str(att[1]) + "%)") item.setData(1, self.urilist[att[0]]) self.searchResult.addItem(item) else: msgBox = QMessageBox() msgBox.setText( "The enrichment search query did not yield any results!") msgBox.exec() self.progress.close()
def finished(self, result): if self.query == "": msgBox = QMessageBox() msgBox.setWindowTitle("No search query specified") msgBox.setText("No search query specified for this triplestore") msgBox.exec() return if "SELECT" in self.query: if len(self.results["results"]) == 0 or len( self.results["results"]["bindings"]) == 0: msgBox = QMessageBox() msgBox.setWindowTitle("Empty search result") msgBox.setText("The search yielded no results") msgBox.exec() return for res in self.results["results"]["bindings"]: item = QListWidgetItem() item.setData(1, str(res["class"]["value"])) if "label" in res: item.setText( str(res["label"]["value"] + " (" + res["class"]["value"] + ")")) else: item.setText(str(res["class"]["value"])) self.searchResult.addItem(item) else: i = 0 for result in self.results: item = QListWidgetItem() item.setData(1, self.qids[i]) item.setText(str(self.results[result])) self.searchResult.addItem(item) i += 1 iface.messageBar().pushMessage("Searched for concepts in", "OK", level=Qgis.Success)
def getClassesFromLabel(self, comboBox): viewlist = [] resultlist = [] label = self.conceptSearchEdit.text() if label == "": return language = "en" results = {} self.searchResult.clear() query = "" position = self.tripleStoreEdit.currentIndex() if self.tripleStoreEdit.currentIndex() > len(self.triplestoreconf): if self.findProperty.isChecked(): self.addVocab[self.addVocab.keys()[ position - len(self.triplestoreconf)]]["source"]["properties"] viewlist = {k: v for k, v in d.iteritems() if label in k} else: self.addVocab[self.addVocab.keys()[ position - len(self.triplestoreconf)]]["source"]["classes"] viewlist = {k: v for k, v in d.iteritems() if label in k} for res in viewlist: item = QListWidgetItem() item.setData(1, val) item.setText(key) self.searchResult.addItem(item) else: if self.findProperty.isChecked(): if "propertyfromlabelquery" in self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]: query = self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]["propertyfromlabelquery"].replace( "%%label%%", label) else: if "classfromlabelquery" in self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]: query = self.triplestoreconf[ self.tripleStoreEdit.currentIndex() + 1]["classfromlabelquery"].replace("%%label%%", label) if query == "": msgBox = QMessageBox() msgBox.setText( "No search query specified for this triplestore") msgBox.exec() return if "SELECT" in query: query = query.replace("%%label%%", label).replace("%%language%%", language) sparql = SPARQLWrapper( self.triplestoreconf[self.tripleStoreEdit.currentIndex() + 1]["endpoint"], agent= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11" ) #msgBox=QMessageBox() #msgBox.setText(query+" - "+self.triplestoreconf[self.tripleStoreEdit.currentIndex()+1]["endpoint"]) #msgBox.exec() sparql.setQuery( self.prefixes[self.tripleStoreEdit.currentIndex() + 1] + query) sparql.setReturnFormat(JSON) results = sparql.query().convert() #msgBox=QMessageBox() #msgBox.setText(str(results)) #msgBox.exec() if len(results["results"]) == 0: msgBox = QMessageBox() msgBox.setText("The search yielded no results") msgBox.exec() return for res in results["results"]["bindings"]: item = QListWidgetItem() item.setData(1, str(res["class"]["value"])) if "label" in res: item.setText( str(res["label"]["value"] + " (" + res["class"]["value"] + ")")) else: item.setText(str(res["class"]["value"])) self.searchResult.addItem(item) else: myResponse = json.loads(requests.get(query).text) qids = [] for ent in myResponse["search"]: qid = ent["concepturi"] if "http://www.wikidata.org/entity/" in qid and self.findProperty.isChecked( ): qid = "http://www.wikidata.org/prop/direct/" + ent["id"] elif "http://www.wikidata.org/wiki/" in qid and self.findConcept.isChecked( ): qid = "http://www.wikidata.org/entity/" + ent["id"] qids.append(qid) label = ent["label"] + " (" + ent["id"] + ") " if "description" in ent: label += "[" + ent["description"] + "]" results[qid] = label i = 0 for result in results: item = QListWidgetItem() item.setData(1, qids[i]) item.setText(str(results[result])) self.searchResult.addItem(item) i += 1 return viewlist
def enrichLayerProcess(self): layers = QgsProject.instance().layerTreeRoot().children() selectedLayerIndex = self.dlg.chooseLayerEnrich.currentIndex() self.enrichLayer = layers[selectedLayerIndex].layer().clone() attlist = {} itemlist = [] propertylist = [] excludelist = [] resultmap = {} self.dlg.enrichTableResult.clear() self.dlg.enrichTableResult.setRowCount(0) self.dlg.enrichTableResult.setColumnCount( self.dlg.enrichTable.rowCount()) fieldnames = [] for row in range(self.dlg.enrichTable.rowCount()): fieldnames.append(self.dlg.enrichTable.item(row, 0).text()) self.dlg.enrichTableResult.setHorizontalHeaderLabels(fieldnames) self.enrichLayer.startEditing() for row in range(self.dlg.enrichTable.rowCount()): idfield = self.dlg.enrichTable.cellWidget(row, 5).currentText() idprop = self.dlg.enrichTable.item(row, 6).text() if idprop == None or idprop == "": msgBox = QMessageBox() msgBox.setText( "ID Property has not been specified for column " + str(self.dlg.enrichTable.item(row, 0).text())) msgBox.exec() return item = self.dlg.enrichTable.item(row, 0).text() propertyy = self.dlg.enrichTable.item(row, 1) triplestoreurl = "" if self.dlg.enrichTable.item(row, 2) != None: triplestoreurl = self.dlg.enrichTable.item(row, 2).text() print(self.dlg.enrichTable.item(row, 2).text()) strategy = self.dlg.enrichTable.cellWidget(row, 3).currentText() content = "" if self.dlg.enrichTable.cellWidget(row, 4) != None: content = self.dlg.enrichTable.cellWidget(row, 4).currentText() if item != idfield: propertylist.append(self.dlg.enrichTable.item(row, 1)) if strategy == "Exclude": excludelist.append(row) if strategy != "No Enrichment" and propertyy != None: progress = QProgressDialog( "Enriching column " + self.dlg.enrichTable.item(row, 0).text(), "Abort", 0, 0, self.dlg) progress.setWindowModality(Qt.WindowModal) progress.setCancelButton(None) self.qtask = EnrichmentQueryTask( "Enriching column: " + self.dlg.enrichTable.item(row, 0).text(), triplestoreurl, self.enrichLayer, strategy, self.dlg.enrichTable.item(row, 8).text(), row, len(self.enrichLayer.fields()), self.dlg.enrichTable.item(row, 0).text(), self.dlg.enrichTable, self.dlg.enrichTableResult, idfield, idprop, self.dlg.enrichTable.item(row, 1), content, progress) QgsApplication.taskManager().addTask(self.qtask) else: rowww = 0 for f in self.enrichLayer.getFeatures(): if rowww >= self.dlg.enrichTableResult.rowCount(): self.dlg.enrichTableResult.insertRow(rowww) #if item in f: newitem = QTableWidgetItem(str(f[item])) self.dlg.enrichTableResult.setItem(rowww, row, newitem) #if ";" in str(newitem): # newitem.setBackground(QColor.red) print(str(newitem)) rowww += 1 self.enrichLayer.commitChanges() row += 1 iface.vectorLayerTools().stopEditing(self.enrichLayer) self.enrichLayer.dataProvider().deleteAttributes(excludelist) self.enrichLayer.updateFields() self.dlg.enrichTable.hide() self.dlg.enrichTableResult.show() self.dlg.startEnrichment.setText("Enrichment Configuration") self.dlg.startEnrichment.clicked.disconnect() self.dlg.startEnrichment.clicked.connect(self.dlg.showConfigTable) self.dlg.addEnrichedLayerRowButton.setEnabled(False) return self.enrichLayer