Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Tue 08 December 2009 11:15

Kaa
Juste Inscrit !
Date d'inscription: 8 Dec 2009
Messages: 4

Pb sur type 'polygon' dans Postgis

Bonjour,

J'ai un souci avec des champs au format 'polygon' sous PostGis.

Je m'explique :
dans la base de données que j'ai récupérée les infos géographiques sont stockées dans des champs de type 'polygon' ( ou 'line' ou 'point'). Cependant je n'arrive pas à utiliser les fonctions SQL géo. classiques sur ce type de champ (ex: pour un select centroid, j'ai le message d'erreur suivant
ERROR:  function centroid(polygon) does not exist
HINT:  No function matches the given name and argument types. You may need to add explicit type casts.
)

Et je n'arrive pas non plus à les visualiser sous QGis, la couche affichée est vide (alors qu'avec les champs de type 'geometry' tout fonctionne bien).

Il semble que ce type ne soit pas reconnu comme un format géométrique. Comment s'utilise t-il alors ?
Ne vaut-il pas mieux repasser par un type 'geometry' ?

Merci d'avance

Hors ligne

 

#2 Tue 08 December 2009 11:40

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

Re: Pb sur type 'polygon' dans Postgis

Kaa a écrit:

Bonjour,

J'ai un souci avec des champs au format 'polygon' sous PostGis.

Je m'explique :
dans la base de données que j'ai récupérée les infos géographiques sont stockées dans des champs de type 'polygon' ( ou 'line' ou 'point'). Cependant je n'arrive pas à utiliser les fonctions SQL géo. classiques sur ce type de champ (ex: pour un select centroid, j'ai le message d'erreur suivant
ERROR:  function centroid(polygon) does not exist
HINT:  No function matches the given name and argument types. You may need to add explicit type casts.
)


Et je n'arrive pas non plus à les visualiser sous QGis, la couche affichée est vide (alors qu'avec les champs de type 'geometry' tout fonctionne bien).


Il semble que ce type ne soit pas reconnu comme un format géométrique. Comment s'utilise t-il alors ?
Ne vaut-il pas mieux repasser par un type 'geometry' ?

Merci d'avance


Question bete: est-ce que postgis est installé sur la nouvelle base ? si celle-ci provient d'une sauvegarde, il faut bien verifier que Pgis est la, complet.
que donne:

select postgis_full_version();

La table geometry_columns est-elle bien renseignée pour les tables geo ?

Si, le type polygon est bon.
Les geometries sont-elles vraiment toutes de type pg dans la table ?:

select distinct st_geometryType(geom) from matable;

Nico

Hors ligne

 

#3 Tue 08 December 2009 12:02

Kaa
Juste Inscrit !
Date d'inscription: 8 Dec 2009
Messages: 4

Re: Pb sur type 'polygon' dans Postgis

PostGis a l'air bien installé (345 fonctions) et la table geometry_columns est renseignée

select postgis_full_version();
>>
"POSTGIS="1.1.6" GEOS="2.2.3-CAPI-1.1.1" PROJ="Rel. 4.4.9, 29 Oct 2004" USE_STATS"



Il n'y a pas de fonction st_geometryType sur la base mais geometryType(geometry) qui donne un message d'erreur pour mon type polygon

select distinct geometryType(geom) from matable;
>>
ERROR:  function geometrytype(polygon) does not exist
HINT:  No function matches the given name and argument types. You may need to add explicit type casts.

Hors ligne

 

#4 Tue 08 December 2009 12:06

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

Re: Pb sur type 'polygon' dans Postgis

Kaa a écrit:

PostGis a l'air bien installé (345 fonctions) et la table geometry_columns est renseignée

select postgis_full_version();
>>
"POSTGIS="1.1.6" GEOS="2.2.3-CAPI-1.1.1" PROJ="Rel. 4.4.9, 29 Oct 2004" USE_STATS"



Il n'y a pas de fonction st_geometryType sur la base mais geometryType(geometry) qui donne un message d'erreur pour mon type polygon

