FR:JOSM/Search function
Si vous en savez davantage sur l’état actuel du sujet, merci d’en tenir informé tout le monde en mettant à jour leur contenu. (Discussion)
Cette page décrit la fonction de recherche de JOSM telle que User:kleptog a pu en comprendre le fonctionnement à partir des codes sources et par extrapolation. Pour cette raison, il est possible que cela ne décrive pas à 100% la réalité mais n'hésitez pas à contacter le rédacteur pour toutes les erreurs que vous trouverez (ou à mettre à jour directement cette page).
La fonction de recherche dans JOSM est un système plutôt avancé qui commence par prendre votre chaîne de caractères, la compile dans une structure et pour finir, l'applique aux données. A la base, il y a les expressions de recherche appelées tokens (voir sur Wikipedia), qui peuvent ensuite être combinées pour former des recherches plus complexes.
Le dialogue de recherche fournit aussi la possibilité de tenir compte ou non des minuscules/majuscules avec le bouton "case sensitive" dans la fenêtre de dialogue de recherche.
Tokens
Il y a une liste de token telle qu'on peut la voir depuis le code source:
Token | Description |
---|---|
selected | Recherche uniquement dans les objets actuellement sélectionnés. |
modified | Recherche uniquement parmis les objets modifiés dans la session actuelle. Cela représente tout ce qui serait transféré au serveur si vous cliquiez sur le bouton "upload", ce qui inclut donc les objets nouvellement créés. |
incomplete | Recherche dans les objets incomplets (pas aussi utile que ça ne l'était). |
key:value | Une recherche plus spécifique centrée sur un couple clé:valeur qui n'existe que sur certaines versions. Chaque chaîne de caractères key et value peut être encadrée par des guillements. |
type:node
type:way |
Recherche sur un type spécifique d'objet uniquement. |
property:value | Recherche dans les propriétés de n'importe quel tag si le texte value s'y trouve (tout ou partie). |
property:key=value | Recherche tous les objets avec l'exact tag key=value (ou une partie de la chaîne pour 'value'). Peut être utile dans les situations où les double points sont pris en compte, comme le deuxième argument peut être encadré par des guillements et est séparé en deux avec le premier signe égale. |
id:value | Recherche l'objet possédant l'id value (numéro unique donné par le serveur lors de la création de l'objet). |
key:value | Recherche les objets possédant la clé key et la valeur value (tout ou partie). |
value | Recherche dans tous les objets la valeur donnée comme sous-chaîne (tout ou partie) soit dans une clé, soit dans une valeur. Si la chaîne value contient un double point, vous devez l'encadrer par des guillemets. |
Modificateurs
Il y a actuellement un seul modificateur, le signe moins (-) utilisé pour inverser les sélections. Il peut être utilisé dans un ou plusieurs places de l'expression, ce qui ne fait pas de différences. Notez que les effets dans JOSM peuvent ne pas donner ce qui espéré (voir les exemples ci-dessous).
Exemple | Description |
---|---|
-selected | Tout ce qui n'est pas actuellement sélectionné. |
-id:value
id:-value |
Tout excepté les objets avec cet ID. |
-key:value
key:-value |
Tout excepté les objets possédant cette clé (exacte équivalence) and la valeur donnée (tout ou partie). Notez que cela sélectionnera aussi les objets qui n'ont aucune clé (voir proposition). |
Opérateurs de combinaison
Il y a deux façons de combiner les tokens, via les opérateurs AND (ET logique) ou OR (OU logique).Il n'y a pas de symbole explicite pour l'opérateur AND. Il n'y a pas non plus de parenthèses. Et ce qui manque le plus dans la fonction de recherche de JOSM est l'absence de règles de précédences. Ce qui fait que certaines recherches complexes ne sont pas possibles. C'est aussi assez peu intuitif.
Opérateur logique | Description |
---|---|
token token | Recherche les objets correspondants aux deux tokens. |
token | token
token OR token |
Recherche les objets correspondants soit à l'un, soit à l'autre des deux tokens. |
Exemples
Au cas où ce qui a été dit précédemment est un peu crypté pour vous, voici quelques exemples pratiques ainsi que quelques trucs:
highway unclassified | Retourne tous les objets contenant les deux mots 'highway' et 'unclassified' (en total ou en partie) dans le champ soit de la clé, soit de la valeur d'un tag. |
highway:unclass | Retourne tous les objets où la clé 'highway' a une valeur comportant la chaîne de caractères 'unclass'. |
-highway:unclassified | Ceci semble retourner tous les objets. Vous pourriez vous demander pourquoi, puisque la plupart des routes ne sont pas 'unclassified'. La raison est que les segments aussi ne respectent pas la condition (NDT: les segments sont des types d'objets ayant disparus depuis l'API 0.5), et sont ainsi sélectionnés. Ce que vous souhaitez est... |
-highway:unclassified type:way | C'est mieux, maintenant tous les 'highways' sont désélectionnés mais pas les 'waterways' qui le sont encore. Pour cela, vous avez besoin de: |
-highway:unclassified type:way property:highway= | Voici ce que vous voulez. L'utilisation de la clé 'property' indique que nous voulons que la valeur recherchée ne sera pas trouvée. Utiliser highway: ne marche pas. Cependant, vous pouvez faire... |
-highway:unclassified type:way highway:"" | Une autre façon de dire la même chose que précédemment. Parce que les tokens sont séparés, cela ne marche pas sans les guillemets. En fait, vous pouvez vous passer du "type:way", bien que cela sélectionnerait aussi avec des tags appartenant à des segments/nœuds. |
selected -type:node | Supprime tous les nœuds de la sélection actuelle. |
selected | type:node | Ajoute tous les nœuds dans la sélection actuelle. |
selected | type:node place:London | Ici on voit l'absence de règles de précédence. Vous seriez tenté de le comprendre comme selected | (type:node place:London) alors qu'en fait, c'est interprété par JOSM comme (selected | type:node) place:London. Ce dont vous avez besoin est... |
type:node place:London | selected | Ceci fera ce qui vous attendez, bien que vous puissiez atteindre le même résultat en sélectionnant le "add to selection" dans la boîte de dialogue de la recherche. |
foo bar | baz zap | En général, toutes les opérations sont exécutées depuis la gauche vers la droite. Ainsi, ceci est interprété comme:(((foo AND bar) OR baz) AND zap). Ennuyeux mais vrai. |
(foo AND bar) OR (baz AND zap) | Ce type de recherche n'est actuellement pas possible directement. Cependant, vous pouvez arriver au même résultat en deux étapes en faisant d'abord baz AND zap suivi par une recherche de (foo AND bar) OR selected. |
Bonne chance dans vos recherches !