use enum for supported formats

This commit is contained in:
uclaros 2022-09-02 11:51:09 +03:00 committed by Martin Dobias
parent 3c426b274f
commit cf7137d218
8 changed files with 306 additions and 165 deletions

View File

@ -0,0 +1,9 @@
# The following has been generated automatically from src/core/pointcloud/qgspointcloudlayerexporter.h
# monkey patching scoped based enum
QgsPointCloudLayerExporter.ExportFormat.Memory.__doc__ = "Memory layer"
QgsPointCloudLayerExporter.ExportFormat.Las.__doc__ = "LAS/LAZ point cloud"
QgsPointCloudLayerExporter.ExportFormat.Gpkg.__doc__ = "Geopackage"
QgsPointCloudLayerExporter.ExportFormat.Shp.__doc__ = "ESRI ShapeFile"
QgsPointCloudLayerExporter.ExportFormat.Dxf.__doc__ = "AutoCAD dxf"
QgsPointCloudLayerExporter.ExportFormat.__doc__ = 'Supported export formats for point clouds\n\n' + '* ``Memory``: ' + QgsPointCloudLayerExporter.ExportFormat.Memory.__doc__ + '\n' + '* ``Las``: ' + QgsPointCloudLayerExporter.ExportFormat.Las.__doc__ + '\n' + '* ``Gpkg``: ' + QgsPointCloudLayerExporter.ExportFormat.Gpkg.__doc__ + '\n' + '* ``Shp``: ' + QgsPointCloudLayerExporter.ExportFormat.Shp.__doc__ + '\n' + '* ``Dxf``: ' + QgsPointCloudLayerExporter.ExportFormat.Dxf.__doc__
# --

View File

@ -25,6 +25,31 @@ Handles exporting point cloud layers to memory layers, OGR supported files and P
%End
public:
enum class ExportFormat
{
Memory,
Las,
Gpkg,
Shp,
Dxf,
};
static QString getTranslatedName( ExportFormat format );
%Docstring
Gets the translated name for the specified ``format``
%End
static QString getFilter( ExportFormat format );
%Docstring
Gets the extensions filter for the specified ``format``
%End
static QString getOgrDriverName( ExportFormat format );
%Docstring
Gets the OGR driver name for the specified ``format``
%End
QgsPointCloudLayerExporter( QgsPointCloudLayer *layer );
%Docstring
Constructor for QgsPointCloudLayerExporter, associated with the specified ``layer``.
@ -146,25 +171,18 @@ for reprojection if different from the point cloud layer's CRS.
Gets the ``crs`` for the exported file.
%End
bool setFormat( const QString &format );
bool setFormat( const ExportFormat format );
%Docstring
Sets the ``format`` for the exported file.
:return: true if the ``format`` is supported, false otherwise.
.. seealso:: :py:func:`supportedFormats`
.. seealso:: ExportFormat
%End
QString format() const;
ExportFormat format() const;
%Docstring
Returns the format for the exported file or layer.
%End
QStringList supportedFormats() const;
%Docstring
Gets a list of the supported export formats.
.. seealso:: :py:func:`setFormat`
%End
void setPointsLimit( qint64 limit );

View File

@ -8376,16 +8376,25 @@ QString QgisApp::saveAsPointCloudLayer( QgsPointCloudLayer *pclayer )
QgsDatumTransformDialog::run( pclayer->crs(), destCRS, this, mMapCanvas );
}
exp->setCrs( destCRS, pclayer->transformContext() );
exp->setFormat( dialog.format() );
const QgsPointCloudLayerExporter::ExportFormat format = dialog.exportFormat();
exp->setFormat( format );
// LAZ format exports all attributes
if ( dialog.format() != QLatin1String( "LAZ" ) &&
dialog.format() != QLatin1String( "LAS" ) )
switch ( format )
{
if ( dialog.hasAttributes() )
exp->setAttributes( dialog.attributes() );
else
exp->setNoAttributes();
case QgsPointCloudLayerExporter::ExportFormat::Memory:
case QgsPointCloudLayerExporter::ExportFormat::Gpkg:
case QgsPointCloudLayerExporter::ExportFormat::Shp:
case QgsPointCloudLayerExporter::ExportFormat::Dxf:
if ( dialog.hasAttributes() )
exp->setAttributes( dialog.attributes() );
else
exp->setNoAttributes();
break;
case QgsPointCloudLayerExporter::ExportFormat::Las:
break;
}
if ( dialog.hasFilterExtent() )

