def run(self):
     try:
         os.makedirs(self.folder, exist_ok=True)
         for i, name in enumerate(self.layers):
             if self.isCanceled():
                 return False
             self.setProgress(i * 100 / len(self.layers))
             layer = self.layerFromName(name)
             if self.exportData:
                 layerFilename = os.path.join(self.folder,
                                              layer.name() + ".gpkg")
                 exportLayer(layer, fields, log=self)
             if self.exportMetadata:
                 styleFilename = os.path.join(self.folder,
                                              layer.name() + "_style.zip")
                 saveLayerStyleAsZippedSld(layer, styleFilename)
             if self.exportSymbology:
                 metadataFilename = os.path.join(
                     self.folder,
                     layer.name() + "_metadata.zip")
                 saveMetadata(layer, metadataFilename)
         return True
     except Exception as e:
         self.exception = traceback.format_exc()
         return False
Ejemplo n.º 2
0
 def publishStyle(self, layer):
     styleFilename = tempFilenameInTempFolder(layer.name() + ".zip")
     warnings = saveLayerStyleAsZippedSld(layer, styleFilename)
     for w in warnings:
         self.logWarning(w)
     self.logInfo(QCoreApplication.translate("GeocatBridge", "Style for layer %s exported as zip file to %s")
                  % (layer.name(), styleFilename))
     self._publishStyle(layer.name(), styleFilename)
     return styleFilename
Ejemplo n.º 3
0
    def run(self):
        try:
            os.makedirs(self.folder, exist_ok=True)
            for i, name in enumerate(self.layers):
                if self.isCanceled():
                    return False
                self.setProgress(i * 100 / len(self.layers))
                layer = self.layerFromName(name)
                if self.exportSymbology:
                    styleFilename = os.path.join(self.folder,
                                                 layer.name() + "_style.zip")
                    self.stepStarted.emit(name, SYMBOLOGY)
                    saveLayerStyleAsZippedSld(layer, styleFilename)
                    self.stepFinished.emit(name, SYMBOLOGY)
                else:
                    self.stepSkipped.emit(name, SYMBOLOGY)
                if self.exportData:
                    ext = ".gpkg" if layer.type(
                    ) == layer.VectorLayer else ".tif"
                    layerFilename = os.path.join(self.folder,
                                                 layer.name() + ext)
                    self.stepStarted.emit(name, DATA)
                    exportLayer(layer,
                                self.fields,
                                log=self,
                                force=True,
                                path=layerFilename)
                    self.stepFinished.emit(name, DATA)
                else:
                    self.stepSkipped.emit(name, DATA)
                if self.exportMetadata:
                    metadataFilename = os.path.join(
                        self.folder,
                        layer.name() + "_metadata.zip")
                    self.stepStarted.emit(name, METADATA)
                    saveMetadata(layer, metadataFilename)
                    self.stepFinished.emit(name, METADATA)
                else:
                    self.stepSkipped.emit(name, METADATA)

            return True
        except Exception as e:
            self.exception = traceback.format_exc()
            return False
Ejemplo n.º 4
0
    def run(self):
        try:
            os.makedirs(self.folder, exist_ok=True)
            for i, id_ in enumerate(self.layer_ids):
                if self.isCanceled():
                    return False
                self.setProgress(i * 100 / len(self.layer_ids))
                layer = self.getLayerById(id_)
                name, safe_name = lyr_utils.getLayerTitleAndName(layer)
                if self.export_symbology:
                    style_filename = os.path.join(self.folder,
                                                  safe_name + "_style.zip")
                    self.stepStarted.emit(id_, SYMBOLOGY)
                    saveLayerStyleAsZippedSld(layer, style_filename)
                    self.stepFinished.emit(id_, SYMBOLOGY)
                else:
                    self.stepSkipped.emit(id_, SYMBOLOGY)
                if self.export_data:
                    ext = ".gpkg" if layer.type(
                    ) == layer.VectorLayer else ".tif"
                    layer_filename = os.path.join(self.folder, safe_name + ext)
                    self.stepStarted.emit(id_, DATA)
                    exportLayer(layer,
                                self.field_map[id_],
                                path=layer_filename,
                                force=True,
                                logger=self)
                    self.stepFinished.emit(id_, DATA)
                else:
                    self.stepSkipped.emit(id_, DATA)
                if self.export_metadata:
                    metadata_filename = os.path.join(
                        self.folder, safe_name + "_metadata.zip")
                    self.stepStarted.emit(id_, METADATA)
                    saveMetadata(layer, metadata_filename)
                    self.stepFinished.emit(id_, METADATA)
                else:
                    self.stepSkipped.emit(id_, METADATA)

            return True
        except Exception:
            self.exception = traceback.format_exc()
            return False
Ejemplo n.º 5
0
 def publishStyle(self, layer):
     lyr_title, lyr_name = lyr_utils.getLayerTitleAndName(layer)
     export_layer = lyr_utils.getExportableLayer(layer, lyr_name)
     style_filename = tempFileInSubFolder(lyr_name + ".zip")
     warnings = saveLayerStyleAsZippedSld(export_layer, style_filename)
     for w in warnings:
         self.logWarning(w)
     self.logInfo(f"Style for layer '{layer.name()}' exported as ZIP file to '{style_filename}'")
     self._publishStyle(lyr_name, style_filename)
     self._published_layers.add(layer)
     return style_filename
Ejemplo n.º 6
0
 def publishStyle(self, layer):
     lyr_title, lyr_name = layerUtils.getLayerTitleAndName(layer)
     export_layer = layerUtils.getExportableLayer(layer, lyr_name)
     styleFilename = tempFilenameInTempFolder(lyr_name + ".zip")
     warnings = saveLayerStyleAsZippedSld(export_layer, styleFilename)
     for w in warnings:
         self.logWarning(w)
     self.logInfo(
         QCoreApplication.translate(
             "GeoCat Bridge",
             f"Style for layer '{layer.name()}' exported as ZIP file to '{styleFilename}'"
         ))
     self._publishStyle(lyr_name, styleFilename)
     self._publishedLayers.add(layer)
     return styleFilename
Ejemplo n.º 7
0
 def publishLayer(self, layer, fields=None):
     self.publishStyle(layer)
     styleFilename = tempFilenameInTempFolder(layer.name() + ".zip")
     warnings = saveLayerStyleAsZippedSld(layer, styleFilename)
     for w in warnings:
         self.logWarning(w)
     self.logInfo(
         QCoreApplication.translate(
             "GeocatBridge",
             "Style for layer %s exported as zip file to %s") %
         (layer.name(), styleFilename))
     if layer.type() == layer.VectorLayer:
         if self.storage == self.UPLOAD_DATA:
             filename = exportLayer(layer, fields, log=self)
             self._publishVectorLayerFromFile(filename, layer.name(),
                                              layer.crs().authid(),
                                              styleFilename, layer.name())
         else:
             try:
                 from .servers import allServers
                 db = allServers()[self.postgisdb]
             except KeyError:
                 raise Exception(
                     QCoreApplication.translate(
                         "GeocatBridge",
                         "Cannot find the selected PostGIS database"))
             db.importLayer(layer, fields)
             self._publishVectorLayerFromPostgis(db,
                                                 layer.crs().authid(),
                                                 layer.name(),
                                                 styleFilename,
                                                 layer.name())
     elif layer.type() == layer.RasterLayer:
         filename = exportLayer(layer, fields, log=self)
         self._publishRasterLayer(filename, styleFilename, layer.name(),
                                  layer.name())