mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
calculate FID for GPKG
This commit is contained in:
parent
d3ccd6ee5f
commit
fc8062e1a7
@ -638,7 +638,23 @@ QgsVectorLayer *QgsOfflineEditing::copyVectorLayer( QgsVectorLayer *layer, sqlit
|
||||
options = CSLSetNameValue( options, "OVERWRITE", "YES" );
|
||||
options = CSLSetNameValue( options, "IDENTIFIER", tr( "%1 (offline)" ).arg( layer->name() ).toUtf8().constData() );
|
||||
options = CSLSetNameValue( options, "DESCRIPTION", layer->dataComment().toUtf8().constData() );
|
||||
options = CSLSetNameValue( options, "FID", "gpkg_id" );
|
||||
|
||||
//the FID-name should not exist in the original data
|
||||
QString fidBase( QStringLiteral( "fid" ) );
|
||||
QString fid = fidBase;
|
||||
int counter = 1;
|
||||
while ( layer->dataProvider()->fields().lookupField( fid ) >= 0 && counter < 10000 )
|
||||
{
|
||||
fid = fidBase + '_' + QString::number( counter );
|
||||
counter++;
|
||||
}
|
||||
if ( counter == 10000 )
|
||||
{
|
||||
showWarning( tr( "Cannot make FID-name for GPKG " ) );
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
options = CSLSetNameValue( options, "FID", fid.toUtf8().constData() );
|
||||
|
||||
if ( layer->isSpatial() )
|
||||
{
|
||||
@ -748,11 +764,9 @@ QgsVectorLayer *QgsOfflineEditing::copyVectorLayer( QgsVectorLayer *layer, sqlit
|
||||
// fill gap in QgsAttributeMap if geometry column is not last (WORKAROUND)
|
||||
QgsAttributes attrs = f.attributes();
|
||||
int column = 0;
|
||||
if ( containerType == GPKG && layer->dataProvider()->fields().lookupField( "gpkg_fid" ) == -1 )
|
||||
{
|
||||
// newAttrs has an addition FID attribute, so we have to add a dummy in the original set
|
||||
// on GPKG newAttrs has an addition FID attribute, so we have to add a dummy in the original set
|
||||
if ( containerType == GPKG )
|
||||
column++;
|
||||
}
|
||||
QgsAttributes newAttrs( attrs.count() + column );
|
||||
for ( int it = 0; it < attrs.count(); ++it )
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user