View File

@ -33,6 +33,59 @@
#include <pdal/Dimension.hpp>
#endif
QString QgsPointCloudLayerExporter::getFilter( ExportFormat format )
{
switch ( format )
{
case QgsPointCloudLayerExporter::ExportFormat::Las:
return QStringLiteral( "LAZ point cloud (*.laz *.LAZ);;LAS point cloud (*.las *.LAS)" );
case QgsPointCloudLayerExporter::ExportFormat::Gpkg:
return QStringLiteral( "GeoPackage (*.gpkg *.GPKG)" );
case QgsPointCloudLayerExporter::ExportFormat::Dxf:
return QStringLiteral( "AutoCAD DXF (*.dxf *.dxf)" );
case QgsPointCloudLayerExporter::ExportFormat::Shp:
return QStringLiteral( "ESRI Shapefile (*.shp *.SHP)" );
case QgsPointCloudLayerExporter::ExportFormat::Memory:
break;
}
return QString();
}
QString QgsPointCloudLayerExporter::getTranslatedName( ExportFormat format )
{
switch ( format )
{
case ExportFormat::Memory:
return QObject::tr( "Temporary Scratch Layer" );
case ExportFormat::Gpkg:
return QObject::tr( "GeoPackage" );
case ExportFormat::Dxf:
return QObject::tr( "AutoCAD DXF" );
case ExportFormat::Shp:
return QObject::tr( "ESRI Shapefile" );
case ExportFormat::Las:
return QObject::tr( "LAS/LAZ point cloud" );
}
return QString();
}
QString QgsPointCloudLayerExporter::getOgrDriverName( ExportFormat format )
{
switch ( format )
{
case ExportFormat::Gpkg:
return QStringLiteral( "GPKG" );
case ExportFormat::Dxf:
return QStringLiteral( "DXF" );
case ExportFormat::Shp:
return QStringLiteral( "ESRI Shapefile" );
case ExportFormat::Memory:
case ExportFormat::Las:
break;
}
return QString();
}
QgsPointCloudLayerExporter::QgsPointCloudLayerExporter( QgsPointCloudLayer *layer )
: mLayerAttributeCollection( layer->attributes() )
, mIndex( layer->dataProvider()->index()->clone().release() )
@ -44,15 +97,6 @@ QgsPointCloudLayerExporter::QgsPointCloudLayerExporter( QgsPointCloudLayer *laye
if ( !ok )
mPointRecordFormat = 3;
mSupportedFormats << QStringLiteral( "memory" )
#ifdef HAVE_PDAL_QGIS
<< QStringLiteral( "LAZ" )
<< QStringLiteral( "LAS" )
#endif
<< QStringLiteral( "GPKG" )
<< QStringLiteral( "ESRI Shapefile" )
<< QStringLiteral( "DXF" );
setAllAttributes();
}
@ -63,9 +107,9 @@ QgsPointCloudLayerExporter::~QgsPointCloudLayerExporter()
delete mTransform;
}
bool QgsPointCloudLayerExporter::setFormat( const QString &format )
bool QgsPointCloudLayerExporter::setFormat( const ExportFormat format )
{
if ( mSupportedFormats.contains( format, Qt::CaseInsensitive ) )
if ( supportedFormats().contains( format ) )
{
mFormat = format;
return true;
@ -183,7 +227,7 @@ void QgsPointCloudLayerExporter::prepareExport()
delete mMemoryLayer;
mMemoryLayer = nullptr;
if ( mFormat == QLatin1String( "memory" ) )
if ( mFormat == ExportFormat::Memory )
{
if ( QApplication::instance()->thread() != QThread::currentThread() )
QgsDebugMsgLevel( QStringLiteral( "prepareExport() should better be called from the main thread!" ), 2 );
@ -207,73 +251,89 @@ void QgsPointCloudLayerExporter::doExport()
}
}
if ( mFormat == QLatin1String( "memory" ) )
switch ( mFormat )
{
if ( !mMemoryLayer )
prepareExport();
case ExportFormat::Memory:
{
if ( !mMemoryLayer )
prepareExport();
ExporterMemory exp( this );
exp.run();
}
#ifdef HAVE_PDAL_QGIS
else if ( mFormat == QLatin1String( "LAZ" ) ||
mFormat == QLatin1String( "LAS" ) )
{
setAllAttributes();
// PDAL may throw exceptions
try
{
ExporterPdal exp( this );
ExporterMemory exp( this );
exp.run();
break;
}
catch ( std::runtime_error &e )
case ExportFormat::Las:
{
setLastError( QString::fromLatin1( e.what() ) );
QgsDebugMsg( QStringLiteral( "PDAL has thrown an exception: {}" ).arg( e.what() ) );
}
}
#ifdef HAVE_PDAL_QGIS
setAllAttributes();
// PDAL may throw exceptions
try
{
ExporterPdal exp( this );
exp.run();
}
catch ( std::runtime_error &e )
{
setLastError( QString::fromLatin1( e.what() ) );
QgsDebugMsg( QStringLiteral( "PDAL has thrown an exception: {}" ).arg( e.what() ) );
}
#endif
else
{
QgsVectorFileWriter::SaveVectorOptions saveOptions;
saveOptions.layerName = mName;
saveOptions.driverName = mFormat;
saveOptions.datasourceOptions = QgsVectorFileWriter::defaultDatasetOptions( mFormat );
saveOptions.layerOptions = QgsVectorFileWriter::defaultLayerOptions( mFormat );
saveOptions.symbologyExport = QgsVectorFileWriter::NoSymbology;
saveOptions.actionOnExistingFile = mActionOnExistingFile;
saveOptions.feedback = mFeedback;
mVectorSink = QgsVectorFileWriter::create( mFilename, outputFields(), QgsWkbTypes::PointZ, mTargetCrs, QgsCoordinateTransformContext(), saveOptions );
ExporterVector exp( this );
exp.run();
break;
}
case ExportFormat::Gpkg:
case ExportFormat::Dxf:
case ExportFormat::Shp:
{
const QString ogrDriver = getOgrDriverName( mFormat );
QgsVectorFileWriter::SaveVectorOptions saveOptions;
saveOptions.layerName = mName;
saveOptions.driverName = ogrDriver;
saveOptions.datasourceOptions = QgsVectorFileWriter::defaultDatasetOptions( ogrDriver );
saveOptions.layerOptions = QgsVectorFileWriter::defaultLayerOptions( ogrDriver );
saveOptions.symbologyExport = QgsVectorFileWriter::NoSymbology;
saveOptions.actionOnExistingFile = mActionOnExistingFile;
saveOptions.feedback = mFeedback;
mVectorSink = QgsVectorFileWriter::create( mFilename, outputFields(), QgsWkbTypes::PointZ, mTargetCrs, QgsCoordinateTransformContext(), saveOptions );
ExporterVector exp( this );
exp.run();
return;
}
}
}
QgsMapLayer *QgsPointCloudLayerExporter::takeExportedLayer()
{
if ( mFormat == QLatin1String( "memory" ) && mMemoryLayer )
switch ( mFormat )
{
QgsMapLayer *retVal = mMemoryLayer;
mMemoryLayer = nullptr;
return retVal;
case ExportFormat::Memory:
{
QgsMapLayer *retVal = mMemoryLayer;
mMemoryLayer = nullptr;
return retVal;
}
case ExportFormat::Las:
{
const QFileInfo fileInfo( mFilename );
return new QgsPointCloudLayer( mFilename, fileInfo.completeBaseName(), QStringLiteral( "pdal" ) );
}
case ExportFormat::Gpkg:
{
QString uri( mFilename );
uri += "|layername=" + mName;
return new QgsVectorLayer( uri, mName, QStringLiteral( "ogr" ) );
}
case ExportFormat::Dxf:
case ExportFormat::Shp:
{
const QFileInfo fileInfo( mFilename );
return new QgsVectorLayer( mFilename, fileInfo.completeBaseName(), QStringLiteral( "ogr" ) );
}
}
const QFileInfo fileInfo( mFilename );
if ( mFormat == QLatin1String( "LAZ" ) ||
mFormat == QLatin1String( "LAS" ) )
{
return new QgsPointCloudLayer( mFilename, fileInfo.completeBaseName(), QStringLiteral( "pdal" ) );
}
if ( mFormat == QLatin1String( "GPKG" ) )
{
QString uri( mFilename );
uri += "|layername=" + mName;
return new QgsVectorLayer( uri, mName, QStringLiteral( "ogr" ) );
}
return new QgsVectorLayer( mFilename, fileInfo.completeBaseName(), QStringLiteral( "ogr" ) );
}
//

View File

@ -45,6 +45,51 @@ class CORE_EXPORT QgsPointCloudLayerExporter SIP_NODEFAULTCTORS
{
public:
/**
* Supported export formats for point clouds
*/
enum class ExportFormat : int
{
Memory = 0, //!< Memory layer
Las = 1, //!< LAS/LAZ point cloud
Gpkg = 2, //!< Geopackage
Shp = 3, //!< ESRI ShapeFile
Dxf = 4, //!< AutoCAD dxf
};
/**
* Gets a list of the supported export formats.
*
* \see setFormat()
*/
static QList< ExportFormat > supportedFormats() SIP_SKIP
{
QList< ExportFormat > formats;
formats << ExportFormat::Memory;
#ifdef HAVE_PDAL_QGIS
formats << ExportFormat::Las;
#endif
formats << ExportFormat::Gpkg;
formats << ExportFormat::Shp;
formats << ExportFormat::Dxf;
return formats;
}
/**
* Gets the translated name for the specified \a format
*/
static QString getTranslatedName( ExportFormat format );
/**
* Gets the extensions filter for the specified \a format
*/
static QString getFilter( ExportFormat format );
/**
* Gets the OGR driver name for the specified \a format
*/
static QString getOgrDriverName( ExportFormat format );
/**
* Constructor for QgsPointCloudLayerExporter, associated with the specified \a layer.
*
@ -158,21 +203,14 @@ class CORE_EXPORT QgsPointCloudLayerExporter SIP_NODEFAULTCTORS
/**
* Sets the \a format for the exported file.
* \returns true if the \a format is supported, false otherwise.
* \see supportedFormats()
* \see ExportFormat
*/
bool setFormat( const QString &format );
bool setFormat( const ExportFormat format );
/**
* Returns the format for the exported file or layer.
*/
QString format() const { return mFormat; }
/**
* Gets a list of the supported export formats.
*
* \see setFormat()
*/
QStringList supportedFormats() const { return mSupportedFormats; }
ExportFormat format() const { return mFormat; }
/**
* Sets the maximum number of points to be exported. Default value is 0.
@ -227,7 +265,7 @@ class CORE_EXPORT QgsPointCloudLayerExporter SIP_NODEFAULTCTORS
QgsPointCloudIndex *mIndex = nullptr;
QString mName = QObject::tr( "Exported" );
QString mFormat;
ExportFormat mFormat;
QString mFilename;
QString mLastError;
QgsRectangle mExtent = QgsRectangle( -std::numeric_limits<double>::infinity(),
@ -240,7 +278,6 @@ class CORE_EXPORT QgsPointCloudLayerExporter SIP_NODEFAULTCTORS
QgsFeedback *mFeedback = nullptr;
qint64 mPointsLimit = 0;
QStringList mRequestedAttributes;
QStringList mSupportedFormats;
QgsCoordinateReferenceSystem mSourceCrs;
QgsCoordinateReferenceSystem mTargetCrs;
QgsCoordinateTransformContext mTransformContext;

View File

@ -65,15 +65,12 @@ void QgsPointCloudLayerSaveAsDialog::setup()
connect( mButtonBox, &QDialogButtonBox::rejected, this, &QgsPointCloudLayerSaveAsDialog::reject );
mFormatComboBox->blockSignals( true );
mFormatComboBox->addItem( tr( "Temporary Scratch Layer" ), QStringLiteral( "memory" ) );
mFormatComboBox->addItem( tr( "LAZ point cloud" ), QStringLiteral( "LAZ" ) );
mFormatComboBox->addItem( tr( "LAS point cloud" ), QStringLiteral( "LAS" ) );
mFormatComboBox->addItem( tr( "GeoPackage" ), QStringLiteral( "GPKG" ) );
mFormatComboBox->addItem( tr( "ESRI Shapefile" ), QStringLiteral( "ESRI Shapefile" ) );
mFormatComboBox->addItem( tr( "AutoCAD DXF" ), QStringLiteral( "DXF" ) );
const QList< QgsPointCloudLayerExporter::ExportFormat > supportedFormats = QgsPointCloudLayerExporter::supportedFormats();
for ( const auto &format : supportedFormats )
mFormatComboBox->addItem( QgsPointCloudLayerExporter::getTranslatedName( format ), static_cast< int >( format ) );
QgsSettings settings;
const QString defaultFormat = settings.value( QStringLiteral( "UI/lastPointCloudFormat" ), "memory" ).toString();
const int defaultFormat = settings.value( QStringLiteral( "UI/lastPointCloudFormat" ), 0 ).toInt();
mFormatComboBox->setCurrentIndex( mFormatComboBox->findData( defaultFormat ) );
mFormatComboBox->blockSignals( false );
mFormatComboBox_currentIndexChanged( 0 );
@ -183,7 +180,7 @@ void QgsPointCloudLayerSaveAsDialog::setup()
mCrsSelector->setShowAccuracyWarnings( true );
mAddToCanvas->setEnabled( format() != QLatin1String( "memory" ) );
mAddToCanvas->setEnabled( exportFormat() != QgsPointCloudLayerExporter::ExportFormat::Memory );
if ( mLayer )
{
@ -194,7 +191,8 @@ void QgsPointCloudLayerSaveAsDialog::setup()
leLayername->setText( mDefaultOutputLayerNameFromInputLayerName );
}
mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( format() == QLatin1String( "memory" ) || !mFilename->filePath().isEmpty() );
mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( exportFormat() == QgsPointCloudLayerExporter::ExportFormat::Memory ||
!mFilename->filePath().isEmpty() );
}
void QgsPointCloudLayerSaveAsDialog::accept()
@ -300,56 +298,70 @@ void QgsPointCloudLayerSaveAsDialog::accept()
QgsSettings settings;
settings.setValue( QStringLiteral( "UI/lastPointCloudFileFilterDir" ), QFileInfo( filename() ).absolutePath() );
settings.setValue( QStringLiteral( "UI/lastPointCloudFormat" ), format() );
settings.setValue( QStringLiteral( "UI/lastPointCloudFormat" ), static_cast< int >( exportFormat() ) );
QDialog::accept();
}
QString QgsPointCloudLayerSaveAsDialog::filterForDriver( const QString &driverName ) const
{
if ( driverName == QLatin1String( "LAZ" ) )
return QStringLiteral( "LAZ pointcloud (*.laz *.LAZ)" );
if ( driverName == QLatin1String( "LAS" ) )
return QStringLiteral( "LAS pointcloud (*.las *.LAS)" );
if ( driverName == QLatin1String( "GPKG" ) )
return QStringLiteral( "GeoPackage (*.gpkg *.GPKG)" );
if ( driverName == QLatin1String( "ESRI Shapefile" ) )
return QStringLiteral( "ESRI Shapefile (*.shp *.SHP)" );
if ( driverName == QLatin1String( "DXF" ) )
return QStringLiteral( "AutoCAD DXF (*.dxf *.dxf)" );
return QString();
}
void QgsPointCloudLayerSaveAsDialog::mFormatComboBox_currentIndexChanged( int idx )
{
Q_UNUSED( idx )
const QString sFormat( format() );
mAttributesSelection->setEnabled( sFormat != QLatin1String( "DXF" ) &&
sFormat != QLatin1String( "LAZ" ) &&
sFormat != QLatin1String( "LAS" ) );
const QgsPointCloudLayerExporter::ExportFormat format = exportFormat();
if ( sFormat == QLatin1String( "memory" ) )
switch ( format )
{
mWasAddToCanvasForced = !mAddToCanvas->isChecked();
mAddToCanvas->setEnabled( false );
mAddToCanvas->setChecked( true );
mFilename->setEnabled( false );
case QgsPointCloudLayerExporter::ExportFormat::Memory:
case QgsPointCloudLayerExporter::ExportFormat::Gpkg:
case QgsPointCloudLayerExporter::ExportFormat::Shp:
mAttributesSelection->setEnabled( true );
break;
case QgsPointCloudLayerExporter::ExportFormat::Las:
case QgsPointCloudLayerExporter::ExportFormat::Dxf:
mAttributesSelection->setEnabled( false );
break;
}
else
switch ( format )
{
mAddToCanvas->setEnabled( true );
if ( mWasAddToCanvasForced )
{
mAddToCanvas->setChecked( !mAddToCanvas->isChecked() );
mWasAddToCanvasForced = false;
}
mFilename->setEnabled( true );
case QgsPointCloudLayerExporter::ExportFormat::Memory:
case QgsPointCloudLayerExporter::ExportFormat::Gpkg:
leLayername->setEnabled( true );
break;
\
case QgsPointCloudLayerExporter::ExportFormat::Shp:
case QgsPointCloudLayerExporter::ExportFormat::Las:
case QgsPointCloudLayerExporter::ExportFormat::Dxf:
leLayername->setEnabled( false );
break;
}
switch ( format )
{
case QgsPointCloudLayerExporter::ExportFormat::Memory:
mWasAddToCanvasForced = !mAddToCanvas->isChecked();
mAddToCanvas->setEnabled( false );
mAddToCanvas->setChecked( true );
mFilename->setEnabled( false );
break;
case QgsPointCloudLayerExporter::ExportFormat::Gpkg:
case QgsPointCloudLayerExporter::ExportFormat::Shp:
case QgsPointCloudLayerExporter::ExportFormat::Las:
case QgsPointCloudLayerExporter::ExportFormat::Dxf:
mAddToCanvas->setEnabled( true );
if ( mWasAddToCanvasForced )
{
mAddToCanvas->setChecked( !mAddToCanvas->isChecked() );
mWasAddToCanvasForced = false;
}
mFilename->setEnabled( true );
break;
}
if ( mFilename->isEnabled() )
{
mFilename->setFilter( filterForDriver( format() ) );
mFilename->setFilter( QgsPointCloudLayerExporter::getFilter( format ) );
// if output filename already defined we need to replace old suffix
// to avoid double extensions like .gpkg.shp
@ -357,7 +369,7 @@ void QgsPointCloudLayerSaveAsDialog::mFormatComboBox_currentIndexChanged( int id
{
QRegularExpression rx( "\\.(.*?)[\\s]" );
QString ext;
ext = rx.match( filterForDriver( format() ) ).captured( 1 );
ext = rx.match( QgsPointCloudLayerExporter::getFilter( format ) ).captured( 1 );
if ( !ext.isEmpty() )
{
QFileInfo fi( mLastUsedFilename );
@ -366,9 +378,6 @@ void QgsPointCloudLayerSaveAsDialog::mFormatComboBox_currentIndexChanged( int id
}
}
leLayername->setEnabled( sFormat == QLatin1String( "memory" ) ||
sFormat == QLatin1String( "GPKG" ) );
if ( !mFilename->isEnabled() )
mFilename->setFilePath( QString() );
@ -391,7 +400,8 @@ void QgsPointCloudLayerSaveAsDialog::mFormatComboBox_currentIndexChanged( int id
leLayername->setText( layerName );
}
mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( sFormat == QLatin1String( "memory" ) || !mFilename->filePath().isEmpty() );
mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( format == QgsPointCloudLayerExporter::ExportFormat::Memory ||
!mFilename->filePath().isEmpty() );
}
void QgsPointCloudLayerSaveAsDialog::mFilterGeometryGroupBoxCheckToggled( bool checked )
@ -423,9 +433,9 @@ QString QgsPointCloudLayerSaveAsDialog::layername() const
return leLayername->text();
}
QString QgsPointCloudLayerSaveAsDialog::format() const
QgsPointCloudLayerExporter::ExportFormat QgsPointCloudLayerSaveAsDialog::exportFormat() const
{
return mFormatComboBox->currentData().toString();
return static_cast< QgsPointCloudLayerExporter::ExportFormat >( mFormatComboBox->currentData().toInt() );
}
QgsCoordinateReferenceSystem QgsPointCloudLayerSaveAsDialog::crsObject() const

View File

@ -24,6 +24,7 @@
#include "qgsfields.h"
#include "qgsvectorfilewriter.h"
#include "qgis_gui.h"
#include "qgspointcloudlayerexporter.h"
#define SIP_NO_FILE
@ -50,7 +51,7 @@ class GUI_EXPORT QgsPointCloudLayerSaveAsDialog : public QDialog, private Ui::Qg
* The format in which the export should be written.
* \see QgsVectorFileWriter::filterForDriver()
*/
QString format() const;
QgsPointCloudLayerExporter::ExportFormat exportFormat() const;
/**
* Returns the target filename.
@ -165,7 +166,6 @@ class GUI_EXPORT QgsPointCloudLayerSaveAsDialog : public QDialog, private Ui::Qg
private:
void setup();
QString filterForDriver( const QString &driverName ) const;
QgsCoordinateReferenceSystem mSelectedCrs;

View File

@ -86,7 +86,7 @@ void TestQgsPointCloudLayerExporter::cleanup()
void TestQgsPointCloudLayerExporter::testScratchLayer()
{
QgsPointCloudLayerExporter exp( mLayer );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -121,7 +121,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerFiltered()
{
mLayer->setSubsetString( QStringLiteral( "red > 150" ) );
QgsPointCloudLayerExporter exp( mLayer );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -136,7 +136,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerExtent()
{
QgsPointCloudLayerExporter exp( mLayer );
exp.setFilterExtent( QgsRectangle( 497754, 7050888, 497755, 7050889 ) );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -150,7 +150,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerZRange()
{
QgsPointCloudLayerExporter exp( mLayer );
exp.setZRange( QgsDoubleRange( 1, 1.1 ) );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -166,7 +166,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerFilteredByGeometry()
QgsMultiPolygon *geom = new QgsMultiPolygon();
geom->fromWkt( QStringLiteral( "MultiPolygon (((497753.68054185633081943 7050888.42151333577930927, 497753.68262159946607426 7050888.20937953889369965, 497753.93531038763467222 7050888.2218579975888133, 497753.93219077296089381 7050888.28736990503966808, 497753.86355925025418401 7050888.28840977698564529, 497753.85835989244515076 7050888.41215449199080467, 497753.68054185633081943 7050888.42151333577930927)),((497753.63665927684633061 7050887.68445237725973129, 497753.66327998862834647 7050887.93235775642096996, 497753.85794394387630746 7050887.95232329051941633, 497753.86293532734271139 7050887.84084905963391066, 497753.89621121709933504 7050887.66781443264335394, 497753.63665927684633061 7050887.68445237725973129)),((497753.69655587844317779 7050888.15697001200169325, 497753.82134046510327607 7050888.16528898477554321, 497753.87624568323371932 7050888.10871997196227312, 497753.98439232504460961 7050888.13534068409353495, 497754.18072007474256679 7050888.12702171131968498, 497754.25226323772221804 7050888.07544408272951841, 497754.23229770385660231 7050888.00889230240136385, 497754.17739248572615907 7050887.9822715912014246, 497753.99437509197741747 7050887.95731467381119728, 497753.9211681344313547 7050887.94899570103734732, 497753.834650820994284 7050887.98393538594245911, 497753.70154726190958172 7050887.96064226236194372, 497753.69655587844317779 7050888.15697001200169325)))" ) );
exp.setFilterGeometry( geom );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -193,7 +193,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerFilteredByLayer()
QgsPointCloudLayerExporter exp( mLayer );
exp.setFilterGeometry( polygonLayer );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -223,7 +223,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerFilteredByLayerSelected()
QgsPointCloudLayerExporter exp( mLayer );
exp.setFilterGeometry( polygonLayer, true );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -250,7 +250,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerFilteredByLayerDifferentCrs
QgsPointCloudLayerExporter exp( mLayer );
exp.setFilterGeometry( polygonLayer );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -269,7 +269,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerAttributes()
QStringLiteral( "Blue" )
};
exp.setAttributes( attrs );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -294,7 +294,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerBadAttributes()
QStringLiteral( "MissingAttribute" )
};
exp.setAttributes( attrs );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -313,7 +313,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerSkipAttributes()
QgsPointCloudLayerExporter exp( mLayer );
QStringList attrs;
exp.setAttributes( attrs );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -332,7 +332,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerCrs()
QgsCoordinateReferenceSystem differentCrs = QgsCoordinateReferenceSystem::fromEpsgId( 2100 );
exp.setCrs( differentCrs );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -357,7 +357,7 @@ void TestQgsPointCloudLayerExporter::testScratchLayerSynthetic()
exp.setAttributes( attrs );
exp.setFilterExtent( QgsRectangle( 497754, 7050888, 497755, 7050889 ) );
exp.setZRange( QgsDoubleRange( 1, 1.1 ) );
exp.setFormat( QStringLiteral( "memory" ) );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Memory );
exp.doExport();
QgsVectorLayer *result = qgis::down_cast<QgsVectorLayer *>( exp.takeExportedLayer() );
@ -374,9 +374,8 @@ void TestQgsPointCloudLayerExporter::testScratchLayerSynthetic()
void TestQgsPointCloudLayerExporter::testOgrFile()
{
const QString file = QDir::tempPath() + "/filename.gpkg";
const QString driver = QStringLiteral( "GPKG" );
QgsPointCloudLayerExporter exp( mLayer );
exp.setFormat( driver );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Gpkg );
exp.setFileName( file );
exp.doExport();
@ -391,9 +390,8 @@ void TestQgsPointCloudLayerExporter::testOgrFile()
void TestQgsPointCloudLayerExporter::testPdalFile()
{
const QString file = QDir::tempPath() + "/filename.laz";
const QString driver = QStringLiteral( "LAZ" );
QgsPointCloudLayerExporter exp( mLayer );
exp.setFormat( driver );
exp.setFormat( QgsPointCloudLayerExporter::ExportFormat::Las );
exp.setFileName( file );
exp.doExport();