def updateQuads(self, v=None): isValid = True try: c = map(float, [self.lineEdit_xmin.text(), self.lineEdit_ymin.text(), self.lineEdit_xmax.text(), self.lineEdit_ymax.text()]) except: isValid = False if isValid: # create quad rubber bands rect = QgsRectangle(c[0], c[1], c[2], c[3]) quadtree = QuadTree(self.dialog.iface.mapCanvas().extent()) quadtree.buildTreeByRect(rect, self.spinBox_Height.value()) self.dialog.createRubberBands(quadtree.quads(), rect.center()) self.dialog.setWindowState(self.windowState() & ~Qt.WindowMinimized | Qt.WindowActive) else: self.dialog.clearRubberBands()
def createQuadTree(extent, p): """ args: p -- demProperties """ try: cx, cy, w, h = map(float, [p["lineEdit_centerX"], p["lineEdit_centerY"], p["lineEdit_rectWidth"], p["lineEdit_rectHeight"]]) except ValueError: return None # normalize c = extent.normalizePoint(cx, cy) hw = 0.5 * w / extent.width() hh = 0.5 * h / extent.height() quadtree = QuadTree() if not quadtree.buildTreeByRect(QgsRectangle(c.x() - hw, c.y() - hh, c.x() + hw, c.y() + hh), p["spinBox_Height"]): return None return quadtree