Adjust point cloud URI parsing

This commit is contained in:
NEDJIMAbelgacem 2022-06-03 14:12:15 +01:00 committed by Martin Dobias
parent 10e170ebde
commit 0647ce220c
3 changed files with 14 additions and 17 deletions

View File

@ -128,7 +128,7 @@ QgsCopcProvider *QgsCopcProviderMetadata::createProvider( const QString &uri, co
QList<QgsProviderSublayerDetails> QgsCopcProviderMetadata::querySublayers( const QString &uri, Qgis::SublayerQueryFlags, QgsFeedback * ) const QList<QgsProviderSublayerDetails> QgsCopcProviderMetadata::querySublayers( const QString &uri, Qgis::SublayerQueryFlags, QgsFeedback * ) const
{ {
const QVariantMap parts = decodeUri( uri ); const QVariantMap parts = decodeUri( uri );
if ( parts.value( QStringLiteral( "path" ) ).toString().endsWith( ".copc.laz", Qt::CaseSensitivity::CaseInsensitive ) ) if ( parts.value( QStringLiteral( "file-name" ) ).toString().endsWith( ".copc.laz", Qt::CaseSensitivity::CaseInsensitive ) )
{ {
QgsProviderSublayerDetails details; QgsProviderSublayerDetails details;
details.setUri( uri ); details.setUri( uri );
@ -146,7 +146,7 @@ QList<QgsProviderSublayerDetails> QgsCopcProviderMetadata::querySublayers( const
int QgsCopcProviderMetadata::priorityForUri( const QString &uri ) const int QgsCopcProviderMetadata::priorityForUri( const QString &uri ) const
{ {
const QVariantMap parts = decodeUri( uri ); const QVariantMap parts = decodeUri( uri );
if ( parts.value( QStringLiteral( "path" ) ).toString().endsWith( ".copc.laz", Qt::CaseSensitivity::CaseInsensitive ) ) if ( parts.value( QStringLiteral( "file-name" ) ).toString().endsWith( ".copc.laz", Qt::CaseSensitivity::CaseInsensitive ) )
return 100; return 100;
return 0; return 0;
@ -155,7 +155,7 @@ int QgsCopcProviderMetadata::priorityForUri( const QString &uri ) const
QList<QgsMapLayerType> QgsCopcProviderMetadata::validLayerTypesForUri( const QString &uri ) const QList<QgsMapLayerType> QgsCopcProviderMetadata::validLayerTypesForUri( const QString &uri ) const
{ {
const QVariantMap parts = decodeUri( uri ); const QVariantMap parts = decodeUri( uri );
if ( parts.value( QStringLiteral( "path" ) ).toString().endsWith( ".copc.laz", Qt::CaseSensitivity::CaseInsensitive ) ) if ( parts.value( QStringLiteral( "file-name" ) ).toString().endsWith( ".copc.laz", Qt::CaseSensitivity::CaseInsensitive ) )
return QList< QgsMapLayerType>() << QgsMapLayerType::PointCloudLayer; return QList< QgsMapLayerType>() << QgsMapLayerType::PointCloudLayer;
return QList< QgsMapLayerType>(); return QList< QgsMapLayerType>();
@ -163,9 +163,10 @@ QList<QgsMapLayerType> QgsCopcProviderMetadata::validLayerTypesForUri( const QSt
QVariantMap QgsCopcProviderMetadata::decodeUri( const QString &uri ) const QVariantMap QgsCopcProviderMetadata::decodeUri( const QString &uri ) const
{ {
const QString path = uri;
QVariantMap uriComponents; QVariantMap uriComponents;
uriComponents.insert( QStringLiteral( "path" ), path ); QUrl url = QUrl::fromUserInput( uri );
uriComponents.insert( QStringLiteral( "file-name" ), url.fileName() );
uriComponents.insert( QStringLiteral( "path" ), uri );
return uriComponents; return uriComponents;
} }

View File

@ -124,8 +124,7 @@ QgsEptProvider *QgsEptProviderMetadata::createProvider( const QString &uri, cons
QList<QgsProviderSublayerDetails> QgsEptProviderMetadata::querySublayers( const QString &uri, Qgis::SublayerQueryFlags, QgsFeedback * ) const QList<QgsProviderSublayerDetails> QgsEptProviderMetadata::querySublayers( const QString &uri, Qgis::SublayerQueryFlags, QgsFeedback * ) const
{ {
const QVariantMap parts = decodeUri( uri ); const QVariantMap parts = decodeUri( uri );
const QFileInfo fi( parts.value( QStringLiteral( "path" ) ).toString() ); if ( parts.value( QStringLiteral( "file-name" ) ).toString().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
if ( fi.fileName().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
{ {
QgsProviderSublayerDetails details; QgsProviderSublayerDetails details;
details.setUri( uri ); details.setUri( uri );
@ -143,8 +142,7 @@ QList<QgsProviderSublayerDetails> QgsEptProviderMetadata::querySublayers( const
int QgsEptProviderMetadata::priorityForUri( const QString &uri ) const int QgsEptProviderMetadata::priorityForUri( const QString &uri ) const
{ {
const QVariantMap parts = decodeUri( uri ); const QVariantMap parts = decodeUri( uri );
const QFileInfo fi( parts.value( QStringLiteral( "path" ) ).toString() ); if ( parts.value( QStringLiteral( "file-name" ) ).toString().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
if ( fi.fileName().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
return 100; return 100;
return 0; return 0;
@ -153,8 +151,7 @@ int QgsEptProviderMetadata::priorityForUri( const QString &uri ) const
QList<QgsMapLayerType> QgsEptProviderMetadata::validLayerTypesForUri( const QString &uri ) const QList<QgsMapLayerType> QgsEptProviderMetadata::validLayerTypesForUri( const QString &uri ) const
{ {
const QVariantMap parts = decodeUri( uri ); const QVariantMap parts = decodeUri( uri );
const QFileInfo fi( parts.value( QStringLiteral( "path" ) ).toString() ); if ( parts.value( QStringLiteral( "file-name" ) ).toString().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
if ( fi.fileName().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
return QList< QgsMapLayerType>() << QgsMapLayerType::PointCloudLayer; return QList< QgsMapLayerType>() << QgsMapLayerType::PointCloudLayer;
return QList< QgsMapLayerType>(); return QList< QgsMapLayerType>();
@ -166,10 +163,8 @@ bool QgsEptProviderMetadata::uriIsBlocklisted( const QString &uri ) const
if ( !parts.contains( QStringLiteral( "path" ) ) ) if ( !parts.contains( QStringLiteral( "path" ) ) )
return false; return false;
const QFileInfo fi( parts.value( QStringLiteral( "path" ) ).toString() );
// internal details only // internal details only
if ( fi.fileName().compare( QLatin1String( "ept-build.json" ), Qt::CaseInsensitive ) == 0 ) if ( parts.value( QStringLiteral( "file-name" ) ).toString().compare( QLatin1String( "ept.json" ), Qt::CaseInsensitive ) == 0 )
return true; return true;
return false; return false;
@ -177,9 +172,10 @@ bool QgsEptProviderMetadata::uriIsBlocklisted( const QString &uri ) const
QVariantMap QgsEptProviderMetadata::decodeUri( const QString &uri ) const QVariantMap QgsEptProviderMetadata::decodeUri( const QString &uri ) const
{ {
const QString path = uri;
QVariantMap uriComponents; QVariantMap uriComponents;
uriComponents.insert( QStringLiteral( "path" ), path ); QUrl url = QUrl::fromUserInput( uri );
uriComponents.insert( QStringLiteral( "file-name" ), url.fileName() );
uriComponents.insert( QStringLiteral( "path" ), uri );
return uriComponents; return uriComponents;
} }

View File

@ -86,7 +86,7 @@ static QString _outCopcFile( const QString &filename )
{ {
const QFileInfo fi( filename ); const QFileInfo fi( filename );
const QDir directory = fi.absoluteDir(); const QDir directory = fi.absoluteDir();
const QString outputFile = QStringLiteral( "%1/copc_%2.copc.laz" ).arg( directory.absolutePath() ).arg( fi.baseName() ); const QString outputFile = QStringLiteral( "%1/%2.copc.laz" ).arg( directory.absolutePath() ).arg( fi.baseName() );
return outputFile; return outputFile;
} }