Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 3 sur 3
  1. #1

    Date d'inscription
    janvier 2005
    Localisation
    Mayenne (53)
    Âge
    38
    Messages
    768

    Par défaut Expression dans le "Filtre d'entité du fournisseur de données"

    (re)Bonjour à tous,

    J'utilise régulièrement (notamment avec les couches volumineuses) le "Filtre d'entité du fournisseur de données" pour n'afficher que les données répondant à certains critères attributaires.
    Le constructeur de requête proposé est très pratique, en permettant en fait de saisir la clause WHERE de la requête SQL de filtrage.
    Par exemple, si je mets
    Code:
    "insee" IN ( '01001', '01002')
    Seules les communes dont le champ code INSEE est dans la liste seront affichées.

    Par contre, il est semble-t-il impossible d'utiliser des fonctions SQL dans ce "WHERE".
    J'essaie par exemple de n'afficher que les communes de Normandie d'une table commune avec juste le code INSEE, avec cette requête :
    Code:
    left("insee",2) IN ( '14','27','50','61','76')
    Ce qui marcherait très bien par exemple avec les virtual layers du gestionnaire de BDD ne marche pas ici.
    J'ai ce message d'erreur :
    Une erreur a été rencontrée lors de l'exécution de la requête. Le fournisseur de données renvoie :
    OGR [3] erreur 1: SQL Expression Parsing Error: syntax error, unexpected LEFT. Occurred around :
    SELECT * FROM "communes-20180101" WHERE left("insee",2) IN ( '14','27','50','61'
    ^
    Cela vous semble-t-il un comportement "normal", et n'y aurait-il pas là une suggestion d'amélioration à signaler, pour ne pas dire un "bug" ?

    Merci pour vos avis.

    Sylvain M.

  2. #2
    Chasseur de Bots
    Date d'inscription
    août 2011
    Localisation
    Paris > Strasbourg
    Emploi
    Chargé de mission SIG
    Âge
    34
    Messages
    1 420

    Par défaut Re : Expression dans le "Filtre d'entité du fournisseur de données"

    Code:
    "insee" LIKE '14%'
    OR "insee" LIKE '27%'
    OR "insee" LIKE '50%'
    OR "insee" LIKE '61%'
    OR "insee" LIKE '76%'
    (ou
    Code:
    code_dept IN ('14', '27', '50', '61', '76')
    ou encore
    Code:
    code_reg = '28'
    )

    Pour cette limitation, elle vient directement d'OGR :
    http://www.gdal.org/ogr_sql.html
    The available logical operators are =, !=, <>, <, >, <=, >=, LIKE and ILIKE, BETWEEN and IN.
    --EDIT--
    Et du coup, je ne l'avais pas vu (Merci Sylvain pour l'info !) :
    Starting with OGR 1.8.2, the SUBSTR function can be used to extract a substring from a string.
    Dernière modification par SkåL ; 09/01/2018 à 15h13.

  3. #3

    Date d'inscription
    janvier 2005
    Localisation
    Mayenne (53)
    Âge
    38
    Messages
    768

    Par défaut Re : Expression dans le &quot;Filtre d'entité du fournisseur de données&quot;

    Comme souvent, c'est en posant la question qu'on trouve la solution !

    Je viens donc de découvrir que la fonction substr() ne pose pas de problème dans ce filtre d'entité.
    Du coup, ma requête fonctionne de cette manière :
    Code:
    substr("insee",1,2) IN ( '14','27','50','61','76')
    Ce sera peut-être utile à d'autres ! (à moi par exemple quand je l'aurai oublié et que je retomberai sur ce message dans quelques temps )

    A+

    Sylvain M.

    - - MISE A JOUR - -

    Désolé SkåL, je n'avais pas vu ta réponse
    Mais j'avoue que je n'aime pas trop les "OR" à la suite, et ma couche commune* ne dispose pas de champ "code_dept" ou "code_reg"

    * https://www.data.gouv.fr/fr/datasets/decoupage-administratif-communal-francais-issu-d-openstreetmap/ (certainement pour alléger le poids du fichier)

 

 

Discussions similaires

  1. [QGIS 2.x] Filtre d'expression - entité intersectée depuis une autre couche
    Par Alexiis dans le forum Assistance et Programmation
    Réponses: 0
    Dernier message: 22/01/2016, 15h20
  2. [OpenLayers] GetFeatureInfo sur un "layer group" avec filtre
    Par Adam Adam dans le forum Assistance et Programmation
    Réponses: 0
    Dernier message: 28/11/2014, 16h38
  3. Réponses: 5
    Dernier message: 30/09/2010, 16h42
  4. [MapInfo 7.x] Sélection de données avec expression de type "case non vide"
    Par floriemor dans le forum Assistance Technique
    Réponses: 2
    Dernier message: 28/05/2010, 11h29
  5. [GeoServer 1.7.2] WFS/WMS et filtre spatial de type "contained-by"
    Par slackeroner dans le forum Assistance et Programmation
    Réponses: 3
    Dernier message: 13/05/2009, 03h09

Les tags pour cette discussion

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •