<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/env python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from grass.script.core import *
from query_ui import Ui_Form
import os

apppath = os.path.abspath(os.path.dirname(sys.argv[0]))

class QueryGrass(QWidget, Ui_Form):
    def __init__(self):
        QWidget.__init__(self)
        self.setupUi(self)
        self.value = 0
        self.value2 = 0
        self.vector = self.VectorList()
        self.raster = self.RasterList()
        vect = len(self.vector)
        rast = len(self.raster)
        numrow = max(vect,rast)
        self.tableWidget.setColumnCount(2)
        self.tableWidget.setRowCount(numrow)
        self.tableWidget.setEditTriggers(QTableWidget.NoEditTriggers)
        for i in range(rast):
            item = QTableWidgetItem(raster[i])
            item.setTextAlignment(Qt.AlignCenter)
            item.setCheckState(Qt.Unchecked)
            self.tableWidget.setItem(i, 0, item)
        for i in range(vect):
            item = QTableWidgetItem(vector[i])
            item.setTextAlignment(Qt.AlignCenter)
            item.setCheckState(Qt.Unchecked)
            self.tableWidget.setItem(i, 1, item)
        self.connect(self.update, SIGNAL("clicked()"),self.aggiorna)
        self.connect(self.getlisttoquery, SIGNAL("clicked()"),self.getrasterstate)
        self.connect(self.getlisttoquery, SIGNAL("clicked()"),self.getvectorstate)


    def setLonValue(self, value):
        self.value = value

    def setLatValue(self, value2):
        self.value2 = value2

    def aggiorna(self):
        newlon = str(self.value)
        newlat = str(self.value2)
        self.longitude.setText(newlon)
        self.latitude.setText(newlat)

    def getrasterstate(self):
        raster = self.raster
        rast = len(raster)
        rastertoquery = []
        valori = []
        newlon = str(self.value)
        newlat = str(self.value2)
        lonlat = str(newlon)+' '+str(newlat)
        coordsfile = apppath+'/lonlatfile'
        f = open(coordsfile, "w")
        f.write(lonlat)
        f.flush()
        f.close
        c = read_command('m.proj', input=coordsfile, flags='i') 
        lonlat = parse_key_val(c,'\t')
        lonlat = str(lonlat)
        lonlat = lonlat.replace('{','')
        lonlat = lonlat.replace('}','')
        lonlat = lonlat.replace("'",'')
        lonlat = lonlat.replace(':','')
        lonlat = lonlat.replace('|',' ')
        lonlat = lonlat.split(' ')
        lonlat = str(lonlat[0])+','+str(lonlat[1])
        htmlquery = []
        html = """&lt;TABLE cellpadding="4" style="border: 1px solid \
        000000; border-collapse: collapse;" border="1"&gt;&lt;TR&gt;&lt;TD&gt;Layer&lt;/TD&gt;\
        &lt;TD&gt;Values&lt;/TD&gt;"""
        htmlquery.append(html)
        for i in range(rast):
            cell = self.tableWidget.item(i, 0)
            if cell.checkState() == 2:
                s = read_command('r.what', input=cell.text(), east_north=lonlat) 
                attr = str(s)
                attr = attr.replace("|",' ')
                attr = attr.replace('\n',' ')
                attr = attr.split(':')
                attr = str(attr)
                attr = attr.replace("'",'')
                attr = attr.replace('"','')
                attr = attr.replace('[','')
                attr = attr.replace(']','')
                results = str(cell.text())+'  : '+attr
                htmlvalue = '&lt;TR&gt;&lt;TD&gt;%s&lt;/TD&gt;&lt;TD&gt;%s&lt;/TD&gt;' % (cell.text() ,attr)
                htmlquery.append(htmlvalue)
                rastertoquery.append(results)
        htmlend = """&lt;/TR&gt;&lt;/TABLE&gt;"""
        htmlquery.append(htmlend)
        rastertoquery = str(rastertoquery)
        rastertoquery = rastertoquery.replace("'",'')
        rastertoquery = rastertoquery.split(',')
        rastertoquery = str(rastertoquery)
        rastertoquery = rastertoquery.replace('[','')
        rastertoquery = rastertoquery.replace(']','')
        htmlquery = str(htmlquery)
        htmlquery = htmlquery.replace("', u'",'')
        htmlquery = htmlquery.replace("']",'')
        htmlquery = htmlquery.replace("['",'')
        htmlquery = htmlquery.replace("', '",'')
        self.QueryResultsRaster.setText(htmlquery)
        print rastertoquery

    def getvectorstate(self):
        vector = self.vector
        vect = len(vector)
        vectortoquery = []
        newlon = str(self.value)
        newlat = str(self.value2)
        lonlat = str(newlon)+' '+str(newlat)
        coordsfile = apppath+'/lonlatfile'
        f = open(coordsfile, "w")
        f.write(lonlat)
        f.flush()
        f.close
        c = read_command('m.proj', input=coordsfile, flags='i') 
        lonlat = parse_key_val(c,'\t')
        lonlat = str(lonlat)
        lonlat = lonlat.replace('{','')
        lonlat = lonlat.replace('}','')
        lonlat = lonlat.replace("'",'')
        lonlat = lonlat.replace(':','')
        lonlat = lonlat.replace('|',' ')
        lonlat = lonlat.split(' ')
        lonlat = str(lonlat[0])+','+str(lonlat[1])
        htmlquery = []
        html = """&lt;TABLE cellpadding="4" style="border: 1px solid \
        000000; border-collapse: collapse;" border="1"&gt;&lt;TR&gt;\
        &lt;TD&gt;Layer&lt;/TD&gt;&lt;TD&gt;Values&lt;/TD&gt;"""
        htmlquery.append(html)
        for i in range(vect):
            cell = self.tableWidget.item(i, 1)
            if cell.checkState() == 2:
                s = read_command('v.what', map=cell.text(), east_north=lonlat)
                attr = parse_key_val(s,':')
                attr = str(attr)
                attr = attr.replace('{','')
                attr = attr.replace('}','')
                attr = attr.replace("'",'')
                attr = attr.replace(': None','')
                htmlvalue = '&lt;TR&gt;&lt;TD&gt;%s&lt;/TD&gt;&lt;TD&gt;%s&lt;/TD&gt;' % (cell.text() ,attr)
                htmlquery.append(htmlvalue)
        htmlend = """&lt;/TR&gt;&lt;/TABLE&gt;"""
        htmlquery.append(htmlend)
        htmlquery = str(htmlquery)
        htmlquery = htmlquery.replace("', u'",'')
        htmlquery = htmlquery.replace("']",'')
        htmlquery = htmlquery.replace("['",'')
        htmlquery = htmlquery.replace("', '",'')
        htmlquery = htmlquery.replace(",",'&lt;BR&gt;')
        self.QueryResultsVector.setText(str(htmlquery))

    def VectorList(self):
        global vector
        v = list_strings('vect')
        vector = []
        for i in v:
            vname = i.split('@', 2)[0]
            vector.append(vname)
        vector.sort()
        return vector

    def RasterList(self):
        global raster
        r = list_strings('rast')
        raster = []
        for i in r:
            rname = i.split('@', 2)[0]
            raster.append(rname)
        raster.sort()
        return raster

    def RegionList(self):
        global region
        rg = list_strings('region')
        region = []
        for i in rg:
            rgname = i.split('@', 2)[0]
            region.append(rgname)
        region.sort()
        return region</pre></body></html>