def __init__(self, plugin, filepath, title, screenExtent): QgsPluginLayer.__init__( self, FreehandRasterGeoreferencerLayer.LAYER_TYPE, title ) self.plugin = plugin self.iface = plugin.iface self.title = title self.filepath = filepath self.screenExtent = screenExtent self.history = [] # set custom properties self.setCustomProperty("title", title) self.setCustomProperty("filepath", self.filepath) self.setValid(True) self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) # dummy data: real init is done in intializeLayer self.center = QgsPointXY(0, 0) self.rotation = 0.0 self.xScale = 1.0 self.yScale = 1.0 self.error = False self.initializing = False self.initialized = False self.initializeLayer(screenExtent) self._extent = None self.provider = FreehandRasterGeoreferencerLayerProvider(self)
def __init__(self, plugin, filepath, title, screenExtent): QgsPluginLayer.__init__( self, FreehandRasterGeoreferencerLayer.LAYER_TYPE, title) self.plugin = plugin self.iface = plugin.iface self.title = title self.filepath = filepath self.screenExtent = screenExtent self.history = [] # set custom properties self.setCustomProperty("title", title) self.setCustomProperty("filepath", self.filepath) self.setValid(True) self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) # dummy data: real init is done in intializeLayer self.center = QgsPointXY(0, 0) self.rotation = 0.0 self.xScale = 1.0 self.yScale = 1.0 self.error = False self.initializing = False self.initialized = False self.initializeLayer(screenExtent) self._extent = None self.provider = FreehandRasterGeoreferencerLayerProvider(self)
def __init__(self, crs): QgsPluginLayer.__init__(self, AxisLayer.LAYER_TYPE, 'axis plugin layer') self.__msg.connect(self.__print) self.__drawException.connect(self.__raise) self.setCrs(crs) self.setValid(True)
def __init__(self, plugin, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.plugin = plugin self.iface = plugin.iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.credit) # TODO: need to remove self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # create a QgsCoordinateReferenceSystem instance if plugin has no instance yet if plugin.crs3857 is None: plugin.crs3857 = QgsCoordinateReferenceSystem(3857) self.setCrs(plugin.crs3857) if layerDef.bbox: self.setExtent( BoundingBox.degreesToMercatorMeters( layerDef.bbox).toQgsRectangle()) else: self.setExtent( QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) self.setValid(True) self.tiles = None self.useLastZoomForPrint = False self.canvasLastZoom = 0 self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) self.setSmoothRender(LayerDefaultSettings.SMOOTH_RENDER) self.downloader = Downloader(self) self.downloader.userAgent = "QGIS/{0} QuickMapServices Plugin".format( QGis.QGIS_VERSION ) # , self.plugin.VERSION) # not written since QGIS 2.2 self.downloader.DEFAULT_CACHE_EXPIRATION = QSettings().value( "/qgis/defaultTileExpiry", 24, type=int) QObject.connect(self.downloader, SIGNAL("replyFinished(QString, int, int)"), self.networkReplyFinished) # multi-thread rendering self.eventLoop = None QObject.connect(self, SIGNAL("fetchRequest(QStringList)"), self.fetchRequest) if self.iface: QObject.connect(self, SIGNAL("showMessage(QString, int)"), self.showStatusMessageSlot) QObject.connect( self, SIGNAL("showBarMessage(QString, QString, int, int)"), self.showBarMessageSlot)
def __init__(self, plugin, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.plugin = plugin self.iface = plugin.iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 self.tiles = None # set attribution property self.setAttribution(layerDef.attribution) # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.attribution) self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # set crs if plugin.crs3857 is None: # create a QgsCoordinateReferenceSystem instance if plugin has no instance yet plugin.crs3857 = QgsCoordinateReferenceSystem(3857) self.setCrs(plugin.crs3857) # set extent if layerDef.bbox: self.setExtent(BoundingBox.degreesToMercatorMeters(layerDef.bbox).toQgsRectangle()) else: self.setExtent(QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) # set styles self.setTransparency(0) self.setBlendModeByName(self.DEFAULT_BLEND_MODE) self.setSmoothRender(self.DEFAULT_SMOOTH_RENDER) # downloader self.maxConnections = HonestAccess.maxConnections(layerDef.serviceUrl) self.cacheExpiry = QSettings().value("/qgis/defaultTileExpiry", 24, type=int) self.userAgent = "QGIS/{0} TileLayerPlugin/{1}".format(QGis.QGIS_VERSION, self.plugin.VERSION) # will be overwritten in QgsNetworkAccessManager::createRequest() since 2.2 self.downloader = Downloader(self, self.maxConnections, self.cacheExpiry, self.userAgent) # TOS violation warning if HonestAccess.restrictedByTOS(layerDef.serviceUrl): QMessageBox.warning(None, u"{0} - {1}".format(self.tr("TileLayerPlugin"), layerDef.title), self.tr("Access to the service is restricted by the TOS. Please follow the TOS.")) # multi-thread rendering if self.iface: self.statusSignal.connect(self.showStatusMessageSlot) self.messageBarSignal.connect(self.showMessageBarSlot) self.setValid(True)
def __init__(self, iface, olLayerTypeRegistry): QgsPluginLayer.__init__(self, OpenlayersLayer.LAYER_TYPE, "OpenLayers plugin layer") self.setValid(True) self.olLayerTypeRegistry = olLayerTypeRegistry self.layerType = None self.iface = iface self.olWebPage = OLWebPage(self)
def __init__(self, plugin, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.plugin = plugin self.iface = plugin.iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.credit) # TODO: need to remove self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # create a QgsCoordinateReferenceSystem instance if plugin has no instance yet if layerDef.proj is not None: customcrs = QgsCoordinateReferenceSystem() customcrs.createFromProj4(layerDef.proj) else: customcrs = QgsCoordinateReferenceSystem(layerDef.crs) self.setCrs(customcrs) if layerDef.bbox: self.setExtent(BoundingBox.degreesToMercatorMeters(layerDef.bbox).toQgsRectangle()) else: self.setExtent(QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) self.setValid(True) self.tiles = None self.useLastZoomForPrint = False self.canvasLastZoom = 0 self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) self.setSmoothRender(LayerDefaultSettings.SMOOTH_RENDER) # downloader self.downloader = Downloader(self) self.downloader.userAgent = QGISSettings.get_default_user_agent() self.downloader.default_cache_expiration = QGISSettings.get_default_tile_expiry() self.downloader.max_connection = PluginSettings.default_tile_layer_conn_count() #TODO: Move to INI files QObject.connect(self.downloader, SIGNAL("replyFinished(QString, int, int)"), self.networkReplyFinished) #network self.downloadTimeout = QGISSettings.get_default_network_timeout() # multi-thread rendering self.eventLoop = None QObject.connect(self, SIGNAL("fetchRequest(QStringList)"), self.fetchRequest) if self.iface: QObject.connect(self, SIGNAL("showMessage(QString, int)"), self.showStatusMessageSlot) QObject.connect(self, SIGNAL("showBarMessage(QString, QString, int, int)"), self.showBarMessageSlot)
def __init__(self, tiletype, layerName): QgsPluginLayer.__init__(self, QOSMTileLayer.LAYER_TYPE, layerName) self.set_tiletype(tiletype) self.loadedlayers = {} self.actualzoom = None self.set_fixedzoom(None) self.set_maxzoom(None) self.set_autorefresh(False) self.refreshonce = False self.forcedownload = False self.rendererrors = 0 self.setValid(True)
def __init__(self, plugin, layerDef): QgsPluginLayer.__init__(self, IdahoLayer.LAYER_TYPE, layerDef.imageid) self.plugin = plugin self.iface = plugin.iface self.layerDef = layerDef self.tile_manager = TileManager(self, layerDef) self.zoom = 0 self.tile_range = None # set custom properties self.setCustomProperty("service_url", layerDef.service_url) self.setCustomProperty("bucket_name", layerDef.bucket_name) self.setCustomProperty("imageid", layerDef.imageid) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("epsg", layerDef.epsg) self.setCustomProperty("max_connections", layerDef.max_connections) # set crs default to Pseudo Mercator if plugin.crs3857 is None: # create a QgsCoordinateReferenceSystem instance if plugin has no instance yet plugin.crs3857 = QgsCoordinateReferenceSystem(3857) self.setCrs(plugin.crs3857) # set QGIS extent as QgsRectangle if not layerDef.epsg: layerDef.epsg = 4326 if layerDef.epsg == 3857 or layerDef.epsg == 900913: self.setExtent(layerDef.bbox.toQgsRectangle()) else: self.setExtent(BoundingBox.asPseudoMercator(layerDef.bbox, layerDef.epsg).toQgsRectangle()) # set styles self.setTransparency(0) self.setBrightness(0) self.setContrast(1.0) self.setSaturation(1.0) self.setBlendModeByName(self.DEFAULT_BLEND_MODE) self.setSmoothRender(self.DEFAULT_SMOOTH_RENDER) if self.iface: self.statusSignal.connect(self.showStatusMessageSlot) self.messageBarSignal.connect(self.showMessageBarSlot) self.setValid(True)
def __init__(self, plugin, serverName="Qgis2threejs", perspective=False): layer = plugin.iface.activeLayer() title = "[2.5D] " + layer.name() if layer else "" QgsPluginLayer.__init__(self, Qgis2threejsLayer.LAYER_TYPE, title) if layer is None: return self.setValid(True) self.plugin = plugin self.iface = plugin.iface self.objectTypeManager = plugin.objectTypeManager self.pluginManager = plugin.pluginManager self.renderer = Qgis2threejs25DRenderer() #self.id()) self.renderer.setup(self, serverName, perspective) self.renderer.setLayers([self.iface.activeLayer()]) # set custom properties #self.setCustomProperty("title", title) # set extent #self.setExtent(QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) # set styles self.setTransparency(0) self.setBlendModeByName(self.DEFAULT_BLEND_MODE) self.setSmoothRender(self.DEFAULT_SMOOTH_RENDER) # multi-thread if self.iface: self.statusSignal.connect(self.showStatusMessageSlot) self.messageBarSignal.connect(self.showMessageBarSlot) logMessage("Launching Qgis2threejs Renderer...") this_dir = os.path.dirname(QFile.decodeName(__file__)) parent = self.iface.mainWindow() p = QProcess(parent) if os.name == "nt": os.system("start cmd.exe /c {0} -r -n {1}".format(os.path.join(this_dir, "q3drenderer.bat"), serverName)) return cmd = r"C:\Python34\python.exe" else: cmd = "python3" p.start(cmd, [os.path.join(this_dir, "q3dapplication.py"), "-r", "-n", serverName]) if not p.waitForStarted(): logMessage("Cannot launch Qgis2threejs Renderer (code: {0}).".format(p.error()))
def __init__(self, plugin, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.plugin = plugin self.iface = plugin.iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.credit) # TODO: need to remove self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # create a QgsCoordinateReferenceSystem instance if plugin has no instance yet if plugin.crs3857 is None: plugin.crs3857 = QgsCoordinateReferenceSystem(3857) self.setCrs(plugin.crs3857) if layerDef.bbox: self.setExtent(BoundingBox.degreesToMercatorMeters(layerDef.bbox).toQgsRectangle()) else: self.setExtent(QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) self.setValid(True) self.tiles = None self.useLastZoomForPrint = False self.canvasLastZoom = 0 self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) self.setSmoothRender(LayerDefaultSettings.SMOOTH_RENDER) self.downloader = Downloader(self) self.downloader.userAgent = "QGIS/{0} QuickMapServices Plugin".format( QGis.QGIS_VERSION) # , self.plugin.VERSION) # not written since QGIS 2.2 self.downloader.DEFAULT_CACHE_EXPIRATION = QSettings().value("/qgis/defaultTileExpiry", 24, type=int) QObject.connect(self.downloader, SIGNAL("replyFinished(QString, int, int)"), self.networkReplyFinished) # multi-thread rendering self.eventLoop = None QObject.connect(self, SIGNAL("fetchRequest(QStringList)"), self.fetchRequest) if self.iface: QObject.connect(self, SIGNAL("showMessage(QString, int)"), self.showStatusMessageSlot) QObject.connect(self, SIGNAL("showBarMessage(QString, QString, int, int)"), self.showBarMessageSlot)
def __init__(self, plugin, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.plugin = plugin self.iface = plugin.iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.credit) # TODO: need to remove self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # set standard/custom crs self.setCrs(self.CRS_3857) try: crs = None if layerDef.epsg_crs_id is not None: crs = QgsCoordinateReferenceSystem(layerDef.epsg_crs_id, QgsCoordinateReferenceSystem.EpsgCrsId) if layerDef.postgis_crs_id is not None: crs = QgsCoordinateReferenceSystem(layerDef.postgis_crs_id, QgsCoordinateReferenceSystem.PostgisCrsId) if layerDef.custom_proj is not None: # create form proj4 str custom_crs = QgsCoordinateReferenceSystem() custom_crs.createFromProj4(layerDef.custom_proj) # try to search in db searched = custom_crs.findMatchingProj() if searched: crs = QgsCoordinateReferenceSystem(searched, QgsCoordinateReferenceSystem.InternalCrsId) else: # create custom and use it custom_crs.saveAsUserCRS('quickmapservices %s' % layerDef.title) searched = custom_crs.findMatchingProj() if searched: crs = QgsCoordinateReferenceSystem(searched, QgsCoordinateReferenceSystem.InternalCrsId) else: crs = custom_crs if crs: self.setCrs(crs) except: msg = self.tr("Custom crs can't be set for layer {0}!").format(layerDef.title) self.showBarMessage(msg, QgsMessageBar.WARNING, 4) if layerDef.bbox: self.setExtent(BoundingBox.degreesToMercatorMeters(layerDef.bbox).toQgsRectangle()) else: self.setExtent(QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) self.setValid(True) self.tiles = None self.useLastZoomForPrint = False self.canvasLastZoom = 0 self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) self.setSmoothRender(LayerDefaultSettings.SMOOTH_RENDER) self.setGrayscaleRender(LayerDefaultSettings.GRAYSCALE_RENDER) self.setBrigthness(LayerDefaultSettings.BRIGTNESS) self.setContrast(LayerDefaultSettings.CONTRAST) # downloader self.downloader = Downloader(self) self.downloader.userAgent = QGISSettings.get_default_user_agent() self.downloader.default_cache_expiration = QGISSettings.get_default_tile_expiry() self.downloader.max_connection = PluginSettings.default_tile_layer_conn_count() #TODO: Move to INI files QObject.connect(self.downloader, SIGNAL("replyFinished(QString, int, int)"), self.networkReplyFinished) #network self.downloadTimeout = QGISSettings.get_default_network_timeout() # multi-thread rendering self.eventLoop = None QObject.connect(self, SIGNAL("fetchRequest(QStringList)"), self.fetchRequest) if self.iface: QObject.connect(self, SIGNAL("showMessage(QString, int)"), self.showStatusMessageSlot) QObject.connect(self, SIGNAL("showBarMessage(QString, QString, int, int)"), self.showBarMessageSlot)
def __init__(self, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.iface = iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.credit) # TODO: need to remove self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # set standard/custom crs ProjectionHelper.set_tile_layer_proj(self, layerDef.epsg_crs_id, layerDef.postgis_crs_id, layerDef.custom_proj) if layerDef.bbox: self.setExtent( BoundingBox.degreesToMercatorMeters( layerDef.bbox).toQgsRectangle()) else: if self.layerDef.tile_ranges is not None: zmin = sorted(self.layerDef.tile_ranges.keys())[0] tbbox = self.layerDef.tile_ranges[zmin] size = self.layerDef.tsize1 / 2**(zmin - 1) xmin = self.layerDef.originX + tbbox[0] * size xmax = self.layerDef.originX + (tbbox[1] + 1) * size ymin = self.layerDef.originY - (tbbox[3] + 1) * size ymax = self.layerDef.originY - tbbox[2] * size else: xmin = -layerDef.tsize1 ymin = -layerDef.tsize1 xmax = layerDef.tsize1 ymax = layerDef.tsize1 self.setExtent(QgsRectangle( xmin, ymin, xmax, ymax, )) self.setValid(True) self.tiles = None self.useLastZoomForPrint = False self.canvasLastZoom = 0 self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) self.setSmoothRender(LayerDefaultSettings.SMOOTH_RENDER) self.setGrayscaleRender(LayerDefaultSettings.GRAYSCALE_RENDER) self.setBrigthness(LayerDefaultSettings.BRIGTNESS) self.setContrast(LayerDefaultSettings.CONTRAST) # downloader self.downloader = Downloader(self) self.downloader.userAgent = QGISSettings.get_default_user_agent() self.downloader.default_cache_expiration = QGISSettings.get_default_tile_expiry( ) self.downloader.max_connection = PluginSettings.default_tile_layer_conn_count( ) #TODO: Move to INI files self.downloader.replyFinished.connect(self.networkReplyFinished) # QObject.connect(self.downloader, SIGNAL("replyFinished(QString, int, int)"), self.networkReplyFinished) #network self.downloadTimeout = QGISSettings.get_default_network_timeout() # multi-thread rendering self.eventLoop = None self.fetchRequest.connect(self.fetchRequestSlot) # QObject.connect(self, SIGNAL("fetchRequest(QStringList)"), self.fetchRequest) if self.iface: # QObject.connect(self, SIGNAL("showMessage(QString, int)"), self.showStatusMessageSlot) # QObject.connect(self, SIGNAL("showBarMessage(QString, QString, int, int)"), self.showBarMessageSlot) self.showMessage.connect(self.showStatusMessageSlot) self.showBarMessage.connect(self.showBarMessageSlot)
def __init__(self, plugin, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.plugin = plugin self.iface = plugin.iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.credit) # TODO: need to remove self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # set standard/custom crs self.setCrs(self.CRS_3857) try: crs = None if layerDef.epsg_crs_id is not None: crs = QgsCoordinateReferenceSystem( layerDef.epsg_crs_id, QgsCoordinateReferenceSystem.EpsgCrsId) if layerDef.postgis_crs_id is not None: crs = QgsCoordinateReferenceSystem( layerDef.postgis_crs_id, QgsCoordinateReferenceSystem.PostgisCrsId) if layerDef.custom_proj is not None: # create form proj4 str custom_crs = QgsCoordinateReferenceSystem() custom_crs.createFromProj4(layerDef.custom_proj) # try to search in db searched = custom_crs.findMatchingProj() if searched: crs = QgsCoordinateReferenceSystem( searched, QgsCoordinateReferenceSystem.InternalCrsId) else: # create custom and use it custom_crs.saveAsUserCRS('quickmapservices %s' % layerDef.title) searched = custom_crs.findMatchingProj() if searched: crs = QgsCoordinateReferenceSystem( searched, QgsCoordinateReferenceSystem.InternalCrsId) else: crs = custom_crs if crs: self.setCrs(crs) except: msg = self.tr("Custom crs can't be set for layer {0}!").format( layerDef.title) self.showBarMessage(msg, QgsMessageBar.WARNING, 4) if layerDef.bbox: self.setExtent( BoundingBox.degreesToMercatorMeters( layerDef.bbox).toQgsRectangle()) else: self.setExtent( QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) self.setValid(True) self.tiles = None self.useLastZoomForPrint = False self.canvasLastZoom = 0 self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) self.setSmoothRender(LayerDefaultSettings.SMOOTH_RENDER) # downloader self.downloader = Downloader(self) self.downloader.userAgent = QGISSettings.get_default_user_agent() self.downloader.default_cache_expiration = QGISSettings.get_default_tile_expiry( ) self.downloader.max_connection = PluginSettings.default_tile_layer_conn_count( ) #TODO: Move to INI files QObject.connect(self.downloader, SIGNAL("replyFinished(QString, int, int)"), self.networkReplyFinished) #network self.downloadTimeout = QGISSettings.get_default_network_timeout() # multi-thread rendering self.eventLoop = None QObject.connect(self, SIGNAL("fetchRequest(QStringList)"), self.fetchRequest) if self.iface: QObject.connect(self, SIGNAL("showMessage(QString, int)"), self.showStatusMessageSlot) QObject.connect( self, SIGNAL("showBarMessage(QString, QString, int, int)"), self.showBarMessageSlot)
def __init__(self, layerDef, creditVisibility=1): QgsPluginLayer.__init__(self, TileLayer.LAYER_TYPE, layerDef.title) self.iface = iface self.layerDef = layerDef self.creditVisibility = 1 if creditVisibility else 0 # set custom properties self.setCustomProperty("title", layerDef.title) self.setCustomProperty("credit", layerDef.credit) # TODO: need to remove self.setCustomProperty("serviceUrl", layerDef.serviceUrl) self.setCustomProperty("yOriginTop", layerDef.yOriginTop) self.setCustomProperty("zmin", layerDef.zmin) self.setCustomProperty("zmax", layerDef.zmax) if layerDef.bbox: self.setCustomProperty("bbox", layerDef.bbox.toString()) self.setCustomProperty("creditVisibility", self.creditVisibility) # set standard/custom crs ProjectionHelper.set_tile_layer_proj(self, layerDef.epsg_crs_id, layerDef.postgis_crs_id, layerDef.custom_proj) if layerDef.bbox: self.setExtent(BoundingBox.degreesToMercatorMeters(layerDef.bbox).toQgsRectangle()) else: if self.layerDef.tile_ranges is not None: zmin = sorted(self.layerDef.tile_ranges.keys())[0] tbbox = self.layerDef.tile_ranges[zmin] size = self.layerDef.tsize1 / 2**(zmin - 1) xmin = self.layerDef.originX + tbbox[0] * size xmax = self.layerDef.originX + (tbbox[1] + 1) * size ymin = self.layerDef.originY - (tbbox[3] + 1) * size ymax = self.layerDef.originY - tbbox[2] * size else: xmin = -layerDef.tsize1 ymin = -layerDef.tsize1 xmax = layerDef.tsize1 ymax = layerDef.tsize1 self.setExtent( QgsRectangle( xmin, ymin, xmax, ymax, ) ) self.setValid(True) self.tiles = None self.useLastZoomForPrint = False self.canvasLastZoom = 0 self.setTransparency(LayerDefaultSettings.TRANSPARENCY) self.setBlendModeByName(LayerDefaultSettings.BLEND_MODE) self.setSmoothRender(LayerDefaultSettings.SMOOTH_RENDER) self.setGrayscaleRender(LayerDefaultSettings.GRAYSCALE_RENDER) self.setBrigthness(LayerDefaultSettings.BRIGTNESS) self.setContrast(LayerDefaultSettings.CONTRAST) # downloader self.downloader = Downloader(self) self.downloader.userAgent = QGISSettings.get_default_user_agent() self.downloader.default_cache_expiration = QGISSettings.get_default_tile_expiry() self.downloader.max_connection = PluginSettings.default_tile_layer_conn_count() #TODO: Move to INI files self.downloader.replyFinished.connect(self.networkReplyFinished) # QObject.connect(self.downloader, SIGNAL("replyFinished(QString, int, int)"), self.networkReplyFinished) #network self.downloadTimeout = QGISSettings.get_default_network_timeout() # multi-thread rendering self.eventLoop = None self.fetchRequest.connect(self.fetchRequestSlot) # QObject.connect(self, SIGNAL("fetchRequest(QStringList)"), self.fetchRequest) if self.iface: # QObject.connect(self, SIGNAL("showMessage(QString, int)"), self.showStatusMessageSlot) # QObject.connect(self, SIGNAL("showBarMessage(QString, QString, int, int)"), self.showBarMessageSlot) self.showMessage.connect(self.showStatusMessageSlot) self.showBarMessage.connect(self.showBarMessageSlot)