IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

PostgreSql Intersection polygone ligne


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut PostgreSql Intersection polygone ligne
    Bonjour,

    J'ai crée une table figure qui contient des polygones avec un identifiant et une altitude. Je voudrais faire une requête qui me permettrait de récupérer les points d'intersections entre un polygone et une ligne dont je connais deux points(debut et fin).

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 997
    Billets dans le blog
    6
    Par défaut
    Utilisez la méthode Intersection pour ce faire.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE TABLE T_GEO ( GEO_NOM VARCHAR(16), GEO_OBJET GEOMETRY);
     
    INSERT INTO T_GEO (GEO_NOM, GEO_OBJET)
        VALUES ('Un polygone', 'POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))');
    INSERT INTO T_GEO (GEO_NOM, GEO_OBJET)
        VALUES ('Une ligne', 'LINESTRING(0 0, 1 1)');
     
    SELECT ST_AsText(Intersection(T1.GEO_OBJET, T2.GEO_OBJET)) AS Inter
    FROM   T_GEO AS T1
           CROSS JOIN T_GEO AS T2
    WHERE  T1.GEO_NOM LIKE '%polygone%'
      AND  T2.GEO_NOM LIKE '%ligne%';
     
    inter
    ------------------------------  
    LINESTRING(0 0,1 1)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut
    Merci de m'avoir ca marche mais je voudrais récupérer que des points et pas des lignes si c'est possible

    Cordialement

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut
    Je suis arrivé à récupérer des multipoints est-il possible de récupérer chacun des points qui composent un multipoint ou une ligne ?

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 997
    Billets dans le blog
    6
    Par défaut
    L'intersection d'un polygone qui est une surface avec une ligne est une ligne, pas deux points.
    Mais d'une ligne vous pouvez obtenir les extrémités :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ST_ASText(ST_StartPoint(Intersection(T1.GEO_OBJET, T2.GEO_OBJET))) AS StartPoint, 
           ST_ASText(ST_EndPoint(Intersection(T1.GEO_OBJET, T2.GEO_OBJET))) AS StartPoint
    FROM   T_GEO AS T1
           CROSS JOIN T_GEO AS T2
    WHERE  T1.GEO_NOM LIKE '%polygone%'
      AND  T2.GEO_NOM LIKE '%ligne%';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    StartPoint         EndPoint
    ------------------ -----------------
    POINT(0 0)         POINT(1 1)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut
    Mais si ma droite comporte plus de points comment on peut faire ? svp

Discussions similaires

  1. [Toutes versions] Intersection de ligne et colonne
    Par phildouja dans le forum Excel
    Réponses: 2
    Dernier message: 26/03/2011, 19h28
  2. Réponses: 7
    Dernier message: 26/10/2004, 11h02
  3. dessiner lignes et polygones
    Par Harry_polin dans le forum DirectX
    Réponses: 31
    Dernier message: 25/05/2004, 17h42
  4. Transformer une ligne en polygone
    Par bl4d3 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/09/2003, 09h35
  5. une ligne et un polygone convexe
    Par rekam dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/12/2002, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo