binary cursor=>résultats tronqués pour un champ de type geometry

bonjour,

j'essaye de récupérer le contenu d'un champ de type geometry en binaire, via PHP.
BEGIN;DECLARE mycursor binary CURSOR FOR SELECT asbinary(geom,'NDR') FROM macouche;fetch all in mycursor;

Ca s'exécute bien, mais le résultat ne me donne que les deux premiers caractères du champ geom. c'est tronqué. Même chose quand j'exécute la transaction directement dans pgAdmin. Comment éviter cette troncature ?

Je souhaite utiliser un curseur binaire pour gagner en rapidité de traitement du wkb extrait de la table.

D'avance, merci,

Eric

Posted in PostGIS dans le contexte des serveurs cartographiques Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | printer friendly version | 4411 lectures

Posté par pechbonnieu le 12 Avril, 2006 - 13:11.

djay | 13 Avril, 2006 - 16:43

Salut Eric,
je pense que le résultat obtenu s'explique du fait que tu utilises un curseur binaire, qui n'est pas spécialement approprié pour l'affichage (voir : cette page). Si tu exécutes uniquement ta requête
SELECT asbinary(geom) FROM macouche, sans utiliser de curseur, le résultat sera alors correctement affiché (tu peux aussi utiliser un curseur de type text).

Gérald.

pechbonnieu | 14 Avril, 2006 - 10:05

Bonjour Gérald,

merci pour ta réponse.
mais je cherche spécifiquement à récupérer le résultat en binaire, car le wkb issu du asbinary(geom) est un format binaire qui ne peut être lu que par des fonctions binaires (unpack, etc.). Contrairement à tous les SGBD normaux, Postgresql convertit par défaut tout en texte. Ce qui oblige à reconvertir à l'arrivée en binaire dans PHP pour pouvoir lire les infos du wkb. Cette double conversion binaire->texte et texte->binaire est évidemment pénalisante en termes de performance.

Quand j'ai ensuite vu que Postgres avait inventé le concept de BINARY CURSOR, j'ai cru avoir la solution, mais, et c'est ma question de départ, ça ne semble pas passer dans PHP : on reçoit bien un flux binaire, mais limité à 2 octets !

Pour tout dire, je suis vaguement déçu par Postgres/Postgis, ça n'est pas très stable sous Windows, et certaines fonctions qui m'intéressaient a priori comme geomUnion() plantent très facilement (dès qu'on a un objet à trous, etc.)

Quoi qu'il en soit, bravo à tous ceux qui comme vous mettent des tutoriels et conseils pratiques à disposition en français, ça m'a fait gagner beaucoup de temps.

Eric

Accéder aux archives

« Novembre 2024  
Lun Mar Mer Jeu Ven Sam Dim
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

Ouverture de session

Qui est en ligne

Il y a actuellement 1 utilisateur et 63 invités en ligne.
Locations of visitors to this page
Drupal Top Sites - Ultimate Drupal Exposure