예제 #1
0
    def setMapSettings(self, settings):
        """settings: QgsMapSettings (QGIS >= 2.3) or QgsMapRenderer"""
        self.canvas = None
        self.mapSettings = settings

        self.baseExtent = RotatedRect.fromMapSettings(settings)
        self.crs = settings.destinationCrs()
예제 #2
0
    def updateQuads(self, v=None):
        isSimpleMode = self.radioButton_Simple.isChecked()
        if isSimpleMode:
            self.dialog.clearRubberBands()
            return

        apiChanged23 = QGis.QGIS_VERSION_INT >= 20300
        canvas = self.dialog.iface.mapCanvas()
        mapSettings = canvas.mapSettings(
        ) if apiChanged23 else canvas.mapRenderer()

        baseExtent = RotatedRect.fromMapSettings(mapSettings)
        p = {
            "lineEdit_centerX": self.lineEdit_centerX.text(),
            "lineEdit_centerY": self.lineEdit_centerY.text(),
            "lineEdit_rectWidth": self.lineEdit_rectWidth.text(),
            "lineEdit_rectHeight": self.lineEdit_rectHeight.text(),
            "spinBox_Height": self.spinBox_Height.value()
        }

        quadtree = createQuadTree(baseExtent, p)
        if quadtree:
            self.dialog.createRubberBands(baseExtent, quadtree)
            self.dialog.setWindowState(self.windowState() & ~Qt.WindowMinimized
                                       | Qt.WindowActive)
        else:
            self.dialog.clearRubberBands()
예제 #3
0
  def __init__(self, settings, canvas, pluginManager, localBrowsingMode=True):
    self.data = settings
    self.timestamp = datetime.datetime.today().strftime("%Y%m%d%H%M%S")

    # output html file path
    htmlfilename = settings.get("OutputFilename")
    if not htmlfilename:
      htmlfilename = tools.temporaryOutputDir() + "/%s.html" % self.timestamp
    self.htmlfilename = htmlfilename
    self.path_root = os.path.splitext(htmlfilename)[0]
    self.htmlfiletitle = os.path.basename(self.path_root)
    self.title = self.htmlfiletitle

    # load configuration of the template
    self.templateName = settings.get("Template", "")
    templatePath = os.path.join(tools.templateDir(), self.templateName)
    self.templateConfig = tools.getTemplateConfig(templatePath)

    # MapTo3D object
    world = settings.get(ObjectTreeItem.ITEM_WORLD, {})
    baseSize = world.get("lineEdit_BaseSize", def_vals.baseSize)
    verticalExaggeration = world.get("lineEdit_zFactor", def_vals.zExaggeration)
    verticalShift = world.get("lineEdit_zShift", def_vals.zShift)
    self.mapTo3d = MapTo3D(canvas, float(baseSize), float(verticalExaggeration), float(verticalShift))

    self.coordsInWGS84 = world.get("radioButton_WGS84", False)

    self.canvas = canvas
    self.mapSettings = canvas.mapSettings() if apiChanged23 else canvas.mapRenderer()
    self.baseExtent = RotatedRect.fromMapSettings(self.mapSettings)

    self.pluginManager = pluginManager
    self.localBrowsingMode = localBrowsingMode

    self.crs = self.mapSettings.destinationCrs()

    wgs84 = QgsCoordinateReferenceSystem(4326)
    transform = QgsCoordinateTransform(self.crs, wgs84)
    self.wgs84Center = transform.transform(self.baseExtent.center())

    controls = settings.get(ObjectTreeItem.ITEM_CONTROLS, {})
    self.controls = controls.get("comboBox_Controls")
    if not self.controls:
      self.controls = QSettings().value("/Qgis2threejs/lastControls", "OrbitControls.js", type=unicode)

    self.demProvider = None
    self.quadtree = None

    if self.templateConfig.get("type") == "sphere":
      self.exportMode = ExportSettings.SPHERE
      return

    demProperties = settings.get(ObjectTreeItem.ITEM_DEM, {})
    self.demProvider = self.demProviderByLayerId(demProperties["comboBox_DEMLayer"])

    if demProperties.get("radioButton_Simple", False):
      self.exportMode = ExportSettings.PLAIN_SIMPLE
    else:
      self.exportMode = ExportSettings.PLAIN_MULTI_RES
      self.quadtree = createQuadTree(self.baseExtent, demProperties)
예제 #4
0
  def setMapSettings(self, settings):
    """settings: QgsMapSettings (QGIS >= 2.3) or QgsMapRenderer"""
    self.canvas = None
    self.mapSettings = settings

    self.baseExtent = RotatedRect.fromMapSettings(settings)
    self.crs = settings.destinationCrs()
예제 #5
0
  def __init__(self, mapSettings, planeWidth=100, verticalExaggeration=1, verticalShift=0):
    # map canvas
    self.rotation = mapSettings.rotation() if QGis.QGIS_VERSION_INT >= 20700 else 0
    self.mapExtent = RotatedRect.fromMapSettings(mapSettings)

    # 3d
    canvas_size = mapSettings.outputSize()
    self.planeWidth = planeWidth
    self.planeHeight = planeWidth * canvas_size.height() / float(canvas_size.width())

    self.verticalExaggeration = verticalExaggeration
    self.verticalShift = verticalShift

    self.multiplier = planeWidth / self.mapExtent.width()
    self.multiplierZ = self.multiplier * verticalExaggeration
예제 #6
0
    def __init__(self,
                 mapSettings,
                 planeWidth=100,
                 verticalExaggeration=1,
                 verticalShift=0):
        # map canvas
        self.rotation = mapSettings.rotation(
        ) if QGis.QGIS_VERSION_INT >= 20700 else 0
        self.mapExtent = RotatedRect.fromMapSettings(mapSettings)

        # 3d
        canvas_size = mapSettings.outputSize()
        self.planeWidth = planeWidth
        self.planeHeight = planeWidth * canvas_size.height() / float(
            canvas_size.width())

        self.verticalExaggeration = verticalExaggeration
        self.verticalShift = verticalShift

        self.multiplier = planeWidth / self.mapExtent.width()
        self.multiplierZ = self.multiplier * verticalExaggeration
예제 #7
0
  def updateQuads(self, v=None):
    isSimpleMode = self.radioButton_Simple.isChecked()
    if isSimpleMode:
      self.dialog.clearRubberBands()
      return

    apiChanged23 = QGis.QGIS_VERSION_INT >= 20300
    canvas = self.dialog.iface.mapCanvas()
    mapSettings = canvas.mapSettings() if apiChanged23 else canvas.mapRenderer()

    baseExtent = RotatedRect.fromMapSettings(mapSettings)
    p = {"lineEdit_centerX": self.lineEdit_centerX.text(),
         "lineEdit_centerY": self.lineEdit_centerY.text(),
         "lineEdit_rectWidth": self.lineEdit_rectWidth.text(),
         "lineEdit_rectHeight": self.lineEdit_rectHeight.text(),
         "spinBox_Height": self.spinBox_Height.value()}

    quadtree = createQuadTree(baseExtent, p)
    if quadtree:
      self.dialog.createRubberBands(baseExtent, quadtree)
      self.dialog.setWindowState(self.windowState() & ~Qt.WindowMinimized | Qt.WindowActive)
    else:
      self.dialog.clearRubberBands()