Skip to content
Snippets Groups Projects
mapvisualization.py 72.3 KiB
Newer Older
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        sizeX = 1
        sizeY = 50
        if nX > 0:
            s = tsdViews[0].ui.sizeHint().width()
            s = nX * (s + spacing) + margins.left() + margins.right()
            sizeX = s
        if nY > 0 and nX > 0:
                s = tsdViews[0].ui.sizeHint().height()
                s = s + margins.top() + margins.bottom()
                sizeY = s
Benjamin Jakimow's avatar
Benjamin Jakimow committed
            #s = tsdViews[0].ui.sizeHint()
            #s = QSize(nX * (s.width() + spacing) + margins.left() + margins.right(),
            #          s.height() + margins.top() + margins.bottom())
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        #print(sizeX, sizeY)
        self.targetLayout.parentWidget().resize(QSize(sizeX, sizeY))

    def onLocationRequest(self, pt:SpatialPoint, canvas:QgsMapCanvas):
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        self.sigShowProfiles.emit(pt, canvas, "")
    def setSpatialCenter(self, center:SpatialPoint, mapCanvas0=None):
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        Sets the spatial center of all MapCanvases
        :param center: SpatialPoint
        :param mapCanvas0:
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        assert isinstance(center, SpatialPoint)
Benjamin Jakimow's avatar
Benjamin Jakimow committed

        if isinstance(extent, SpatialExtent):
            centerOld = extent.center()
            center = center.toCrs(extent.crs())
            if center != centerOld and isinstance(center, SpatialPoint):
                extent = extent.__copy__()
                extent.setCenter(center)
                self.setSpatialExtent(extent)
    def spatialCenter(self)->SpatialPoint:
        return self.spatialExtent().spatialCenter()
Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def setSpatialExtent(self, extent, mapCanvas0=None):
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        Sets the spatial extent of all MapCanvases
        :param extent: SpatialExtent
        :param mapCanvas0:
        :return:
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        assert isinstance(extent, SpatialExtent)
        extent = extent.toCrs(self.crs())
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        if not isinstance(extent, SpatialExtent) \
            or extent.isEmpty() or not extent.isFinite() \
            or extent.width() <= 0 \
            or extent.height() <= 0 \
            or extent == self.mSpatialExtent:
            return
Benjamin Jakimow's avatar
Benjamin Jakimow committed

Benjamin Jakimow's avatar
Benjamin Jakimow committed
        if self.mSpatialExtent == extent:
            return

        self.mSpatialExtent = extent
        for mapCanvas in self.mapCanvases():
            assert isinstance(mapCanvas, MapCanvas)
        if lastExtent != extent:
            self.sigSpatialExtentChanged.emit(extent)
Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def mapViewDock(self)->MapViewDock:
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        Returns the MapViewDock that controls all MapViews
        :return: MapViewDock
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        return self.mMapViewDock
Benjamin Jakimow's avatar
Benjamin Jakimow committed

Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def setMapBackgroundColor(self, color:QColor):
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        Sets the MapCanvas background color
        :param color: QColor
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        assert isinstance(self.mMapViewDock, MapViewDock)
        self.mMapViewDock.setMapBackgroundColor(color)
Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def mapCanvases(self, mapView=None)->list:
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        Returns MapCanvases
        :param mapView: a MapView to return MapCanvases from only, defaults to None
        :return: [list-of-MapCanvas]
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        if isinstance(mapView, MapView):
            s = ""
        return self.mMapCanvases[:]
Benjamin Jakimow's avatar
Benjamin Jakimow committed

Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def mapViews(self)->list:
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        Returns a list of all mapviews
        :return [list-of-MapViews]:
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        return self.mMapViewDock[:]
Benjamin Jakimow's avatar
Benjamin Jakimow committed

Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def setCrs(self, crs):
        assert isinstance(crs, QgsCoordinateReferenceSystem)
Benjamin Jakimow's avatar
Benjamin Jakimow committed

Benjamin Jakimow's avatar
Benjamin Jakimow committed
        if self.mCRS != crs:
            transform = QgsCoordinateTransform()
            transform.setSourceCrs(self.mCRS)
            transform.setDestinationCrs(crs)
            if transform.isValid() and not transform.isShortCircuited():
                self.mCRS = crs
                for mapCanvas in self.mapCanvases():
                    # print(('STV set CRS {} {}', str(mapCanvas), self.mCRS.description()))
                    mapCanvas.setDestinationCrs(QgsCoordinateReferenceSystem(crs))
                """
                from timeseriesviewer.utils import saveTransform
                if saveTransform(self.mSpatialExtent, self.mCRS, crs):
                    self.mCRS = crs
                    
                else:
                    pass
                """
                self.sigCRSChanged.emit(self.crs())
Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def crs(self)->QgsCoordinateReferenceSystem:
        """
        Returns the QgsCoordinateReferenceSystem
        :return: QgsCoordinateReferenceSystem
        """
        return self.mCRS
Benjamin Jakimow's avatar
Benjamin Jakimow committed

Benjamin Jakimow's avatar
Benjamin Jakimow committed
    def spatialExtent(self)->SpatialExtent:
        """
        Returns the SpatialExtent
        :return: SpatialExtent
        """
Benjamin Jakimow's avatar
Benjamin Jakimow committed

    def navigateToTSD(self, TSD:TimeSeriesDate):
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        """
        Changes the viewport of the scroll window to show the requested TimeSeriesDate
        :param TSD: TimeSeriesDate
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        """
        assert isinstance(TSD, TimeSeriesDate)
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        #get widget related to TSD
        tsdv = self.DVC.tsdView(TSD)
        assert isinstance(self.scrollArea, QScrollArea)
        self.scrollArea.ensureWidgetVisible(tsdv.ui)