Message posté par : Feneck91
----------------------------------------
Le but est de le faire en python, pas de le faire manuelllement.
d'ailleurs avec la version 3.6 c'était déjà possiblle en sauvant le style dans le
geopackage, je n'ai pas réussi à le faire en python.
Le C++ ne me dérange pas, je fais du Python, du C++, du JAVA, du C# et j'en passe....
Dans le QgsVectorFileWriter.writeAsVectorFormat il y a bien l'option
options.symbologyExport = QgsVectorFileWriter.FeatureSymbology mais ça n'a aucun
effet.
D'ailleur on peut voir que dans la fonction QgsPackageAlgorithm::packageVectorLayer
ilfait bien appel à QgsVectorFileWriter::writeAsVectorFormat par contre, il y a du code :
-----------------
Code :
if ( saveStyles )
{
std::unique_ptr< QgsVectorLayer > res = qgis::make_unique< QgsVectorLayer
>( QStringLiteral( "%1|layername=%2" ).arg( newFilename, newLayer ) );
if ( res )
{
QString errorMsg;
QDomDocument doc( QStringLiteral( "qgis" ) );
QgsReadWriteContext context;
layer->exportNamedStyle( doc, errorMsg, context );
if ( !errorMsg.isEmpty() )
{
feedback->reportError( QObject::tr( "Could not retrieve existing layer
style: %1 " ).arg( errorMsg ) );
}
else
{
if ( !res->importNamedStyle( doc, errorMsg ) )
{
feedback->reportError( QObject::tr( "Could not set existing layer
style: %1 " ).arg( errorMsg ) );
}
else
{
QgsSettings settings;
// this is not nice -- but needed to avoid an "overwrite" prompt
messagebox from the provider! This api needs a rework to avoid this.
QVariant prevOverwriteStyle = settings.value( QStringLiteral(
"qgis/overwriteStyle" ) );
settings.setValue( QStringLiteral( "qgis/overwriteStyle" ), true );
res->saveStyleToDatabase( newLayer, QString(), true, QString(), errorMsg
);
settings.setValue( QStringLiteral( "qgis/overwriteStyle" ),
prevOverwriteStyle );
if ( !errorMsg.isEmpty() )
{
feedback->reportError( QObject::tr( "Could not save layer style: %1
" ).arg( errorMsg ) );
}
}
}
-----------------
Je vais tenter de m'en inspirer...
Si vous avez des idées... En tout cas merci.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=322661#p322661
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net