banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 13 January 2017 15:56

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

[ArcGis 10] Curseur temporel

Bonjour,

J'ai un petit soucis avec l'utilisation du curseur temporel d'Arcgis.
J'ai des données référencées par décennies sous la forme suivante : 1850 (pour la décennie 1850 à 1859), 1860 (pour la décennie 1860 à 1869), etc.
Je cherche donc grâce au curseur d'arcgis à exporter une cartographie évolutive montrant la succession d'apparition de mes points par décennie. J'ai tout bien réglé, sauf qu'au moment d'afficher le résultat, Arcgis fait se chevaucher automatiquement les décennies. C'est à dire que lorsqu'il affiche toutes les données référencée à la décennie 1850, il affiche aussi bien les données de 1850 que celles de 1860 alors qu'il devrait exclure la borne supérieure de la décennie concernées.
J'ai beau avoir essayé de feinter le logiciel par divers moyens, rien n'y fait...

Pour résumer en termes d'intervalles, arcgis a une conception du temps comme ça :

1 décennie = [1850, 1860]

alors que je voudrais [1850, 1860[

Le même problème se pose pour les années, au lieu d'exclure le 1er janvier de l'année suivante il fait :
[01/01/2016,01/01/2017] au lieu de [01/01/2016, 01/01/2017[ ou [01/01/2016, 31/12/2016]

Le problème est d'autant plus important si nos données ne sont pas précises au jour, mais uniquement à l'année.

Si quelqu'un a trouvé une solution à ce soucis, je suis preneur.

Merci d'avance.

Hors ligne

 

#2 Fri 13 January 2017 16:22

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

Bonjour,

Pourquoi vous ne faites pas un affichage par année uniquement ? je veux dire considérez 1850 comme une année et 1860 comme l'année suivante. oubliez votre notion du temps à vous.

De mon point de vue, vous pouvez essayer de choisir un affichage par année (yyyy) dans la fenêtre de configuration. Ensuite sur la mise en page, vpus pouvez mettre une étiquette semi-automatique avec un texte fixe "décennie" et un texte dynamique correspondant à l'année.

Pour l'export, vous pouvez tout exporter en 1 script prenant en compte le pas de temps. A vous de modifier les paramètres:

Code:

import arcpy
import os
mxd = arcpy.mapping.MapDocument(r"C:\PROJET\projet.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
df.time.currentTime = df.time.startTime
while df.time.currentTime <= df.time.endTime:
    fileName = "decennie"+str(df.time.currentTime.year).split(" ")[0] + ".png"
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\PROJET\", fileName), "PAGE_LAYOUT", 1600, 1200, 150)
    df.time.currentTime = df.time.currentTime + df.time.timeStepInterval
del mxd

Dernière modification par benulti (Fri 13 January 2017 16:25)

Hors ligne

 

#3 Fri 13 January 2017 16:32

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

Tout d'abord merci pour votre réponse.

J'avais en effet trouvé un moyen de tricher, en disant que mes valeurs de décennies étaient en réalité des années. Ça fonctionne bien en terme d'affichage, par contre, ArcGis affiche du coup automatiquement en étiquette un intervalle d'1 an et non de 10 ans. Je peux en effet corriger ce problème avec ce que vous proposez. Je vais y réfléchir.

Autrement j'ai trouvé une option qui semble corriger le problème des bornes de mes décennies, mais l'intitulé est tellement vague que j'ai du mal à savoir si ça fait réellement ce que je désire :

"Exclure les données à la fin de la fenêtre horaire" => Allez savoir ce qu'ils entendent par "la fin de la fenêtre horaire"...Ca à l'air de fonctionner pour les décennies puisque de toute manière, je les ai renseigné avec la date de début de la décennie et non la fin, à voir si je risque pas de perdre des données de cette manière sur des dates plus fines.

Dernière modification par tp13 (Fri 13 January 2017 16:37)

Hors ligne

 

#4 Fri 13 January 2017 17:07

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

Je n'ai jamais fait attention à cette option.
J'utilise ce système pour exporter des cartes par niveau géologique... j'ai transformé mes couches géologiques en "années" smile d'où mon conseil d'oublier la notion de temps.

Hors ligne

 

#5 Mon 16 January 2017 09:42

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

J'en étais arrivé à la même conclusion.
Je ne suis pas très à l'aise avec les texte dynamique par contre. Par défaut Arcgis m'indique la fenêtre temporelle "1990 vers 2000", qui provient je suppose d'une traduction très mauvaise de la version anglaise "1990 to 2000". Comment je peux changer ça ? J'aimerais simplement avoir "1990 - 2000" ou "de 1990 à 2000" par exemple.

Hors ligne

 

#6 Mon 16 January 2017 10:58

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

J'ai oublié de préciser que je suis totalement débutant en ce qui concerne les scripts.
J'ai essayé de m'en sortir avec celui-là mais je suis même pas sûr de ce que je suis censé remplir, et le logiciel me dit qu'il y a plein d'erreurs de syntaxes que je ne suis pas en mesure de corriger étant donné que je ne sais pas ce qui fait quoi...

Je serai très reconnaissant si une âme charitable pouvait m'éclairer à ce sujet smile

Hors ligne

 

#7 Tue 17 January 2017 08:53

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

Dans ArcMap, Il faut :
1. créer une nouvelle toolbox.
2. créer un nouveau script
3. copier coller le texte plus haut dans le nouveau script
4. modifier 3 voir 4 variables :
   a. C:\PROJET\projet.mxd => mettez le chemin d'accès à votre MXD
   b. mxd, "Layers")[0] => le 0 signifie que c'est la première couche de votre MXD, si besoin modifiez cette valeur
   c. "decennie" => mettez le nom que vous voulez qui sera présent pour tous les fichiers images exportés. Derrière l'année s'ajoutera automatiquement. ex : decennie1950.png, decennie1960.png, etc
   d. "C:\PROJET\" => mettez le chemin du dossier qui recevra les images exportées
5. enregistrer les modifications du script
6. double cliquez et c'est parti

Un peu de concentration et ça va le faire.

Hors ligne

 

#8 Tue 17 January 2017 11:04

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

Merci pour ces précisions. Les erreurs de syntaxes ont disparues.
J'ai cependant systématiquement l'erreur suivante :

"IndexError: list index out of range"

J'ai testé de modifier le point b, en changeant la/les couche(s) prises en compte mais ça ne change rien...
Le problème vient peut être de la structure de mes shapes...

Hors ligne

 

#9 Tue 17 January 2017 12:40

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

Je sais, c'est de ma faute.
Dans le point b, le "Layer" correspond au bloc de données. Je suis en version anglaise, si vous êtes en version française, ça doit être "bloc de données". Il s'agit d'une variable...

Vous travaillez en shapefile?
De manière générale, il est préférable de travailler en GDB fichier, il arrive que certaines fonctionnalités ne soient pas utilisables avec des shapefiles mais uniquement avec des classes d'entités de GDB...

Hors ligne

 

#10 Tue 17 January 2017 13:00

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

Re: [ArcGis 10] Curseur temporel

Bonjour,

benulti a écrit:

Dans le point b, le "Layer" correspond au bloc de données. Je suis en version anglaise, si vous êtes en version française, ça doit être "bloc de données".


C'est "Couches" en français par défaut.

A+

Franck

Hors ligne

 

#11 Tue 17 January 2017 13:10

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

Franck B a écrit:

Bonjour,

benulti a écrit:

Dans le point b, le "Layer" correspond au bloc de données. Je suis en version anglaise, si vous êtes en version française, ça doit être "bloc de données".


C'est "Couches" en français par défaut.

A+

Franck


Oui c'est en effet cela. Le problème cité plus haut est résolu.
Sauf que je me prend à présent une avalanche d'autres messages :

Traceback (most recent call last):
  File "C:\Projet\Script_export.py", line 8, in <module>
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Projet\",fileName"), "PAGE_LAYOUT", 1600, 1200, 150)
  File "c:\program files\arcgis\desktop10.2\arcpy\arcpy\utils.py", line 181, in fn_
    return fn(*args, **kw)
  File "c:\program files\arcgis\desktop10.2\arcpy\arcpy\mapping.py", line 1211, in ExportToPNG
    layout.exportToPNG(*args)
  File "c:\program files\arcgis\desktop10.2\arcpy\arcpy\utils.py", line 181, in fn_
    return fn(*args, **kw)
  File "c:\program files\arcgis\desktop10.2\arcpy\arcpy\arcobjects\mixins.py", line 584, in exportToPNG
    return self._arc_object.exportToPNG(*args)
AttributeError: PageLayoutObject\xa0: erreur lors de l\u2019ex\xe9cution de la commande ExportToPNG

Échec de l’exécution de (Script).


Mon code :

Code:

import arcpy
import os
mxd = arcpy.mapping.MapDocument(r"C:\Projet\Projet.mxd")
df = arcpy.mapping.ListDataFrames(mxd,"Couches")[0]
df.time.currentTime = df.time.startTime
while df.time.currentTime <= df.time.endTime:
    fileName = "decennie"+str(df.time.currentTime.year).split(" ")[0] + ".png"
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Projet\",fileName"), "PAGE_LAYOUT", 1600, 1200, 150)
    df.time.currentTime = df.time.currentTime + df.time.timeStepInterval
