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 Wed 05 November 2014 10:51

Sophie_Géo
Participant actif
Lieu: Nantes
Date d'inscription: 16 Jul 2012
Messages: 59

PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL

Bonjour,

Je cherche à faire fonctionner ses 2 requêtes sur ma table artere (qui sont des segments).
Malheureusement St_Startpoint/Endpoint me renvoie à une ligne vide... (Cf la PJ)

Quelqu'un aurait-il une idée?

Merci,

Sophie


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

Hors ligne

 

#2 Wed 05 November 2014 11:45

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL

Bonjour

st_startPoint ne marche que sur des LINESTRING, pas sur sur des MULTI

Votre table provient-elle d'un shapefile ? Si oui, le chargement avec shp2pgsql génère toujours des MULTI par défaut, sauf mention contraire dans la commande.

Si toutes les géométries de votre table sont des objets simples (1 seul element par objet), vous pouvez convertir en objets simples (st_geometryN(geom, 1)).

Nicolas.

PS (il faut mieux copier le texte de votre requete plutot que faire une capture image du texte, pour la partager ici)

Hors ligne

 

#3 Wed 05 November 2014 14:19

Sophie_Géo
Participant actif
Lieu: Nantes
Date d'inscription: 16 Jul 2012
Messages: 59

Re: PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL

Re bonjour,

Tout d'abord merci pour cette réponse.

Effectivement, j'intègre des shapefiles. Après ma table est une table type "geometry". Comme je débute sur pgsql, peut-on faire un St_startpoint sur une table type "geometry"?

Et je ne vois pas comment utiliser st_geometryN.

Merci

Hors ligne

 

#4 Wed 05 November 2014 14:34

ppluvinet
Participant assidu
Lieu: VALENCE
Date d'inscription: 6 Aug 2007
Messages: 617

Re: PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL

Bonjour,

Essayez peut-être ceci :

Code:

st_startpoint(st_linemerge(geom))

Bon courage,


Pascal PLUVINET

Hors ligne

 

#5 Wed 05 November 2014 15:08

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL

Si la couche provient d'un shapefile et que vous n'avez pas précisé l'option "-S" lors du chargement alors votre table contient des objets de type geometry(MultiLinestring), meme si chaque objet est un seul segment.

Le type de la colonne est geometry mais avec des contraintes sur le type pour eviter de mettre dans la meme table des points, des lignes, des polygones.
Certaines fonctions de postgis ne marchent que pour des objets précis (par exemple, st_area() ne marche que pour des polygones et des  multipolygones) et renvoient null si elles sont appelées avec d'autres types de géométries

Pour vérifier:

Code:

select distinct st_numGeometries(the_geom) from matable;

S'il n'y a qu'un seul objet par geom, vous pouvez changer le type de la colonne geo de votre table comme ceci:

Code:

alter table matable alter column the_geom type geometry(Linestring, <srid>) using st_geometryN(the_geom, 1);

Ensuite, vous pourrez utiliser st_startpoint.

S'il y a plusieurs linestring par geom dans votre table, il faudra au préalable dumper les linestrings depuis les multilinestring (st_dump) avant de pouvoir utiliser st_startPoint/EndPoint.

Nicolas

Hors ligne

 

#6 Wed 05 November 2014 16:25

Sophie_Géo
Participant actif
Lieu: Nantes
Date d'inscription: 16 Jul 2012
Messages: 59

Re: PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL

ça marche!

Merci beaucoup, vous êtes le sauveur de ma journée wink

Hors ligne

 

#7 Wed 05 November 2014 16:37

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL

Cool big_smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB