@@ -2993,47 +2993,18 @@ QGISEXTERN bool createEmptyDataSource( const QString &uri,
2993
2993
OGRwkbGeometryType OGRvectortype = wkbUnknown;
2994
2994
switch ( vectortype )
2995
2995
{
2996
- case QgsWkbTypes::Point:
2997
- OGRvectortype = wkbPoint;
2998
- break ;
2999
- case QgsWkbTypes::Point25D:
3000
- OGRvectortype = wkbPoint25D;
3001
- break ;
3002
- case QgsWkbTypes::LineString:
3003
- OGRvectortype = wkbLineString;
3004
- break ;
3005
- case QgsWkbTypes::LineString25D:
3006
- OGRvectortype = wkbLineString25D;
3007
- break ;
3008
- case QgsWkbTypes::Polygon:
3009
- OGRvectortype = wkbPolygon;
3010
- break ;
3011
- case QgsWkbTypes::Polygon25D:
3012
- OGRvectortype = wkbPolygon25D;
3013
- break ;
3014
- case QgsWkbTypes::MultiPoint:
3015
- OGRvectortype = wkbMultiPoint;
3016
- break ;
3017
- case QgsWkbTypes::MultiPoint25D:
3018
- OGRvectortype = wkbMultiPoint25D;
3019
- break ;
3020
- case QgsWkbTypes::MultiLineString:
3021
- OGRvectortype = wkbMultiLineString;
3022
- break ;
3023
- case QgsWkbTypes::MultiLineString25D:
3024
- OGRvectortype = wkbMultiLineString25D;
3025
- break ;
3026
- case QgsWkbTypes::MultiPolygon:
3027
- OGRvectortype = wkbMultiPolygon;
3028
- break ;
3029
- case QgsWkbTypes::MultiPolygon25D:
3030
- OGRvectortype = wkbMultiPolygon25D;
3031
- break ;
3032
- default :
2996
+ case QgsWkbTypes::GeometryCollection:
2997
+ case QgsWkbTypes::GeometryCollectionZ:
2998
+ case QgsWkbTypes::GeometryCollectionM:
2999
+ case QgsWkbTypes::GeometryCollectionZM:
3000
+ case QgsWkbTypes::Unknown:
3033
3001
{
3034
3002
QgsMessageLog::logMessage ( QObject::tr ( " Unknown vector type of %1" ).arg ( ( int )( vectortype ) ), QObject::tr ( " OGR" ) );
3035
3003
return false ;
3036
3004
}
3005
+
3006
+ default :
3007
+ OGRvectortype = QgsOgrProviderUtils::ogrTypeFromQgisType ( vectortype );
3037
3008
}
3038
3009
3039
3010
char **papszOptions = nullptr ;
@@ -4390,6 +4361,285 @@ void QgsOgrProviderUtils::invalidateCachedLastModifiedDate( const QString &dsNam
4390
4361
}
4391
4362
}
4392
4363
4364
+ OGRwkbGeometryType QgsOgrProviderUtils::ogrTypeFromQgisType ( QgsWkbTypes::Type type )
4365
+ {
4366
+ switch ( type )
4367
+ {
4368
+ case QgsWkbTypes::Point:
4369
+ return wkbPoint;
4370
+ case QgsWkbTypes::Point25D:
4371
+ case QgsWkbTypes::PointZ:
4372
+ return wkbPoint25D;
4373
+ case QgsWkbTypes::PointM:
4374
+ return wkbPointM;
4375
+ case QgsWkbTypes::PointZM:
4376
+ return wkbPointZM;
4377
+
4378
+ case QgsWkbTypes::LineString:
4379
+ return wkbLineString;
4380
+ case QgsWkbTypes::LineString25D:
4381
+ case QgsWkbTypes::LineStringZ:
4382
+ return wkbLineString25D;
4383
+ case QgsWkbTypes::LineStringM:
4384
+ return wkbLineStringM;
4385
+ case QgsWkbTypes::LineStringZM:
4386
+ return wkbLineStringZM;
4387
+
4388
+ case QgsWkbTypes::Polygon:
4389
+ return wkbPolygon;
4390
+ case QgsWkbTypes::Polygon25D:
4391
+ case QgsWkbTypes::PolygonZ:
4392
+ return wkbPolygon25D;
4393
+ case QgsWkbTypes::PolygonM:
4394
+ return wkbPolygonM;
4395
+ case QgsWkbTypes::PolygonZM:
4396
+ return wkbPolygonZM;
4397
+
4398
+ case QgsWkbTypes::MultiPoint:
4399
+ return wkbMultiPoint;
4400
+ case QgsWkbTypes::MultiPoint25D:
4401
+ case QgsWkbTypes::MultiPointZ:
4402
+ return wkbMultiPoint25D;
4403
+ case QgsWkbTypes::MultiPointM:
4404
+ return wkbMultiPointM;
4405
+ case QgsWkbTypes::MultiPointZM:
4406
+ return wkbMultiPointZM;
4407
+
4408
+ case QgsWkbTypes::MultiLineString:
4409
+ return wkbMultiLineString;
4410
+ case QgsWkbTypes::MultiLineString25D:
4411
+ case QgsWkbTypes::MultiLineStringZ:
4412
+ return wkbMultiLineString25D;
4413
+ case QgsWkbTypes::MultiLineStringM:
4414
+ return wkbMultiLineStringM;
4415
+ case QgsWkbTypes::MultiLineStringZM:
4416
+ return wkbMultiLineStringZM;
4417
+
4418
+ case QgsWkbTypes::MultiPolygon:
4419
+ return wkbMultiPolygon;
4420
+ case QgsWkbTypes::MultiPolygon25D:
4421
+ case QgsWkbTypes::MultiPolygonZ:
4422
+ return wkbMultiPolygon25D;
4423
+ case QgsWkbTypes::MultiPolygonM:
4424
+ return wkbMultiPolygonM;
4425
+ case QgsWkbTypes::MultiPolygonZM:
4426
+ return wkbMultiPolygonZM;
4427
+
4428
+ case QgsWkbTypes::CircularString:
4429
+ return wkbCircularString;
4430
+ case QgsWkbTypes::CircularStringZ:
4431
+ return wkbCircularStringZ;
4432
+ case QgsWkbTypes::CircularStringM:
4433
+ return wkbCircularStringM;
4434
+ case QgsWkbTypes::CircularStringZM:
4435
+ return wkbCircularStringZM;
4436
+
4437
+ case QgsWkbTypes::CompoundCurve:
4438
+ return wkbCompoundCurve;
4439
+ case QgsWkbTypes::CompoundCurveZ:
4440
+ return wkbCompoundCurveZ;
4441
+ case QgsWkbTypes::CompoundCurveM:
4442
+ return wkbCompoundCurveM;
4443
+ case QgsWkbTypes::CompoundCurveZM:
4444
+ return wkbCompoundCurveZM;
4445
+
4446
+ case QgsWkbTypes::CurvePolygon:
4447
+ return wkbCurvePolygon;
4448
+ case QgsWkbTypes::CurvePolygonZ:
4449
+ return wkbCurvePolygonZ;
4450
+ case QgsWkbTypes::CurvePolygonM:
4451
+ return wkbCurvePolygonM;
4452
+ case QgsWkbTypes::CurvePolygonZM:
4453
+ return wkbCurvePolygonZM;
4454
+
4455
+ case QgsWkbTypes::MultiCurve:
4456
+ return wkbMultiCurve;
4457
+ case QgsWkbTypes::MultiCurveZ:
4458
+ return wkbMultiCurveZ;
4459
+ case QgsWkbTypes::MultiCurveM:
4460
+ return wkbMultiCurveM;
4461
+ case QgsWkbTypes::MultiCurveZM:
4462
+ return wkbMultiCurveZM;
4463
+
4464
+ case QgsWkbTypes::MultiSurface:
4465
+ return wkbMultiSurface;
4466
+ case QgsWkbTypes::MultiSurfaceZ:
4467
+ return wkbMultiSurfaceZ;
4468
+ case QgsWkbTypes::MultiSurfaceM:
4469
+ return wkbMultiSurfaceM;
4470
+ case QgsWkbTypes::MultiSurfaceZM:
4471
+ return wkbMultiSurfaceZM;
4472
+
4473
+ case QgsWkbTypes::Triangle:
4474
+ return wkbTriangle;
4475
+ case QgsWkbTypes::TriangleZ:
4476
+ return wkbTriangleZ;
4477
+ case QgsWkbTypes::TriangleM:
4478
+ return wkbTriangleM;
4479
+ case QgsWkbTypes::TriangleZM:
4480
+ return wkbTriangleZM;
4481
+
4482
+ case QgsWkbTypes::NoGeometry:
4483
+ return wkbNone;
4484
+
4485
+ case QgsWkbTypes::GeometryCollection:
4486
+ return wkbGeometryCollection;
4487
+ case QgsWkbTypes::GeometryCollectionZ:
4488
+ return wkbGeometryCollection25D;
4489
+ case QgsWkbTypes::GeometryCollectionM:
4490
+ return wkbGeometryCollectionM;
4491
+ case QgsWkbTypes::GeometryCollectionZM:
4492
+ return wkbGeometryCollectionZM;
4493
+
4494
+ case QgsWkbTypes::Unknown:
4495
+ return wkbUnknown;
4496
+ }
4497
+ // no warnings!
4498
+ return wkbUnknown;
4499
+ }
4500
+
4501
+ QgsWkbTypes::Type QgsOgrProviderUtils::qgisTypeFromOgrType ( OGRwkbGeometryType type )
4502
+ {
4503
+ switch ( type )
4504
+ {
4505
+ case wkbUnknown:
4506
+ return QgsWkbTypes::Unknown;
4507
+
4508
+ case wkbPoint:
4509
+ return QgsWkbTypes::Point;
4510
+ case wkbLineString:
4511
+ return QgsWkbTypes::LineString;
4512
+ case wkbPolygon:
4513
+ return QgsWkbTypes::Polygon;
4514
+ case wkbMultiPoint:
4515
+ return QgsWkbTypes::MultiPoint;
4516
+ case wkbMultiLineString:
4517
+ return QgsWkbTypes::MultiLineString;
4518
+ case wkbMultiPolygon:
4519
+ return QgsWkbTypes::MultiPolygon;
4520
+ case wkbGeometryCollection:
4521
+ return QgsWkbTypes::GeometryCollection;
4522
+ case wkbCircularString:
4523
+ return QgsWkbTypes::CircularString;
4524
+ case wkbCompoundCurve:
4525
+ return QgsWkbTypes::CompoundCurve;
4526
+ case wkbCurvePolygon:
4527
+ return QgsWkbTypes::CurvePolygon;
4528
+ case wkbMultiCurve:
4529
+ return QgsWkbTypes::MultiCurve;
4530
+ case wkbMultiSurface:
4531
+ return QgsWkbTypes::MultiSurface;
4532
+ case wkbTriangle:
4533
+ return QgsWkbTypes::Triangle;
4534
+ case wkbNone:
4535
+ return QgsWkbTypes::NoGeometry;
4536
+
4537
+ case wkbCircularStringZ:
4538
+ return QgsWkbTypes::CircularStringZ;
4539
+ case wkbCompoundCurveZ:
4540
+ return QgsWkbTypes::CompoundCurveZ;
4541
+ case wkbCurvePolygonZ:
4542
+ return QgsWkbTypes::PolygonZ;
4543
+ case wkbMultiCurveZ:
4544
+ return QgsWkbTypes::MultiCurveZ;
4545
+ case wkbMultiSurfaceZ:
4546
+ return QgsWkbTypes::MultiSurfaceZ;
4547
+ case wkbTriangleZ:
4548
+ return QgsWkbTypes::TriangleZ;
4549
+
4550
+ case wkbPointM:
4551
+ return QgsWkbTypes::PointM;
4552
+ case wkbLineStringM:
4553
+ return QgsWkbTypes::LineStringM;
4554
+ case wkbPolygonM:
4555
+ return QgsWkbTypes::PolygonM;
4556
+ case wkbMultiPointM:
4557
+ return QgsWkbTypes::PointM;
4558
+ case wkbMultiLineStringM:
4559
+ return QgsWkbTypes::LineStringM;
4560
+ case wkbMultiPolygonM:
4561
+ return QgsWkbTypes::PolygonM;
4562
+ case wkbGeometryCollectionM:
4563
+ return QgsWkbTypes::GeometryCollectionM;
4564
+ case wkbCircularStringM:
4565
+ return QgsWkbTypes::CircularStringM;
4566
+ case wkbCompoundCurveM:
4567
+ return QgsWkbTypes::CompoundCurveM;
4568
+ case wkbCurvePolygonM:
4569
+ return QgsWkbTypes::PolygonM;
4570
+ case wkbMultiCurveM:
4571
+ return QgsWkbTypes::MultiCurveM;
4572
+ case wkbMultiSurfaceM:
4573
+ return QgsWkbTypes::MultiSurfaceM;
4574
+ case wkbTriangleM:
4575
+ return QgsWkbTypes::TriangleM;
4576
+
4577
+ case wkbPointZM:
4578
+ return QgsWkbTypes::PointZM;
4579
+ case wkbLineStringZM:
4580
+ return QgsWkbTypes::LineStringZM;
4581
+ case wkbPolygonZM:
4582
+ return QgsWkbTypes::PolygonZM;
4583
+ case wkbMultiPointZM:
4584
+ return QgsWkbTypes::MultiPointZM;
4585
+ case wkbMultiLineStringZM:
4586
+ return QgsWkbTypes::MultiLineStringZM;
4587
+ case wkbMultiPolygonZM:
4588
+ return QgsWkbTypes::MultiPolygonZM;
4589
+ case wkbGeometryCollectionZM:
4590
+ return QgsWkbTypes::GeometryCollectionZM;
4591
+ case wkbCircularStringZM:
4592
+ return QgsWkbTypes::CircularStringZM;
4593
+ case wkbCompoundCurveZM:
4594
+ return QgsWkbTypes::CompoundCurveZM;
4595
+ case wkbCurvePolygonZM:
4596
+ return QgsWkbTypes::CurvePolygonZM;
4597
+ case wkbMultiCurveZM:
4598
+ return QgsWkbTypes::MultiCurveZM;
4599
+ case wkbMultiSurfaceZM:
4600
+ return QgsWkbTypes::MultiSurfaceZM;
4601
+ case wkbTriangleZM:
4602
+ return QgsWkbTypes::TriangleZM;
4603
+
4604
+ case wkbPoint25D:
4605
+ return QgsWkbTypes::Point25D;
4606
+ case wkbLineString25D:
4607
+ return QgsWkbTypes::LineString25D;
4608
+ case wkbPolygon25D:
4609
+ return QgsWkbTypes::Polygon25D;
4610
+ case wkbMultiPoint25D:
4611
+ return QgsWkbTypes::MultiPoint25D;
4612
+ case wkbMultiLineString25D:
4613
+ return QgsWkbTypes::MultiLineString25D;
4614
+ case wkbMultiPolygon25D:
4615
+ return QgsWkbTypes::MultiPolygon25D;
4616
+ case wkbGeometryCollection25D:
4617
+ return QgsWkbTypes::GeometryCollectionZ;
4618
+
4619
+ case wkbCurve:
4620
+ case wkbSurface:
4621
+ case wkbCurveZ:
4622
+ case wkbSurfaceZ:
4623
+ case wkbCurveM:
4624
+ case wkbSurfaceM:
4625
+ case wkbCurveZM:
4626
+ case wkbSurfaceZM:
4627
+ return QgsWkbTypes::Unknown; // abstract types - no direct mapping to QGIS types
4628
+
4629
+ case wkbLinearRing:
4630
+ case wkbTIN:
4631
+ case wkbTINZ:
4632
+ case wkbTINM:
4633
+ case wkbTINZM:
4634
+ case wkbPolyhedralSurface:
4635
+ case wkbPolyhedralSurfaceZ:
4636
+ case wkbPolyhedralSurfaceM:
4637
+ case wkbPolyhedralSurfaceZM:
4638
+ return QgsWkbTypes::Unknown; // unsupported types
4639
+ }
4640
+ return QgsWkbTypes::Unknown;
4641
+ }
4642
+
4393
4643
4394
4644
QString QgsOgrProviderUtils::expandAuthConfig ( const QString &dsName )
4395
4645
{
0 commit comments