del mxd

La partie "PAGE_LAYOUT", 1600, 1200, 150" m’interpelle. Si il s'agit bien de la mise en page comme je le pense, ne suis-je pas censé l'adapter aux paramètres de mon mxd ?
Pour le reste il signale des soucis dans le dossier source d'arcgis, est ce que par hasard il me manquerait pas un module ou un truc du genre pour faire fonctionner le tout ?

Je me sens totalement à la ramasse, faut vraiment que je me forme la dessus dès que j'en aurais l'occasion...

Dernière modification par tp13 (Tue 17 January 2017 13:11)

Hors ligne

 

#12 Tue 17 January 2017 14:21

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

Peut-être qu'il faudrait trouver le nom français de la variable "page layout" qui doit être "mise en page". merci Franck pour la correction sur couches

Ceci dit, aie aie aie... je vois surtout un autre problème.
Vous utilisez ArcGIS 10.2, la commande "arcpy.mapping.ExportToPNG" nécessite une version 10.3. http://desktop.arcgis.com/fr/arcmap/10. … ttopng.htm

Mince.

Hors ligne

 

#13 Tue 17 January 2017 14:26

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

tp13 a écrit:

Je me sens totalement à la ramasse, faut vraiment que je me forme la dessus dès que j'en aurais l'occasion...


