Pages: 1
- Sujet précédent - PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL - Sujet suivant
#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
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
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
Hors ligne
Pages: 1
- Sujet précédent - PostgreSQL/PostGIS - ST_StartPoint et ST_EndPoint renvoie NULL - Sujet suivant