@@ -304,38 +304,84 @@ QgsLegendColorList QgsRasterLayer::legendSymbologyItems() const
304
304
305
305
QString QgsRasterLayer::htmlMetadata () const
306
306
{
307
- QgsRasterDataProvider *provider = const_cast < QgsRasterDataProvider * >( mDataProvider );
308
- QString myMetadata;
309
- myMetadata += " <p class=\" glossy\" >" + tr ( " Driver" ) + " </p>\n " ;
310
- myMetadata += QLatin1String ( " <p>" );
311
- myMetadata += mDataProvider ->description ();
312
- myMetadata += QLatin1String ( " </p>\n " );
307
+ QString myMetadata = QStringLiteral ( " <html>\n <body>\n " );
313
308
314
- // Insert provider-specific (e.g. WMS-specific) metadata
315
- // crashing
316
- myMetadata += mDataProvider ->metadata ();
309
+ // Identification section
310
+ myMetadata += QLatin1String ( " <h1>" ) % tr ( " Identification" ) % QLatin1String ( " </h1>\n <hr>\n <table class=\" list-view\" >\n " );
317
311
318
- myMetadata += QLatin1String ( " <p class=\" glossy\" >" );
319
- myMetadata += tr ( " No Data Value" );
320
- myMetadata += QLatin1String ( " </p>\n " );
321
- myMetadata += QLatin1String ( " <p>" );
322
- // TODO: all bands
323
- if ( mDataProvider ->sourceHasNoDataValue ( 1 ) )
324
- {
325
- myMetadata += QString::number ( mDataProvider ->sourceNoDataValue ( 1 ) );
326
- }
312
+ // ID
313
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " ID" ) % QLatin1String ( " </td><td>" ) % id () % QLatin1String ( " </td></tr>\n " );
314
+
315
+ // original name
316
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Original" ) % QLatin1String ( " </td><td>" ) % originalName () % QLatin1String ( " </td></tr>\n " );
317
+
318
+ // name
319
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Name" ) % QLatin1String ( " </td><td>" ) % name () % QLatin1String ( " </td></tr>\n " );
320
+
321
+ // short
322
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Short" ) % QLatin1String ( " </td><td>" ) % shortName () % QLatin1String ( " </td></tr>\n " );
323
+
324
+ // title
325
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Title" ) % QLatin1String ( " </td><td>" ) % title () % QLatin1String ( " </td></tr>\n " );
326
+
327
+ // abstract
328
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Abstract" ) % QLatin1String ( " </td><td>" ) % abstract () % QLatin1String ( " </td></tr>\n " );
329
+
330
+ // keywords
331
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Keywords" ) % QLatin1String ( " </td><td>" ) % keywordList () % QLatin1String ( " </td></tr>\n " );
332
+
333
+ // lang, waiting for the proper metadata implementation QEP #91 Work package 2
334
+ // myMetadata += QLatin1String( "<tr><td class=\"highlight\">" ) % tr( "Language" ) % QLatin1String( "</td><td>en-CA</td></tr>\n" );
335
+
336
+ // comment, not existing for rasters for now
337
+ // myMetadata += QLatin1String( "<tr><td class=\"highlight\">" ) % tr( "Comment" ) % QLatin1String( "</td><td>" ) % dataComment() % QLatin1String( "</td></tr>\n" );
338
+
339
+ // date, waiting for the proper metadata implementation QEP #91 Work package 2
340
+ // myMetadata += QLatin1String( "<tr><td class=\"highlight\">" ) % tr( "Date" ) % QLatin1String( "</td><td>28/03/17</td></tr>\n" );
341
+
342
+ // storage type
343
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Provider" ) % QLatin1String ( " </td><td>" ) % providerType () % QLatin1String ( " </td></tr>\n " );
344
+
345
+ // data source
346
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Source" ) % QLatin1String ( " </td><td>" ) % publicSource () % QLatin1String ( " </td></tr>\n " );
347
+
348
+ // Section spatial
349
+ myMetadata += QLatin1String ( " </table>\n <br><br><h1>" ) % tr ( " Spatial" ) % QLatin1String ( " </h1>\n <hr>\n <table class=\" list-view\" >\n " );
350
+
351
+ // EPSG
352
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " CRS" ) % QLatin1String ( " </td><td>" ) % crs ().authid () % QLatin1String ( " - " );
353
+ myMetadata += crs ().description () % QLatin1String ( " - " );
354
+ if ( crs ().isGeographic () )
355
+ myMetadata += tr ( " Geographic" );
327
356
else
328
- {
329
- myMetadata += ' *' + tr ( " NoDataValue not set" ) + ' *' ;
330
- }
331
- myMetadata += QLatin1String ( " </p>\n " );
357
+ myMetadata += tr ( " Projected" );
358
+ myMetadata += QLatin1String ( " </td></tr>\n " );
359
+
360
+ // Extent
361
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Extent" ) % QLatin1String ( " </td><td>" ) % extent ().toString () % QLatin1String ( " </td></tr>\n " );
362
+
363
+ // unit
364
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Unit" ) % QLatin1String ( " </td><td>" ) % QgsUnitTypes::toString ( crs ().mapUnits () ) % QLatin1String ( " </td></tr>\n " );
365
+
366
+ // Raster Width
367
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Width" ) % QLatin1String ( " </td><td>" );
368
+ if ( dataProvider ()->capabilities () & QgsRasterDataProvider::Size )
369
+ myMetadata += QString::number ( width () );
370
+ else
371
+ myMetadata += tr ( " n/a" );
372
+ myMetadata += QLatin1String ( " </td></tr>\n " );
332
373
333
- myMetadata += QLatin1String ( " </p>\n " );
334
- myMetadata += QLatin1String ( " <p class=\" glossy\" >" );
335
- myMetadata += tr ( " Data Type" );
336
- myMetadata += QLatin1String ( " </p>\n " );
337
- myMetadata += QLatin1String ( " <p>" );
338
- // just use the first band
374
+ // Raster height
375
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Height" ) % QLatin1String ( " </td><td>" );
376
+ if ( dataProvider ()->capabilities () & QgsRasterDataProvider::Size )
377
+ myMetadata += QString::number ( height () );
378
+ else
379
+ myMetadata += tr ( " n/a" );
380
+ myMetadata += QLatin1String ( " </td></tr>\n " );
381
+
382
+ // Data type
383
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Data type" ) % QLatin1String ( " </td><td>" );
384
+ // Just use the first band
339
385
switch ( mDataProvider ->sourceDataType ( 1 ) )
340
386
{
341
387
case Qgis::Byte:
@@ -374,147 +420,71 @@ QString QgsRasterLayer::htmlMetadata() const
374
420
default :
375
421
myMetadata += tr ( " Could not determine raster data type." );
376
422
}
377
- myMetadata += QLatin1String ( " </p>\n " );
378
-
379
- myMetadata += QLatin1String ( " <p class=\" glossy\" >" );
380
- myMetadata += tr ( " Pyramid overviews" );
381
- myMetadata += QLatin1String ( " </p>\n " );
382
- myMetadata += QLatin1String ( " <p>" );
383
-
384
- myMetadata += QLatin1String ( " <p class=\" glossy\" >" );
385
- myMetadata += tr ( " Layer Spatial Reference System" );
386
- myMetadata += QLatin1String ( " </p>\n " );
387
- myMetadata += QLatin1String ( " <p>" );
388
- myMetadata += crs ().toProj4 ();
389
- myMetadata += QLatin1String ( " </p>\n " );
390
-
391
- myMetadata += QLatin1String ( " <p class=\" glossy\" >" );
392
- myMetadata += tr ( " Layer Extent (layer original source projection)" );
393
- myMetadata += QLatin1String ( " </p>\n " );
394
- myMetadata += QLatin1String ( " <p>" );
395
- myMetadata += mDataProvider ->extent ().toString ();
396
- myMetadata += QLatin1String ( " </p>\n " );
397
-
398
- // output coordinate system
399
- // TODO: this is not related to layer, to be removed? [MD]
400
- #if 0
401
- myMetadata += "<tr><td class=\"glossy\">";
402
- myMetadata += tr( "Project Spatial Reference System" );
403
- myMetadata += "</p>\n";
404
- myMetadata += "<p>";
405
- myMetadata += mCoordinateTransform->destCRS().toProj4();
406
- myMetadata += "</p>\n";
407
- #endif
423
+ myMetadata += QLatin1String ( " </td></tr>\n " );
408
424
409
- //
410
- // Add the stats for each band to the output table
411
- //
412
- int myBandCountInt = bandCount ();
413
- for ( int myIteratorInt = 1 ; myIteratorInt <= myBandCountInt; ++myIteratorInt )
414
- {
415
- QgsDebugMsgLevel ( " Raster properties : checking if band " + QString::number ( myIteratorInt ) + " has stats? " , 4 );
416
- // band name
417
- myMetadata += QLatin1String ( " <p class=\" glossy\" >\n " );
418
- myMetadata += tr ( " Band" );
419
- myMetadata += QLatin1String ( " </p>\n " );
420
- myMetadata += QLatin1String ( " <p>" );
421
- myMetadata += bandName ( myIteratorInt );
422
- myMetadata += QLatin1String ( " </p>\n " );
423
- // band number
424
- myMetadata += QLatin1String ( " <p>" );
425
- myMetadata += tr ( " Band No" );
426
- myMetadata += QLatin1String ( " </p>\n " );
427
- myMetadata += QLatin1String ( " <p>\n " );
428
- myMetadata += QString::number ( myIteratorInt );
429
- myMetadata += QLatin1String ( " </p>\n " );
430
-
431
- // check if full stats for this layer have already been collected
432
- if ( !provider->hasStatistics ( myIteratorInt ) ) // not collected
425
+ // Bands section
426
+ myMetadata += QLatin1String ( " </table>\n <br><br><h1>" ) % tr ( " Bands" ) % QLatin1String ( " </h1>\n <hr>\n <table class=\" list-view\" >\n " );
427
+
428
+ // Band count
429
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Band count" ) % QLatin1String ( " </td><td>" ) % QString::number ( bandCount () ) % QLatin1String ( " </td></tr>\n " );
430
+
431
+ // Band table
432
+ myMetadata += " </table>\n <br><table width=\" 100%\" class=\" tabular-view\" >\n " ;
433
+ myMetadata += " <tr><th>" % tr ( " Number" ) % " </th><th>" % tr ( " Band" ) % " </th><th>" % tr ( " No-Data" ) % " </th><th>" % tr ( " Min" ) % " </th><th>" % tr ( " Max" ) % " </th></tr>\n " ;
434
+
435
+ QgsRasterDataProvider *provider = const_cast < QgsRasterDataProvider * >( mDataProvider );
436
+ for ( int i = 1 ; i <= bandCount (); i++ )
437
+ {
438
+ QString rowClass = QString ( " " );
439
+ if ( i % 2 )
440
+ rowClass = QString ( " class=\" odd-row\" " );
441
+ myMetadata += " <tr " % rowClass % " ><td>" % QString::number ( i ) % " </td><td>" % bandName ( i ) % " </td><td>" ;
442
+
443
+ if ( dataProvider ()->sourceHasNoDataValue ( i ) )
444
+ myMetadata += QString::number ( dataProvider ()->sourceNoDataValue ( i ) );
445
+ else
446
+ myMetadata += tr ( " n/a" );
447
+ myMetadata += " </td>" ;
448
+
449
+ if ( provider->hasStatistics ( i ) )
433
450
{
434
- QgsDebugMsgLevel ( " .....no" , 4 );
435
-
436
- myMetadata += QLatin1String ( " <p>" );
437
- myMetadata += tr ( " No Stats" );
438
- myMetadata += QLatin1String ( " </p>\n " );
439
- myMetadata += QLatin1String ( " <p>\n " );
440
- myMetadata += tr ( " No stats collected yet" );
441
- myMetadata += QLatin1String ( " </p>\n " );
451
+ QgsRasterBandStats myRasterBandStats = provider->bandStatistics ( i );
452
+ myMetadata += " <td>" % QString::number ( myRasterBandStats.minimumValue , ' f' , 10 ) % " </td>" ;
453
+ myMetadata += " <td>" % QString::number ( myRasterBandStats.maximumValue , ' f' , 10 ) % " </td>" ;
442
454
}
443
- else // collected - show full detail
455
+ else
444
456
{
445
- QgsDebugMsgLevel ( " .....yes" , 4 );
446
-
447
- QgsRasterBandStats myRasterBandStats = provider->bandStatistics ( myIteratorInt );
448
- // Min Val
449
- myMetadata += QLatin1String ( " <p>" );
450
- myMetadata += tr ( " Min Val" );
451
- myMetadata += QLatin1String ( " </p>\n " );
452
- myMetadata += QLatin1String ( " <p>\n " );
453
- myMetadata += QString::number ( myRasterBandStats.minimumValue , ' f' , 10 );
454
- myMetadata += QLatin1String ( " </p>\n " );
455
-
456
- // Max Val
457
- myMetadata += QLatin1String ( " <p>" );
458
- myMetadata += tr ( " Max Val" );
459
- myMetadata += QLatin1String ( " </p>\n " );
460
- myMetadata += QLatin1String ( " <p>\n " );
461
- myMetadata += QString::number ( myRasterBandStats.maximumValue , ' f' , 10 );
462
- myMetadata += QLatin1String ( " </p>\n " );
463
-
464
- // Range
465
- myMetadata += QLatin1String ( " <p>" );
466
- myMetadata += tr ( " Range" );
467
- myMetadata += QLatin1String ( " </p>\n " );
468
- myMetadata += QLatin1String ( " <p>\n " );
469
- myMetadata += QString::number ( myRasterBandStats.range , ' f' , 10 );
470
- myMetadata += QLatin1String ( " </p>\n " );
471
-
472
- // Mean
473
- myMetadata += QLatin1String ( " <p>" );
474
- myMetadata += tr ( " Mean" );
475
- myMetadata += QLatin1String ( " </p>\n " );
476
- myMetadata += QLatin1String ( " <p>\n " );
477
- myMetadata += QString::number ( myRasterBandStats.mean , ' f' , 10 );
478
- myMetadata += QLatin1String ( " </p>\n " );
479
-
480
- // sum of squares
481
- myMetadata += QLatin1String ( " <p>" );
482
- myMetadata += tr ( " Sum of squares" );
483
- myMetadata += QLatin1String ( " </p>\n " );
484
- myMetadata += QLatin1String ( " <p>\n " );
485
- myMetadata += QString::number ( myRasterBandStats.sumOfSquares , ' f' , 10 );
486
- myMetadata += QLatin1String ( " </p>\n " );
487
-
488
- // standard deviation
489
- myMetadata += QLatin1String ( " <p>" );
490
- myMetadata += tr ( " Standard Deviation" );
491
- myMetadata += QLatin1String ( " </p>\n " );
492
- myMetadata += QLatin1String ( " <p>\n " );
493
- myMetadata += QString::number ( myRasterBandStats.stdDev , ' f' , 10 );
494
- myMetadata += QLatin1String ( " </p>\n " );
495
-
496
- // sum of all cells
497
- myMetadata += QLatin1String ( " <p>" );
498
- myMetadata += tr ( " Sum of all cells" );
499
- myMetadata += QLatin1String ( " </p>\n " );
500
- myMetadata += QLatin1String ( " <p>\n " );
501
- myMetadata += QString::number ( myRasterBandStats.sum , ' f' , 10 );
502
- myMetadata += QLatin1String ( " </p>\n " );
503
-
504
- // number of cells
505
- myMetadata += QLatin1String ( " <p>" );
506
- myMetadata += tr ( " Cell Count" );
507
- myMetadata += QLatin1String ( " </p>\n " );
508
- myMetadata += QLatin1String ( " <p>\n " );
509
- myMetadata += QString::number ( myRasterBandStats.elementCount );
510
- myMetadata += QLatin1String ( " </p>\n " );
457
+ myMetadata += " <td>" % tr ( " n/a" ) % " </td><td>" % tr ( " n/a" ) % " </td>" ;
511
458
}
459
+
460
+ myMetadata += " </tr>\n " ;
512
461
}
513
462
514
- QgsDebugMsgLevel ( myMetadata, 4 );
463
+ // close previous bands table and start references
464
+ myMetadata += QLatin1String ( " </table>\n <br><br><h1>" ) % tr ( " References" ) % QLatin1String ( " </h1>\n <hr>\n <table class=\" list-view\" >\n " );
465
+
466
+ // data URL
467
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Data URL" ) % QLatin1String ( " </td><td>" ) % dataUrl () % QLatin1String ( " </td></tr>\n " );
468
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Data Format" ) % QLatin1String ( " </td><td>" ) % dataUrlFormat () % QLatin1String ( " </td></tr>\n " );
469
+
470
+ // attribution
471
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Attribution" ) % QLatin1String ( " </td><td>" ) % attribution () % QLatin1String ( " </td></tr>\n " );
472
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Attribution URL" ) % QLatin1String ( " </td><td>" ) % attributionUrl () % QLatin1String ( " </td></tr>\n " );
473
+
474
+ // metadata URL
475
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Metadata URL" ) % QLatin1String ( " </td><td>" ) % metadataUrl () % QLatin1String ( " </td></tr>\n " );
476
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Metadata Type" ) % QLatin1String ( " </td><td>" ) % metadataUrlType () % QLatin1String ( " </td></tr>\n " );
477
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Metadata Format" ) % QLatin1String ( " </td><td>" ) % metadataUrlFormat () % QLatin1String ( " </td></tr>\n " );
478
+
479
+ // legend URL
480
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Legend URL" ) % QLatin1String ( " </td><td>" ) % legendUrl () % QLatin1String ( " </td></tr>\n " );
481
+ myMetadata += QLatin1String ( " <tr><td class=\" highlight\" >" ) % tr ( " Legend Format" ) % QLatin1String ( " </td><td>" ) % legendUrlFormat () % QLatin1String ( " </td></tr>\n " );
482
+
483
+ myMetadata += QStringLiteral ( " </table>\n </body>\n </html>\n " );
515
484
return myMetadata;
516
485
}
517
486
487
+
518
488
/* *
519
489
* @param bandNumber the number of the band to use for generating a pixmap of the associated palette
520
490
* @return a 100x100 pixel QPixmap of the bands palette
0 commit comments