class EsriRasterLayer(object): qgsRasterLayer = None connection = None imageSpec = None isUpdating = False @staticmethod def create(connection, imageSpec, srcPath): esriLayer = EsriRasterLayer() esriLayer.connection = connection esriLayer.imageSpec = imageSpec esriLayer.updateQgsRasterLayer(srcPath) return esriLayer @staticmethod def restoreFromQgsLayer(qgsLayer): esriLayer = EsriRasterLayer() esriLayer.qgsRasterLayer = qgsLayer basicUrl = str(qgsLayer.customProperty("arcgiscon_connection_url")) name = qgsLayer.name() username = str( qgsLayer.customProperty("arcgiscon_connection_username")) password = str( qgsLayer.customProperty("arcgiscon_connection_password")) authMethod = int( qgsLayer.customProperty("arcgiscon_connection_authmethod")) esriLayer.connection = Connection(basicUrl, name, username, password, authMethod) extent = str(qgsLayer.customProperty("arcgiscon_connection_extent")) if extent != "": esriLayer.connection.updateBoundingBoxByExtent(json.loads(extent)) return esriLayer def updateQgsRasterLayer(self, srcPath): if self.imageSpec.name != self.connection.name: self.qgsRasterLayer = QgsRasterLayer( srcPath, self.connection.name + " " + self.imageSpec.name) else: self.qgsRasterLayer = QgsRasterLayer(srcPath, self.imageSpec.name) self.updateProperties() def updateProperties(self): self.qgsRasterLayer.setCustomProperty("arcgiscon_connection_url", self.connection.basicUrl) self.qgsRasterLayer.setCustomProperty( "arcgiscon_connection_authmethod", self.connection.authMethod) self.qgsRasterLayer.setCustomProperty("arcgiscon_connection_username", self.connection.username) self.qgsRasterLayer.setCustomProperty("arcgiscon_connection_password", self.connection.password) #extent = json.dumps(self.connection.bbBox) if self.connection.bbBox is not None else "" #extent = self.connection.bbBox if self.connection.bbBox is not None else "" #self.qgsRasterLayer.setCustomProperty("arcgiscon_connection_extent", extent) self.qgsRasterLayer.setDataUrl(self.connection.basicUrl)