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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#1 Mon 30 September 2013 14:13

mame1985
Participant assidu
Lieu: Montréal
Date d'inscription: 16 Oct 2010
Messages: 444

Etiquetage

Bonjour
Voilà, j'ai un petit soucis pour etiqueter.
J'ai un cadastre et je voudrais etiqueter un certain nombre de polygones.
Je peut le faire via le "definition querry" mais c'est un peu long.
Je voudrais savoir s'il existe un scrip qui permet d'etiqueter par intervale
c'est-dire-dire: etiqueter du polygone 1 à 10 sur un ensemble de 30.
Je travaille avec arcgis, la version 9.3.1
merci d'avance


Mame

Hors ligne

 

#2 Mon 30 September 2013 14:41

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

Salut,

Plus de précisions nous serait utile pour répondre.
Quelles sont les conditions d'étiquetage?
En prenant tes conditions ->

Code:

Function FindLabel ( [Ton_champ_ID] )

I=[Ton_champ_ID]

If I >= 1 and I<=10 then
  FindLabel = [Ton_champ_ID]

End If
  
End Function

A+
Joël

Dernière modification par Spacejo (Mon 30 September 2013 14:54)

Hors ligne

 

#3 Mon 30 September 2013 14:57

mame1985
Participant assidu
Lieu: Montréal
Date d'inscription: 16 Oct 2010
Messages: 444

Re: Etiquetage

Merci Joel
Ici chaque polygone a un identifiant (No_ID), par le biais duquel je fais l'etiquetage.
Mais je veux juste etiqueter par exemple du polygone 1 au polygone 10.
Je sais que ça peut se faire par le SQL query de l'onglet Label, mais je connais pas
le scrypt qu'on pourrait utilisre pour ce cas ci. Sinon c'est possible de faire la requette polygone
par polygone.ex: dans le sql querry No_ID = x or No_ID = y etc ce que je veut pas faire puisque ce serai trop long.


Mame

Hors ligne

 

#4 Mon 30 September 2013 15:02

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

Alors essaye ceci:

Code:

Function FindLabel ( [No_ID],[Champ_Que_Tu_Veux_Afficher] )

I=[No_ID]

If I >= 1 and I<=10 then
  FindLabel = [Champ_Que_Tu_Veux_Afficher]

End If
  
End Function

Hors ligne

 

#5 Mon 30 September 2013 15:11

mame1985
Participant assidu
Lieu: Montréal
Date d'inscription: 16 Oct 2010
Messages: 444

Re: Etiquetage

Pour etre plus claire je veux etiqueter du numero IM02613 à IM03133
j'ai un ensemble de polygone de IM02045 à IM03150
les chiffres 1 et le 10 etaient là en guise d'exemples.


Mame

Hors ligne

 

#6 Mon 30 September 2013 15:34

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

Et dans ta liste celà se suit --> IM02613, IM02614, IM02615 etc....
Les conditions sont uniquement sur la valeur du champ -> No_ID
Sinon pour économiser de la frappe de caractères on peut utiliser en SQL ---> la fonction "In"

Code:

Select * from Ta_Table where No_ID in (IM02613, IM03133, etc....)

Je pense même que celà peut passer dans le script du dessus:

Code:

Function FindLabel ( [No_ID],[Champ_Que_Tu_Veux_Afficher] )

I=[No_ID]

If I in (IM02613, IM03133, etc....) then
  FindLabel = [Champ_Que_Tu_Veux_Afficher]

End If
  
End Function

Dernière modification par Spacejo (Mon 30 September 2013 15:36)

Hors ligne

 

#7 Mon 30 September 2013 16:23

mame1985
Participant assidu
Lieu: Montréal
Date d'inscription: 16 Oct 2010
Messages: 444

Re: Etiquetage

Oui la liste se suit comme tu le dis sauf que pour le premier code
ça equivaut à taper toute le lite ce qui est long.
Pour le deuxieme code ça ne marche pas.
merci quand même.


Mame

Hors ligne

 

#8 Mon 30 September 2013 16:29

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

Tu peux ajouter une colonne dans ta table?
Y'a t'il toujours 3 caractères dans tes références --> IMO
Une solution est de créer un champ qui récupérera tes valeurs numériques que tu pourras filtrer:
Essaye ceci sur un nouveau champ:

Code:

TonNouveauChamp=val(right(No_ID,len(No_ID)-3))

A+
Joël

Dernière modification par Spacejo (Mon 30 September 2013 16:38)

Hors ligne

 

#9 Mon 30 September 2013 17:26

mame1985
Participant assidu
Lieu: Montréal
Date d'inscription: 16 Oct 2010
Messages: 444

Re: Etiquetage

Comme tu le vois sur le fichier join je veux etiqueter le objets selectionnés
en utilisant la forme avance.
merci BV scrypt

Dernière modification par mame1985 (Mon 30 September 2013 17:33)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Mame

Hors ligne

 

#10 Mon 30 September 2013 17:36

Frapru
Participant occasionnel
Date d'inscription: 6 Jul 2012
Messages: 22

Re: Etiquetage

Bonjour

avez vous essayé : dans Proprété de la couche onglet Etiquettes tapez la requête "VotreChamps" >= 'IM02613' AND "VotreChamps" <='IM03133'

Hors ligne

 

#11 Mon 30 September 2013 17:47

mame1985
Participant assidu
Lieu: Montréal
Date d'inscription: 16 Oct 2010
Messages: 444

Re: Etiquetage

Oui
l'expression est juste mais il ne retourne rien, j'allucine.


Mame

Hors ligne

 

#12 Mon 30 September 2013 17:50

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

Comme tu le vois sur le fichier join je veux etiqueter le objets selectionnés
en utilisant la forme avance.


Oui je vois bien le problème wink
Je réitère ma question peux tu ajouter une colonne à ta table?
Dans l'affirmative -> tu crées un nouveau champ que tu incrémentes avec la calculette avec:

Code:

TonNouveauChamp=val(right(No_ID,len(No_ID)-3))

Puis :

Code:

Function FindLabel ( [No_ID],[Champ_Que_Tu_Veux_Afficher] )

I=[No_ID]

If I >= 2613 and I<= 3133 then
  FindLabel = [Champ_Que_Tu_Veux_Afficher]

End If
  
End Function

A+
Joël

Dernière modification par Spacejo (Mon 30 September 2013 18:02)

Hors ligne

 

#13 Mon 30 September 2013 17:56

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

A Frapru
les comparateurs < > <= >= peuvent être utiliser sur des chaines de caractères?

Dernière modification par Spacejo (Mon 30 September 2013 17:59)

Hors ligne

 

#14 Mon 30 September 2013 18:02

Frapru
Participant occasionnel
Date d'inscription: 6 Jul 2012
Messages: 22

Re: Etiquetage

@ Spacejo

oui avant de proposer la requête j'ai fait un test sur une de mes couches qui avait un champs similaire et ça marchait

Hors ligne

 

#15 Mon 30 September 2013 18:08

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

Arcgis doit passer par "val" ---> Val(IMO2613)
En tout cas celà simplifie grandement le problème de Mame wink

Hors ligne

 

#16 Mon 30 September 2013 18:14

Frapru
Participant occasionnel
Date d'inscription: 6 Jul 2012
Messages: 22

Re: Etiquetage

je voulai ajouter une P.J. pour illustrer mais j'ai envoyé trop vite.. la voici

Dernière modification par Frapru (Mon 30 September 2013 18:15)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#17 Mon 30 September 2013 18:18

Frapru
Participant occasionnel
Date d'inscription: 6 Jul 2012
Messages: 22

Re: Etiquetage

espérons que ça marche pour lui mais je pense qu'il n'y a pas de raison

Hors ligne

 

#18 Mon 30 September 2013 18:31

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Etiquetage

Voilà pour ceux que celà intéresse :
Arcgis fait la comparaison par ordre alphabétique
Voir "Opérateurs de comparaison"
Dans ---> http://help.arcgis.com/fr/arcgisdesktop … 033000000/
PS:Au passage on peut utiliser la fonction "Between" ---> "No_ID" BETWEEN IM02613 AND  IM03133

Dernière modification par Spacejo (Mon 30 September 2013 18:35)

Hors ligne

 

#19 Mon 30 September 2013 18:54

mame1985
Participant assidu
Lieu: Montréal
Date d'inscription: 16 Oct 2010
Messages: 444

Re: Etiquetage

Merci pour vos reponses
ça marche


Mame

Hors ligne

 

Pied de page des forums

Powered by FluxBB