select distinct geometryType(geom) from matable;
>>
ERROR:  function geometrytype(polygon) does not exist
HINT:  No function matches the given name and argument types. You may need to add explicit type casts.


Houla, c'est du moyen age cette version de pgis. Bcp de bugs, bcp de choses non implémentées, plus maintenue, etc.

faut passer a la 1.4, ca ira mieux apres smile

Dernière modification par Nicolas Ribot (Tue 08 December 2009 12:08)

Hors ligne

 

#5 Wed 09 December 2009 11:58

Kaa
Juste Inscrit !
Date d'inscription: 8 Dec 2009
Messages: 4

Re: Pb sur type 'polygon' dans Postgis

J'ai installé Postgis 1.4 mais toujours les mêmes pbs avec le type 'polygon'

Hors ligne

 

#6 Wed 09 December 2009 12:09

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

Re: Pb sur type 'polygon' dans Postgis

Kaa a écrit:

J'ai installé Postgis 1.4 mais toujours les mêmes pbs avec le type 'polygon'


Hmm, que donne :

select distinct st_geometryType(geomcol) from matable;
ou:
select astext(geomcol) from matable;

Nico

Hors ligne

 

#7 Wed 09 December 2009 12:14

Kaa
Juste Inscrit !
Date d'inscription: 8 Dec 2009
Messages: 4

Re: Pb sur type 'polygon' dans Postgis

Toujours pareil : fonctions inexistantes pour le type 'polygon' (ça marche pour les types geometry)

Hors ligne

 

#8 Wed 09 December 2009 12:24

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

Re: Pb sur type 'polygon' dans Postgis

Kaa a écrit:

J'ai installé Postgis 1.4 mais toujours les mêmes pbs avec le type 'polygon'


Ooops pardon, grosse confuse de ma part :~
les POINT, LINE, PATH, POLYGON que vous voyez dans vos colonnes sont surement les types geometriques de postgresql, pas ceux de postgis (qui est effectivement GEOMETRY).

Pour verifier, si une fonction select npoints(geomcol) from matable renvoie un resultat, mais pas
select st_geometryType(geomcol) from matable, alors ce sont des types postgresql et pas postgis.

Postgis ne sait pas gerer ces types Postgresql, mais rajoute ses propres types, a travers GEOMETRY.

Il faudra alors convertir les types postgresql en postgis pour se servir de la partie spatiale (jamais trop fait)

Le passage a 1.4 permet tout de meme d'avoir la derniere postgis dispo wink

Nicolas

Hors ligne

 

#9 Wed 09 December 2009 12:26

vincentp
Participant actif
Lieu: Paris
Date d'inscription: 18 Jul 2006
Messages: 127

Re: Pb sur type 'polygon' dans Postgis

Bonjour,

Kaa a écrit:

Bonjour,

J'ai un souci avec des champs au format 'polygon' sous PostGis.

[snip]

Il semble que ce type ne soit pas reconnu comme un format géométrique. Comment s'utilise t-il alors ?
Ne vaut-il pas mieux repasser par un type 'geometry' ?


Les champs de type «polygon» n'ont rien à voir avec PostGIS, ce sont des champs de type géométrique de PostgreSQL. Sisi, il y a de la géométrie dans PostgreSQL en dehors de PostGIS, même si c'est très peu utilisé.

http://www.postgresql.org/docs/8.2/stat … etric.html

Il ne sera donc pas possible d'utiliser les fonctions PostGIS la dessus, et les programme qui reconnaissent les géométries PostGIS ne vont pas non plus pouvoir utiliser ces champs.

Pour pouvoir se sortir de la situation, il faut convertir les champs en géométrie PostGIS. Le seul moyen que je voie pour ce faire pour le moment est de générer une chaine WKT a partir de la representation texte du champ polygon, et d'utiliser st_geometryfromtext() de postgis pour récupérer une géométrie.
C'est un peu pénible a faire car «monpolygon::text» ne renvoie pas directement du WKT, il faut faire quelques conversions et concaténations de texte pour y arriver. Mais ça doit pouvoir se faire.

Bon courage,
Vincent

Hors ligne

 

Pied de page des forums

Powered by FluxBB