#1 Thu 30 August 2012 17:11
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
[ArcGis 9.3] bloquer le rafraichissemet en VBA
Bonjour,
Je produit des cartes en grand nombre via un développement en VBA (pas encore la version 10 pour Python)
Mon soucis est que la carte se rafraichit un grand nombre de fois entre chaque écriture de png.
J'ai bien la fonction '.ActiveView.Refresh' pour obliger ArcGis à redessiner la carte, mais existe-t-il une propriété 'DoNotRefresh' pour bloquer le rafraichissement auto ?
Ça me ferai gagner des heures de temps machine.
Renaud Mouche
Hors ligne
#2 Fri 31 August 2012 00:06
Re: [ArcGis 9.3] bloquer le rafraichissemet en VBA
tu as un rafraîchissement partiel (partial refresh un truc comme ça) en vba dans mon souvenir mais c'est bizarre que la carte se rafraîchit sans que tu lui demande surtout plusieurs fois.
sauf si tu bouge (pan ou zoom) auquel cas il faut bien qu'il affiche la zone demandée.
par contre il y a d'autre manière d'optimiser: poids des rasters ou formats (le jpeg c'est la misère pour arcgis, préféré le tif plus lourd mais non compressé donc gain de travail processeur, l'ecw, ou le sid), éviter les fichiers autocad ou micro-station, travailler en gdb et pas en mdb ni en shp, bien régler les seuils de zoom également pour ne pas afficher des rasters cachés par d'autres, etc.
Decris un peu mieux ton projet et je suis qu'on peut optimiser.
Il y a bien sur aussi le code vb mais la sans le voir c'est chaud de t'en dire plus.
[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)
~Géomaticien Indépendant~
Hors ligne
#3 Fri 31 August 2012 09:45
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: [ArcGis 9.3] bloquer le rafraichissemet en VBA
Bonjour,
Pour faire simple, mon projet fonctionne un peu comme Map Series. Sauf que comme je travaille sur un mille-feuilles de nappes souterraines, je suis obligé de redéfinir les ensembles de définition de mes couches, pour n'afficher que les infos de la nappe en cours d'impression.
Effectivement, j'ai les géométries en shp et les données dans un mdb Access, une bonne source d'accélération à chercher là donc.
Je produit du png, qui doit être aussi lourd que le jpg à écrire. Mais comme les cartes sont insérées dans des fichiers Excel, je dois rester sur un format compact (je ne peux pas livrer des fiches à 30Mo). Je vais voir à exporter en tif d'ArcGis, puis à convertir par lot en png ensuite.
Je fais bien attention à n'afficher que les couches utiles, et elles sont toutes indexées spatialement.
La carte se rafraichi à chaque fois que je mets une couche à jour (changement de l'ensemble de définition essentiellement) et lorsque je zoome sur le nouveau territoire, j'ai donc 4 rafraichissements alors qu'un seul à la fin suffirait.
Renaud Mouche
Hors ligne
#4 Fri 31 August 2012 11:17
Re: [ArcGis 9.3] bloquer le rafraichissemet en VBA
pour le format je parlais surtout de tes raster de fond en fait pour accélérer l'affichage, pas de tes exports dont effectivement le format ne changera pas grand chose.
Pour le reste je pense que tes changements d'ensemble de définition ne devrait pas te procurer de refresh automatiquement, seul le zoom devrait le faire.
regarde si dans ton code il n'y a pas un élément qui fait le refresh auto (sans le code je peux pas t'aider encore une fois)
sinon pour bloquer le refresh tu peux peut être désactiver l'affichage avec la méthode finishdrawing du idisplay .
Il y a un bouton pour désactiver temporairement l'affichage, une piste a suivre aussi. Peut être la méthode invalidate d'un iscreendisplay.
Dernière modification par Forestis (Fri 31 August 2012 11:27)
[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)
~Géomaticien Indépendant~
Hors ligne
#5 Fri 31 August 2012 14:41
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: [ArcGis 9.3] bloquer le rafraichissemet en VBA
Bonjour,
Merci, le mode 'brouillon' de l'interface d'ArcGis a résolu le problème !
Je passe de 6-7 min à 1 min par carte, ça devient gérable
J'essayerai de voir (quand le PC aura fini d'imprimer) ce qui peut provoquer le refresh à part la mise à jour de l'ensemble de définition.
Je posterai le code si je ne trouve pas.
Renaud Mouche
Hors ligne