#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: 1554
Re: 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
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: 1554
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.
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
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: 1554
Re: Pb sur type 'polygon' dans Postgis
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: 1554
Re: Pb sur type 'polygon' dans Postgis
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
Nicolas
Hors ligne
#9 Wed 09 December 2009 12:26
Re: Pb sur type 'polygon' dans Postgis
Bonjour,
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