@@ -48,10 +48,6 @@ extern "C"
48
48
#include < spatialite.h>
49
49
}
50
50
51
- // TODO: DEBUG
52
- #include < QDebug>
53
- // END
54
-
55
51
#define CUSTOM_PROPERTY_IS_OFFLINE_EDITABLE " isOfflineEditable"
56
52
#define CUSTOM_PROPERTY_REMOTE_SOURCE " remoteSource"
57
53
#define CUSTOM_PROPERTY_REMOTE_PROVIDER " remoteProvider"
@@ -518,8 +514,10 @@ QgsVectorLayer *QgsOfflineEditing::copyVectorLayer( QgsVectorLayer *layer, sqlit
518
514
// add geometry column
519
515
if ( layer->isSpatial () )
520
516
{
517
+ const QgsWkbTypes::Type sourceWkbType = layer->wkbType ();
518
+
521
519
QString geomType;
522
- switch ( layer-> wkbType ( ) )
520
+ switch ( QgsWkbTypes::flatType ( sourceWkbType ) )
523
521
{
524
522
case QgsWkbTypes::Point :
525
523
geomType = QStringLiteral ( " POINT" );
@@ -540,13 +538,31 @@ QgsVectorLayer *QgsOfflineEditing::copyVectorLayer( QgsVectorLayer *layer, sqlit
540
538
geomType = QStringLiteral ( " MULTIPOLYGON" );
541
539
break ;
542
540
default :
543
- showWarning ( tr ( " QGIS wkbType %1 not supported " ).arg ( layer->wkbType () ) );
541
+ showWarning ( tr ( " Layer %1 has unsupported geometry type %2. " ).arg ( layer->name (), QgsWkbTypes::displayString ( layer-> wkbType () ) ) );
544
542
break ;
545
543
};
546
- QString sqlAddGeom = QStringLiteral ( " SELECT AddGeometryColumn('%1', 'Geometry', %2, '%3', 2)" )
547
- .arg ( tableName )
548
- .arg ( layer->crs ().authid ().startsWith ( QLatin1String ( " EPSG:" ), Qt::CaseInsensitive ) ? layer->crs ().authid ().mid ( 5 ).toLong () : 0 )
549
- .arg ( geomType );
544
+
545
+ QString zmInfo = QStringLiteral ( " XY" );
546
+
547
+ if ( QgsWkbTypes::hasZ ( sourceWkbType ) )
548
+ zmInfo += ' Z' ;
549
+ if ( QgsWkbTypes::hasM ( sourceWkbType ) )
550
+ zmInfo += ' M' ;
551
+
552
+ QString epsgCode;
553
+
554
+ if ( layer->crs ().authid ().startsWith ( QLatin1String ( " EPSG:" ), Qt::CaseInsensitive ) )
555
+ {
556
+ epsgCode = layer->crs ().authid ().mid ( 5 );
557
+ }
558
+ else
559
+ {
560
+ epsgCode = ' 0' ;
561
+ showWarning ( tr ( " Layer %1 has unsupported Coordinate Reference System (%2)." ).arg ( layer->name (), layer->crs ().authid () ) );
562
+ }
563
+
564
+ QString sqlAddGeom = QStringLiteral ( " SELECT AddGeometryColumn('%1', 'Geometry', %2, '%3', '%4')" )
565
+ .arg ( tableName, epsgCode, geomType, zmInfo );
550
566
551
567
// create spatial index
552
568
QString sqlCreateIndex = QStringLiteral ( " SELECT CreateSpatialIndex('%1', 'Geometry')" ).arg ( tableName );
0 commit comments