@@ -40,7 +40,7 @@ QString QgsStacItem::toHtml() const
40
40
{
41
41
QString html = QStringLiteral ( " <html><head></head>\n <body>\n " );
42
42
43
- html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Item" ) );
43
+ html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Item" ) );
44
44
html += QLatin1String ( " <table class=\" list-view\" >\n " );
45
45
html += QStringLiteral ( " <tr><td class=\" highlight\" >%1</td><td>%2</td></tr>\n " ).arg ( QStringLiteral ( " id" ), id () );
46
46
html += QStringLiteral ( " <tr><td class=\" highlight\" >%1</td><td>%2</td></tr>\n " ).arg ( QStringLiteral ( " stac_version" ), stacVersion () );
@@ -49,7 +49,7 @@ QString QgsStacItem::toHtml() const
49
49
50
50
if ( !mStacExtensions .isEmpty () )
51
51
{
52
- html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Extensions" ) );
52
+ html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Extensions" ) );
53
53
html += QLatin1String ( " <ul>\n " );
54
54
for ( const QString &extension : mStacExtensions )
55
55
{
@@ -58,19 +58,19 @@ QString QgsStacItem::toHtml() const
58
58
html += QLatin1String ( " </ul>\n " );
59
59
}
60
60
61
- html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Geometry" ) );
61
+ html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Geometry" ) );
62
62
html += QLatin1String ( " <table class=\" list-view\" >\n " );
63
63
html += QStringLiteral ( " <tr><td class=\" highlight\" >%1</td><td>%2</td></tr>\n " ).arg ( QStringLiteral ( " WKT" ), mGeometry .asWkt () );
64
64
html += QLatin1String ( " </table>\n " );
65
65
66
- html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Bounding Box" ) );
66
+ html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Bounding Box" ) );
67
67
html += QLatin1String ( " <ul>\n " );
68
68
html += QStringLiteral ( " <li>%1</li>\n " ).arg ( mBbox .is2d () ? mBbox .toRectangle ().toString () : mBbox .toString () );
69
69
html += QLatin1String ( " </ul>\n " );
70
70
71
71
if ( ! mProperties .isEmpty () )
72
72
{
73
- html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Properties" ) );
73
+ html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Properties" ) );
74
74
html += QLatin1String ( " <table class=\" list-view\" >\n " );
75
75
for ( auto it = mProperties .constBegin (); it != mProperties .constEnd (); ++it )
76
76
{
@@ -79,7 +79,7 @@ QString QgsStacItem::toHtml() const
79
79
html += QLatin1String ( " </table><br/>\n " );
80
80
}
81
81
82
- html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Links" ) );
82
+ html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Links" ) );
83
83
for ( const QgsStacLink &link : mLinks )
84
84
{
85
85
html += QLatin1String ( " <table class=\" list-view\" >\n " );
@@ -92,7 +92,7 @@ QString QgsStacItem::toHtml() const
92
92
93
93
if ( ! mAssets .isEmpty () )
94
94
{
95
- html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Assets" ) );
95
+ html += QStringLiteral ( " <h1>%1</h1>\n <hr>\n " ).arg ( QLatin1String ( " Assets" ) );
96
96
for ( auto it = mAssets .constBegin (); it != mAssets .constEnd (); ++it )
97
97
{
98
98
html += QLatin1String ( " <table class=\" list-view\" >\n " );
@@ -177,3 +177,65 @@ QgsDateTimeRange QgsStacItem::dateTimeRange() const
177
177
const QDateTime end = QDateTime::fromString ( mProperties .value ( QStringLiteral ( " end_datetime" ), QStringLiteral ( " null" ) ).toString () );
178
178
return QgsDateTimeRange ( start, end );
179
179
}
180
+
181
+ QString QgsStacItem::title () const
182
+ {
183
+ return mProperties .value ( QStringLiteral ( " title" ) ).toString ();
184
+ }
185
+
186
+ QString QgsStacItem::description () const
187
+ {
188
+ return mProperties .value ( QStringLiteral ( " description" ) ).toString ();
189
+ }
190
+
191
+ QgsMimeDataUtils::UriList QgsStacItem::uris () const
192
+ {
193
+ QgsMimeDataUtils::UriList uris;
194
+ for ( auto it = mAssets .constBegin (); it != mAssets .constEnd (); ++it )
195
+ {
196
+ QgsMimeDataUtils::Uri uri;
197
+ QUrl url ( it->href () );
198
+ if ( url.isLocalFile () )
199
+ {
200
+ uri.uri = it->href ();
201
+ }
202
+ else if ( it->formatName () == QLatin1String ( " COG" ) )
203
+ {
204
+ uri.layerType = QStringLiteral ( " raster" );
205
+ uri.providerKey = QStringLiteral ( " gdal" );
206
+ if ( it->href ().startsWith ( QLatin1String ( " http" ), Qt::CaseInsensitive ) ||
207
+ it->href ().startsWith ( QLatin1String ( " ftp" ), Qt::CaseInsensitive ) )
208
+ {
209
+ uri.uri = QStringLiteral ( " /vsicurl/%1" ).arg ( it->href () );
210
+ }
211
+ else if ( it->href ().startsWith ( QLatin1String ( " s3://" ), Qt::CaseInsensitive ) )
212
+ {
213
+ uri.uri = QStringLiteral ( " /vsis3/%1" ).arg ( it->href ().mid ( 5 ) );
214
+ }
215
+ else
216
+ {
217
+ uri.uri = it->href ();
218
+ }
219
+ }
220
+ else if ( it->formatName () == QLatin1String ( " COPC" ) )
221
+ {
222
+ uri.layerType = QStringLiteral ( " pointcloud" );
223
+ uri.providerKey = QStringLiteral ( " copc" );
224
+ uri.uri = it->href ();
225
+ }
226
+ else if ( it->formatName () == QLatin1String ( " EPT" ) )
227
+ {
228
+ uri.layerType = QStringLiteral ( " pointcloud" );
229
+ uri.providerKey = QStringLiteral ( " ept" );
230
+ uri.uri = it->href ();
231
+ }
232
+
233
+ // skip assets with incompatible formats
234
+ if ( uri.uri .isEmpty () )
235
+ continue ;
236
+
237
+ uri.name = it->title ().isEmpty () ? url.fileName () : it->title ();
238
+ uris.append ( uri );
239
+ }
240
+ return uris;
241
+ }
0 commit comments