Example #1
0
    def save_y_values(self):

        if not self.tableWidget.rowCount():
            return False

        csv_string = 'parameter,values\n'

        for value in self.tab:
            csv_string += str(value) + '\n'

        last_directory = get_last_input_path()
        # noinspection PyArgumentList
        output_file = QFileDialog.getSaveFileName(
            parent=self,
            caption=tr('Select file'),
            directory=last_directory,
            filter='CSV (*.csv)')

        if output_file:
            path = dirname(output_file)
            set_last_input_path(path)

            fh = open(output_file, 'w')
            fh.write(csv_string)
            fh.close()
            return True
Example #2
0
    def save_table(self):

        if not self.tableWidget.rowCount():
            return False

        csv_string = 'parameter,values\n'

        for i in range(self.tableWidget.rowCount()):
            item_param = self.tableWidget.item(i, 0)
            item_value = self.tableWidget.item(i, 1)
            csv_string += \
                str(item_param.text()) + ',' + item_value.text() + '\n'

        last_directory = get_last_input_path()

        # noinspection PyArgumentList
        output_file = QFileDialog.getSaveFileName(
            parent=self,
            caption=tr('Select file'),
            directory=last_directory,
            filter='CSV (*.csv)')

        if output_file:
            path = dirname(output_file)
            set_last_input_path(path)

            fh = open(output_file, 'w')
            fh.write(csv_string)
            fh.close()
            return True
Example #3
0
def import_layer_from_csv(parent,
                          csv_path,
                          layer_name,
                          iface,
                          longitude_field='lon',
                          latitude_field='lat',
                          delimiter=',',
                          quote='"',
                          lines_to_skip_count=0,
                          wkt_field=None,
                          save_as_shp=False,
                          dest_shp=None,
                          zoom_to_layer=True,
                          has_geom=True):
    url = QUrl.fromLocalFile(csv_path)
    url.addQueryItem('type', 'csv')
    if has_geom:
        if wkt_field is not None:
            url.addQueryItem('wktField', wkt_field)
        else:
            url.addQueryItem('xField', longitude_field)
            url.addQueryItem('yField', latitude_field)
        url.addQueryItem('spatialIndex', 'no')
        url.addQueryItem('crs', 'epsg:4326')
    url.addQueryItem('subsetIndex', 'no')
    url.addQueryItem('watchFile', 'no')
    url.addQueryItem('delimiter', delimiter)
    url.addQueryItem('quote', quote)
    url.addQueryItem('skipLines', str(lines_to_skip_count))
    url.addQueryItem('trimFields', 'yes')
    layer_uri = str(url.toEncoded())
    layer = QgsVectorLayer(layer_uri, layer_name, "delimitedtext")
    if save_as_shp:
        dest_filename = dest_shp or QFileDialog.getSaveFileName(
            parent, 'Save loss shapefile as...', os.path.expanduser("~"),
            'Shapefiles (*.shp)')
        if dest_filename:
            if dest_filename[-4:] != ".shp":
                dest_filename += ".shp"
        else:
            return
        result = save_layer_as_shapefile(layer, dest_filename)
        if result != QgsVectorFileWriter.NoError:
            raise RuntimeError('Could not save shapefile')
        layer = QgsVectorLayer(dest_filename, layer_name, 'ogr')
    if layer.isValid():
        QgsMapLayerRegistry.instance().addMapLayer(layer)
        iface.setActiveLayer(layer)
        if zoom_to_layer:
            iface.zoomToActiveLayer()
    else:
        msg = 'Unable to load layer'
        log_msg(msg, level='C', message_bar=iface.messageBar())
        return None
    return layer
Example #4
0
    def exportText(self):
        projFolder = self.settings.value('projFolder')
        if self.settings.value('profileTextExport') == '.txt':
            exportFile = QFileDialog.getSaveFileName(
                directory=projFolder, filter='Text files(*.txt)')
            exportFile = toUnicode(exportFile)
            if self.profiles and exportFile:
                f = open(exportFile, 'w')
                if self.dlg.batchChecker.checkState() == 0:
                    plotTool().exportToTxt(self.profiles, f)

                elif self.dlg.batchChecker.checkState() == 2:
                    layer = self.dlg.layerCombo.currentLayer()
                    self.batchExportAsTxt(layer, f)
                f.close()
        elif self.settings.value('profileTextExport') == '.csv':
            exportFile = QFileDialog.getSaveFileName(
                directory=projFolder, filter='Text files(*.csv)')
            exportFile = toUnicode(exportFile)
            if self.profiles and exportFile:
                f = open(exportFile, 'w')
                if self.dlg.batchChecker.checkState() == 0:
                    plotTool().exportToCsv(self.profiles, f)
                elif self.dlg.batchChecker.checkState() == 2:
                    layer = self.dlg.layerCombo.currentLayer()
                    self.batchExportAsCsv(layer, f)
                f.close()

        elif self.settings.value('profileTextExport') == '.xls':
            exportFile = QFileDialog.getSaveFileName(
                directory=projFolder, filter='Excel Workbook(*.xls)')
            exportFile = toUnicode(exportFile)
            if self.profiles and exportFile:
                wb = xlwt.Workbook()
                if self.dlg.batchChecker.checkState() == 0:
                    sh = wb.add_sheet('profile')
                    plotTool().exportToXls(self.profiles, sh)
                elif self.dlg.batchChecker.checkState() == 2:
                    layer = self.dlg.layerCombo.currentLayer()
                    self.batchExportAsXls(layer, wb)
                wb.save(exportFile)
Example #5
0
    def select_file(self):
        last_folder = get_last_input_path()
        # noinspection PyArgumentList
        output_file = QFileDialog.getSaveFileName(parent=self,
                                                  caption=tr('Select file'),
                                                  directory=last_folder,
                                                  filter='Shapefiles (*.shp)')

        if output_file:
            self.lineEdit_outputFile.setText(output_file)
            path = dirname(output_file)
            set_last_input_path(path)
        else:
            self.lineEdit_outputFile.setText('')
Example #6
0
    def genReport(self):
        tec = self.tecItemList.currentItem()

        projFolder = self.settings.value('projFolder')
        saveFile = QFileDialog.getSaveFileName(filter=self.tr('*.txt;; *.csv'),
                                               directory=projFolder)
        if saveFile.endswith('.txt'):
            self.reportAsTxt(tec, saveFile)
        elif saveFile.endswith('.csv'):
            self.reportAsCsv(tec, saveFile)
        else:
            QMessageBox(QMessageBox.Critical,
                        title=toUnicode(MSG['msg26']),
                        text=toUnicode(MSG['msg25']))
 def import_loss_layer_from_csv(self,
                                csv_file_path,
                                dest_shp=None,
                                delete_lon_lat=False):
     # FIXME: hardcoded field names
     longitude_field = 'LON'
     latitude_field = 'LAT'
     lines_to_skip_count = count_heading_commented_lines(csv_file_path)
     url = QUrl.fromLocalFile(csv_file_path)
     url.addQueryItem('type', 'csv')
     url.addQueryItem('xField', longitude_field)
     url.addQueryItem('yField', latitude_field)
     url.addQueryItem('spatialIndex', 'no')
     url.addQueryItem('subsetIndex', 'no')
     url.addQueryItem('watchFile', 'no')
     url.addQueryItem('delimiter', ',')
     url.addQueryItem('crs', 'epsg:4326')
     url.addQueryItem('skipLines', str(lines_to_skip_count))
     url.addQueryItem('trimFields', 'yes')
     layer_uri = str(url.toEncoded())
     csv_layer = QgsVectorLayer(layer_uri, 'Loss', "delimitedtext")
     dest_filename = dest_shp or QFileDialog.getSaveFileName(
         self,
         'Save loss shapefile as...',
         os.path.expanduser("~"),
         'Shapefiles (*.shp)')
     if dest_filename:
         if dest_filename[-4:] != ".shp":
             dest_filename += ".shp"
     else:
         return
     result = save_layer_as_shapefile(csv_layer, dest_filename)
     if result != QgsVectorFileWriter.NoError:
         raise RuntimeError('Could not save shapefile')
     shp_layer = QgsVectorLayer(
         dest_filename, 'Loss data', 'ogr')
     if delete_lon_lat:
         ProcessLayer(shp_layer).delete_attributes(
             [longitude_field, latitude_field]),
     if shp_layer.isValid():
         QgsMapLayerRegistry.instance().addMapLayer(shp_layer)
     else:
         msg = 'Invalid loss map'
         log_msg(msg, level='C', message_bar=self.iface.messageBar())
         return None
     return shp_layer
Example #8
0
    def outTIF(self, plotWidget, d_folder, name, title):
        if d_folder:
            fileName = os.path.join(d_folder, name + '.tif')
        else:
            if self.settings.value('lastOutputDir'):
                folder = self.settings.value('lastOutputDir')
            else:
                folder = self.settings.value('projFolder')

            fileName = QFileDialog.getSaveFileName(
                caption="Save Plot As .tif file",
                directory=folder,
                filter="Tagged Image File Format (*.tif;*.tiff)")
        fileName = toUnicode(fileName)

        if fileName:
            if not title:
                title = self.settings.value('figureTitle')
            plotWidget.setTitle(title)
            pix = QPixmap(QSize(600, 400))
            sh = QBrush(pix)
            sh.setColor(Qt.white)
            sh.setStyle(Qt.SolidPattern)
            painter = QPainter()
            painter.begin(pix)
            painter.setBrush(sh)
            painter.drawRect(0, 0, 600, 400)
            painter.end()

            legend = QwtLegend()
            plotWidget.insertLegend(legend)
            plotWidget.setAxisTitle(QwtPlot.xBottom,
                                    self.settings.value('xAxisTitle'))
            plotWidget.setAxisTitle(QwtPlot.yLeft,
                                    self.settings.value('yAxisTitle'))

            QSettings().setValue("lastOutputDir", os.path.dirname(fileName))
            filter = QwtPlotPrintFilter()
            filter.setOptions(QwtPlotPrintFilter.PrintAll
                              & ~QwtPlotPrintFilter.PrintBackground)
            plotWidget.print_(pix, filter)
            pix.save(fileName)
            plotWidget.insertLegend(None)
            plotWidget.setAxisTitle(QwtPlot.xBottom, None)
            plotWidget.setAxisTitle(QwtPlot.yLeft, None)
            plotWidget.setTitle(None)
Example #9
0
    def outSVG(self, plotWidget, d_folder, name, title):
        if d_folder:
            fileName = os.path.join(d_folder, name + '.svg')
        else:
            if self.settings.value('lastOutputDir'):
                folder = self.settings.value('lastOutputDir')
            else:
                folder = self.settings.value('projFolder')

            fileName = QFileDialog.getSaveFileName(
                caption="Save Plot As .svg file",
                directory=folder,
                filter="Scalable Vector Graphics(*.svg)")
        fileName = toUnicode(fileName)

        if fileName:
            pix = QSvgGenerator()
            pix.setFileName(fileName)
            pix.setSize(QSize(600, 400))

            if not title:
                title = self.settings.value('figureTitle')
            plotWidget.setTitle(title)
            legend = QwtLegend()
            plotWidget.insertLegend(legend)
            plotWidget.setAxisTitle(QwtPlot.xBottom,
                                    self.settings.value('xAxisTitle'))
            plotWidget.setAxisTitle(QwtPlot.yLeft,
                                    self.settings.value('yAxisTitle'))

            QSettings().setValue("lastOutputDir", os.path.dirname(fileName))
            filter = QwtPlotPrintFilter()
            filter.setOptions(QwtPlotPrintFilter.PrintAll
                              & ~QwtPlotPrintFilter.PrintBackground)
            plotWidget.print_(pix, filter)
            plotWidget.insertLegend(None)
            plotWidget.setAxisTitle(QwtPlot.xBottom, None)
            plotWidget.setAxisTitle(QwtPlot.yLeft, None)
            plotWidget.setTitle(None)
Example #10
0
def ask_for_destination_full_path_name(parent,
                                       text='Save File',
                                       filter='Shapefiles (*.shp)'):
    """
    Open a dialog to ask for a destination full path name, initially pointing
    to the home directory.
    QFileDialog by defaults asks for confirmation if an existing file is
    selected and it automatically resolves symlinks.

    :param parent: the parent dialog
    :param text: the dialog's title text
    :param filter:
        filter files by specific formats. Default: 'Shapefiles (\*.shp)'
        A more elaborate example:

        "Images (\*.png \*.xpm \*.jpg);;
        Text files (\*.txt);;XML files (\*.xml)"

    :returns: full path name of the destination file
    """
    return QFileDialog.getSaveFileName(parent,
                                       text,
                                       directory=os.path.expanduser("~"),
                                       filter=filter)