PostgreSQL: Add new geometry types

Allow PolyhedralSurface and TIN in PostgreSQL table.
Add a new GeometryColumnType and Capabilities : Surfaces.
This commit is contained in:
Loïc Bartoletti 2024-09-04 07:09:52 +02:00 committed by Loïc Bartoletti
parent 9c5f936222
commit dc65b077aa
6 changed files with 12 additions and 1 deletions

View File

@ -84,6 +84,7 @@ QgsAbstractDatabaseProviderConnection.Curves = QgsAbstractDatabaseProviderConnec
QgsAbstractDatabaseProviderConnection.SinglePoint = QgsAbstractDatabaseProviderConnection.GeometryColumnCapability.SinglePoint
QgsAbstractDatabaseProviderConnection.SingleLineString = QgsAbstractDatabaseProviderConnection.GeometryColumnCapability.SingleLineString
QgsAbstractDatabaseProviderConnection.SinglePolygon = QgsAbstractDatabaseProviderConnection.GeometryColumnCapability.SinglePolygon
QgsAbstractDatabaseProviderConnection.PolyhedralSurfaces = QgsAbstractDatabaseProviderConnection.GeometryColumnCapability.PolyhedralSurfaces
QgsAbstractDatabaseProviderConnection.GeometryColumnCapability.baseClass = QgsAbstractDatabaseProviderConnection
QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities = lambda flags=0: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability(flags)
QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities.baseClass = QgsAbstractDatabaseProviderConnection

View File

@ -373,6 +373,7 @@ This information is calculated from the geometry columns types.
SinglePoint,
SingleLineString,
SinglePolygon,
PolyhedralSurfaces,
};
typedef QFlags<QgsAbstractDatabaseProviderConnection::GeometryColumnCapability> GeometryColumnCapabilities;

View File

@ -373,6 +373,7 @@ This information is calculated from the geometry columns types.
SinglePoint,
SingleLineString,
SinglePolygon,
PolyhedralSurfaces,
};
typedef QFlags<QgsAbstractDatabaseProviderConnection::GeometryColumnCapability> GeometryColumnCapabilities;

View File

@ -533,6 +533,7 @@ class CORE_EXPORT QgsAbstractDatabaseProviderConnection : public QgsAbstractProv
SinglePoint = 1 << 5, //!< Supports single point types (as distinct from multi point types) \since QGIS 3.28
SingleLineString = 1 << 6, //!< Supports single linestring types (as distinct from multi line types) \since QGIS 3.28
SinglePolygon = 1 << 7, //!< Supports single polygon types (as distinct from multi polygon types) \since QGIS 3.28
PolyhedralSurfaces = 1 << 8, //!< Supports polyhedral surfaces (PolyhedralSurface, TIN) types (as distinct from multi polygon types) \since QGIS 3.40
};
// TODO QGIS 4.0 -- remove SinglePart

View File

@ -169,6 +169,12 @@ QgsNewVectorTableDialog::QgsNewVectorTableDialog( QgsAbstractDatabaseProviderCon
addGeomItem( Qgis::WkbType::MultiSurface );
}
if ( conn->geometryColumnCapabilities().testFlag( QgsAbstractDatabaseProviderConnection::GeometryColumnCapability::PolyhedralSurfaces ) )
{
addGeomItem( Qgis::WkbType::PolyhedralSurface );
addGeomItem( Qgis::WkbType::TIN );
}
mGeomTypeCbo->setCurrentIndex( 0 );
const bool hasZ { conn->geometryColumnCapabilities().testFlag( QgsAbstractDatabaseProviderConnection::GeometryColumnCapability::Z ) };

View File

@ -124,7 +124,8 @@ void QgsPostgresProviderConnection::setDefaultCapabilities()
GeometryColumnCapability::SinglePoint,
GeometryColumnCapability::SingleLineString,
GeometryColumnCapability::SinglePolygon,
GeometryColumnCapability::Curves
GeometryColumnCapability::Curves,
GeometryColumnCapability::PolyhedralSurfaces
};
mSqlLayerDefinitionCapabilities =
{