@@ -433,55 +433,61 @@ void QgsOfflineEditing::copyVectorLayer( QgsVectorLayer* layer, sqlite3* db, con
433
433
}
434
434
sql += " )" ;
435
435
436
+ int rc = sqlExec ( db, sql );
437
+
436
438
// add geometry column
437
- QString geomType = " " ;
438
- switch ( layer->wkbType () )
439
+ if ( layer->hasGeometryType () )
439
440
{
440
- case QGis::WKBPoint:
441
- geomType = " POINT" ;
442
- break ;
443
- case QGis::WKBMultiPoint:
444
- geomType = " MULTIPOINT" ;
445
- break ;
446
- case QGis::WKBLineString:
447
- geomType = " LINESTRING" ;
448
- break ;
449
- case QGis::WKBMultiLineString:
450
- geomType = " MULTILINESTRING" ;
451
- break ;
452
- case QGis::WKBPolygon:
453
- geomType = " POLYGON" ;
454
- break ;
455
- case QGis::WKBMultiPolygon:
456
- geomType = " MULTIPOLYGON" ;
457
- break ;
458
- default :
459
- showWarning ( tr ( " QGIS wkbType %1 not supported" ).arg ( layer->wkbType () ) );
460
- break ;
461
- };
462
- QString sqlAddGeom = QString ( " SELECT AddGeometryColumn('%1', 'Geometry', %2, '%3', 2)" )
463
- .arg ( tableName )
464
- .arg ( layer->crs ().authid ().startsWith ( " EPSG:" , Qt::CaseInsensitive ) ? layer->crs ().authid ().mid ( 5 ).toLong () : 0 )
465
- .arg ( geomType );
466
-
467
- // create spatial index
468
- QString sqlCreateIndex = QString ( " SELECT CreateSpatialIndex('%1', 'Geometry')" ).arg ( tableName );
441
+ QString geomType = " " ;
442
+ switch ( layer->wkbType () )
443
+ {
444
+ case QGis::WKBPoint:
445
+ geomType = " POINT" ;
446
+ break ;
447
+ case QGis::WKBMultiPoint:
448
+ geomType = " MULTIPOINT" ;
449
+ break ;
450
+ case QGis::WKBLineString:
451
+ geomType = " LINESTRING" ;
452
+ break ;
453
+ case QGis::WKBMultiLineString:
454
+ geomType = " MULTILINESTRING" ;
455
+ break ;
456
+ case QGis::WKBPolygon:
457
+ geomType = " POLYGON" ;
458
+ break ;
459
+ case QGis::WKBMultiPolygon:
460
+ geomType = " MULTIPOLYGON" ;
461
+ break ;
462
+ default :
463
+ showWarning ( tr ( " QGIS wkbType %1 not supported" ).arg ( layer->wkbType () ) );
464
+ break ;
465
+ };
466
+ QString sqlAddGeom = QString ( " SELECT AddGeometryColumn('%1', 'Geometry', %2, '%3', 2)" )
467
+ .arg ( tableName )
468
+ .arg ( layer->crs ().authid ().startsWith ( " EPSG:" , Qt::CaseInsensitive ) ? layer->crs ().authid ().mid ( 5 ).toLong () : 0 )
469
+ .arg ( geomType );
470
+
471
+ // create spatial index
472
+ QString sqlCreateIndex = QString ( " SELECT CreateSpatialIndex('%1', 'Geometry')" ).arg ( tableName );
469
473
470
- int rc = sqlExec ( db, sql );
471
- if ( rc == SQLITE_OK )
472
- {
473
- rc = sqlExec ( db, sqlAddGeom );
474
474
if ( rc == SQLITE_OK )
475
475
{
476
- rc = sqlExec ( db, sqlCreateIndex );
476
+ rc = sqlExec ( db, sqlAddGeom );
477
+ if ( rc == SQLITE_OK )
478
+ {
479
+ rc = sqlExec ( db, sqlCreateIndex );
480
+ }
477
481
}
478
482
}
479
483
480
484
if ( rc == SQLITE_OK )
481
485
{
482
486
// add new layer
483
- QgsVectorLayer* newLayer = new QgsVectorLayer ( QString ( " dbname='%1' table='%2'(Geometry) sql=" )
484
- .arg ( offlineDbPath ).arg ( tableName ), tableName + " (offline)" , " spatialite" );
487
+ QgsVectorLayer* newLayer = new QgsVectorLayer ( QString ( " dbname='%1' table='%2'%3 sql=" )
488
+ .arg ( offlineDbPath )
489
+ .arg ( tableName ).arg ( layer->hasGeometryType () ? " (Geometry)" : " " ),
490
+ tableName + " (offline)" , " spatialite" );
485
491
if ( newLayer->isValid () )
486
492
{
487
493
// mark as offline layer
0 commit comments