QString QgsMemoryProvider::dataSourceUri( bool expandAuthConfig ) const { Q_UNUSED( expandAuthConfig ) QUrl uri( QStringLiteral( "memory" ) ); QString geometry = QgsWkbTypes::displayString( mWkbType ); uri.addQueryItem( QStringLiteral( "geometry" ), geometry ); if ( mCrs.isValid() ) { QString crsDef( QLatin1String( "" ) ); QString authid = mCrs.authid(); if ( authid.startsWith( QLatin1String( "EPSG:" ) ) ) { crsDef = authid; } else { int srid = mCrs.postgisSrid(); if ( srid ) { crsDef = QStringLiteral( "postgis:%1" ).arg( srid ); } else { crsDef = QStringLiteral( "wkt:%1" ).arg( mCrs.toWkt() ); } } uri.addQueryItem( QStringLiteral( "crs" ), crsDef ); } if ( mSpatialIndex ) { uri.addQueryItem( QStringLiteral( "index" ), QStringLiteral( "yes" ) ); } QgsAttributeList attrs = const_cast<QgsMemoryProvider *>( this )->attributeIndexes(); for ( int i = 0; i < attrs.size(); i++ ) { QgsField field = mFields.at( attrs[i] ); QString fieldDef = field.name(); fieldDef.append( QStringLiteral( ":%2(%3,%4)" ).arg( field.typeName() ).arg( field.length() ).arg( field.precision() ) ); uri.addQueryItem( QStringLiteral( "field" ), fieldDef ); } return QString( uri.toEncoded() ); }
QString QgsMemoryProvider::dataSourceUri() const { QUrl uri( "memory" ); QString geometry; switch ( mWkbType ) { case QGis::WKBPoint : geometry = "Point"; break; case QGis::WKBLineString : geometry = "LineString"; break; case QGis::WKBPolygon : geometry = "Polygon"; break; case QGis::WKBMultiPoint : geometry = "MultiPoint"; break; case QGis::WKBMultiLineString : geometry = "MultiLineString"; break; case QGis::WKBMultiPolygon : geometry = "MultiPolygon"; break; default: geometry = ""; break; } uri.addQueryItem( "geometry", geometry ); if ( mCrs.isValid() ) { QString crsDef( "" ); QString authid = mCrs.authid(); if ( authid.startsWith( "EPSG:" ) ) { crsDef = authid; } else { int srid = mCrs.postgisSrid(); if ( srid ) { crsDef = QString( "postgis:%1" ).arg( srid ); } else { crsDef = QString( "wkt:%1" ).arg( mCrs.toWkt() ); } } uri.addQueryItem( "crs", crsDef ); } if ( mSpatialIndex ) { uri.addQueryItem( "index", "yes" ); } QgsAttributeList attrs = const_cast<QgsMemoryProvider *>( this )->attributeIndexes(); for ( int i = 0; i < attrs.size(); i++ ) { QgsField field = mFields[attrs[i]]; QString fieldDef = field.name(); fieldDef.append( QString( ":%2(%3,%4)" ).arg( field.typeName() ).arg( field.length() ).arg( field.precision() ) ); uri.addQueryItem( "field", fieldDef ); } return QString( uri.toEncoded() ); }