ou pas... le SIG ne se résume pas à des scripts python. Perso j'en fais jamais, ce coup là était une exception parce que je ne voulais pas expoter 6 fois 91 mises en page à la main smile

Hors ligne

 

#14 Tue 17 January 2017 14:54

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

benulti a écrit:

ou pas... le SIG ne se résume pas à des scripts python. Perso j'en fais jamais, ce coup là était une exception parce que je ne voulais pas expoter 6 fois 91 mises en page à la main smile


Disons que j'aimerais au moins pouvoir me débrouiller suffisamment pour pouvoir comprendre les scripts qu'on me conseille smile
Concernant ma version d'Arcgis, je vais me renseigner voir si mon labo possède une mise à jour...Et apparemment c'est le cas.

Autrement je vais devoir utiliser mes petites mains pour faire 16 exportations successives par jeux de données...^^

Merci pour votre aide et votre patience en tout cas !

Dernière modification par tp13 (Tue 17 January 2017 15:22)

Hors ligne

 

#15 Mon 23 January 2017 09:55

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

Traceback (most recent call last):
  File "C:\Projet\Script_export.py", line 8, in <module>
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Projet\",fileName"), "Mise en page", 1600, 1200, 150)
  File "c:\program files\arcgis\desktop10.4\arcpy\arcpy\utils.py", line 182, in fn_
    return fn(*args, **kw)
  File "c:\program files\arcgis\desktop10.4\arcpy\arcpy\mapping.py", line 1223, in ExportToPNG
    assert isinstance(data_frame, DataFrame) or (isinstance(data_frame, basestring) and data_frame.lower() == 'page_layout')
AssertionError


Petite mise à jour étant donné qu'on m'a installé la version 10.4 vendredi dernier smile
Il y a toujours un problème avec le "exportToPNG" mais ça a plus l'air d'être un soucis de paramétrage...

Hors ligne

 

#16 Mon 23 January 2017 14:02

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

je vois l'erreur, la guillemet n'est pas au bon endroit, file Name est une variable :

(r"C:\Projet\",fileName")
il faut écrire :
(r"C:\PROJET\", fileName)

Hors ligne

 

#17 Mon 23 January 2017 14:53

nitram
Participant assidu
Lieu: Brest
Date d'inscription: 19 May 2009
Messages: 990
Site web

Re: [ArcGis 10] Curseur temporel

Bonjour,

benulti a écrit:

Vous utilisez ArcGIS 10.2, la commande "arcpy.mapping.ExportToPNG" nécessite une version 10.3.


Je me permet juste une petite correction, l'export en png d'arcpy est bien disponible depuis la v10.0

Martin

Hors ligne

 

#18 Mon 23 January 2017 16:21

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

Bien vu.
Ca ne marche pas cependant, il me dit qu'il y a une erreur de syntaxe à la ligne 8.
J'ai essayé comme ça en mettant juste : (r"C:\PROJET\fileName) , mais ça m'exporte qu'un seul PNG nommé fileName (normal ceci dit)


Code:

import arcpy
import os
mxd = arcpy.mapping.MapDocument(r"C:\Projet\Projet.mxd")
df = arcpy.mapping.ListDataFrames(mxd,"Couches")[0]
df.time.currentTime = df.time.startTime
while df.time.currentTime <= df.time.endTime:
    fileName = "decennie"+str(df.time.currentTime.year).split(" ")[0] + ".png"
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Projet\",fileName),"PAGE_LAYOUT", 1600, 1200, 150)
    df.time.currentTime = df.time.currentTime + df.time.timeStepInterval
del mxd

Le problème doit venir dans la définition de la variable fileName ou bien la manière dont elle est inséré à la ligne 8...

Dernière modification par tp13 (Mon 23 January 2017 16:22)

Hors ligne

 

#19 Mon 23 January 2017 17:11

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

il manque EDIT : un espace entre la virgule et filename ici : r"C:\Projet\",fileName

ça devient complexe de vous aider, si vous pouviez faire un petit effort de rigeur en copiant/collant le texte svp smile

Dernière modification par benulti (Mon 23 January 2017 17:27)

Hors ligne

 

#20 Tue 24 January 2017 11:32

tp13
Participant occasionnel
Date d'inscription: 15 Mar 2013
Messages: 25

Re: [ArcGis 10] Curseur temporel

Hélas ça ne règle pas le problème...
Désolé pour les erreurs d'inattention, je teste en même temps des modifications histoire de comprendre un peu mieux comment ça fonctionne.

Je reprend depuis le début :
- En reprenant votre code copier/coller en modifiant les chemins d'accès, j'ai une erreur de syntaxe ligne 8
- J'ai repris le code sur le site d'aide d'arcgis (mixé avec le votre), il marche, mais je perd toute la partie mise en page. Concrètement il m'exporte uniquement les données géographiques. Les titres, légendes etc ne sont pas affichés :

Code:

import arcpy
import os
mxd = arcpy.mapping.MapDocument(r"C:\Projet\Projet.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Couches")[0]
df.time.currentTime = df.time.startTime
while df.time.currentTime <= df.time.endTime:  
    fileName = str(df.time.currentTime).split(" ")[0] + ".png"
    arcpy.mapping.ExportToPNG(mxd, os.path.join(r"C:\Projet\\" + fileName), df, 
    df_export_width=1600,
    df_export_height=1200)
    df.time.currentTime = df.time.currentTime + df.time.timeStepInterval
del mxd

Je me demande donc, entre les deux codes, quelle partie permet d'inclure tous les éléments de mise en page ?

EDIT : Victoire ! J'ai rajouté "PAGE_LAYOUT", 1600, 1200, 150) à la place de ce que j'avais sur la version du site d'Arcgis (j'en déduis donc que c'était ça qui exportait la mise en page ^^) et ça fonctionne !
J'ai en revanche du mal à saisir pourquoi le code initial ne marchait pas...

Dernière modification par tp13 (Tue 24 January 2017 14:46)

Hors ligne

 

#21 Thu 26 January 2017 10:28

benulti
Participant assidu
Lieu: là-bas
Date d'inscription: 5 Sep 2005
Messages: 332

Re: [ArcGis 10] Curseur temporel

Bravo.

Il y avait surement une petite coquille qui passait sous le radar.

Hors ligne

 

Pied de page des forums

Powered by FluxBB