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 Thu 30 April 2009 14:47

alban
Participant assidu
Lieu: Chizé
Date d'inscription: 16 May 2007
Messages: 156
Site web

Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour,

Voici 3 jours que je m'arrache les cheveux (je pensais avoir de la marge, mais la calvitie me guette si vous ne m'aidez pas rapidement wink ) sur un problème d'export de shapefile. Plus précisément, j'ai hérité d'un serveur cartographique (intranet) pour saisir des observations faites sur le terrain. La technologie utilisée est openlayer sur mapserver. Les formulaires sont codés en Ajax et modifient en temps réel des requêtes sql. La base (pgSQL/postgis) est servie par MS4W.

J'ai "bêtement" voulu transféré cet outil en production pour faciliter quelques développements que l'on me demandait, et pour m'entraîner à l'installation définitive sur un serveur linux. Le problème est qu'un bug est apparu suite à ce transfert : les exports des observations dans un shapefile ne marchent pas tous. En fait, pour un des types d'observation, le shapefile ne contient que les entêtes de colonne mais pas d'info. Pour les autres types d'observation, les exports fonctionnent. En plus, j'ai remarqué un ralentissement, voire un peu d'instabilité (quand on le sollicite trop), et que je croyais être dû à une différence de puissance entre les ordis. Après réflexion, mon ordi a 1 core duo >2Ghz et 2 Go de Ram, alors que le serveur est utilisé par 20 personnes ponctuellement => je ne pense pas qu'il soit débordé.

J'ai essayé de localiser au plus près le problème : lorsque l'export ne marche pas, l'interface PHP avec ogr (ogr2ogr.php) ne génère pas le shape (le transfert des entités échouent) alors que la requête SQL fonctionne dans PGAdmin. Je vois 3 solutions : soit des problèmes liés aux jeux de caractères (mais j'ai vérifié http.conf et postgreSQL.conf) soit des données de la base incompatibles avec du shape (format texte ou "time without zone"), soit un pb lié au code ajax (mais je ne comprendrais pas en quoi le transfert poserai ce genre de pb).

En 3 jours, j'ai ai eu le plaisir de vérifier un grand nombre de fausses pistes (et de farfouiller GeoRezo, entre autre), que je ne peux pas toutes mentionner. J'espère avoir donné assez de détails pour vous donner des pistes sur mon problème.... des avis/suggestions ?

Deuxième chose : savez où trouver l'interface PHP pour ogr ? existe-t-il une version plus récente (la mienne pourrait dater de 2003)

Au secours !!

PS : lors du transfert, je passe de postgresql 8.2 à 8.3.7 à 1 ms4w un peu plus récent etc.

Hors ligne

 

#2 Thu 30 April 2009 15:03

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9858
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour,

Il est fortement conseillé d'éviter de changer de version majeure lors du passage en prod. Je ne peux que t'inviter à tester une version 8.3.7 en local ou une version 8.2 en prod.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Thu 30 April 2009 16:35

alban
Participant assidu
Lieu: Chizé
Date d'inscription: 16 May 2007
Messages: 156
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour Yves,
Oui effectivement, j'ai pêché par excès de confiance... Je me suis pas assez laissé de temps pour décider que le transfert était opérationnel ! J'ai demandé aux utilisateurs de faire des tests pendant 1 jour 1/2 et personne n'est tombée dessus ;(

Mais je suis embêté car je n'avais pas accès facilement à l'autre PC, donc pour rajouter des nouvelles fonctionnalités... ça me rend aussi un peu inquiet pour le transfert vers un serveur Linux (même si j'ai fait des tests en local sur Ubuntu).

Sinon, pas d'inspiration magique sur ce bug ?

Alban

Hors ligne

 

#4 Thu 30 April 2009 16:42

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9858
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Alban,

il est possible que cela provienne de la version de postgresql et d'ogr2ogr. Comme tu l'as dit, ogr2ogr en php date de 2003, jamais mis à jour depuis. Même si on en reparle de temps en temps. Voilà pourquoi je te proposais de tester avec des version de pgsql équivalentes.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Thu 30 April 2009 17:30

alban
Participant assidu
Lieu: Chizé
Date d'inscription: 16 May 2007
Messages: 156
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Pardon Yves,
Je vais de suite faire un test en local avec 8.2 pour voir si le problème est solutionné.

Merci,

Alban

Hors ligne

 

#6 Thu 30 April 2009 17:46

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

Re: Mapserver/ajax et PostgreSQL : shapefile vide

alban a écrit:

Bonjour,

Voici 3 jours que je m'arrache les cheveux (je pensais avoir de la marge, mais la calvitie me guette si vous ne m'aidez pas rapidement wink ) sur un problème d'export de shapefile. Plus précisément, j'ai hérité d'un serveur cartographique (intranet) pour saisir des observations faites sur le terrain. La technologie utilisée est openlayer sur mapserver. Les formulaires sont codés en Ajax et modifient en temps réel des requêtes sql. La base (pgSQL/postgis) est servie par MS4W.

J'ai "bêtement" voulu transféré cet outil en production pour faciliter quelques développements que l'on me demandait, et pour m'entraîner à l'installation définitive sur un serveur linux. Le problème est qu'un bug est apparu suite à ce transfert : les exports des observations dans un shapefile ne marchent pas tous. En fait, pour un des types d'observation, le shapefile ne contient que les entêtes de colonne mais pas d'info. Pour les autres types d'observation, les exports fonctionnent. En plus, j'ai remarqué un ralentissement, voire un peu d'instabilité (quand on le sollicite trop), et que je croyais être dû à une différence de puissance entre les ordis. Après réflexion, mon ordi a 1 core duo >2Ghz et 2 Go de Ram, alors que le serveur est utilisé par 20 personnes ponctuellement => je ne pense pas qu'il soit débordé.

J'ai essayé de localiser au plus près le problème : lorsque l'export ne marche pas, l'interface PHP avec ogr (ogr2ogr.php) ne génère pas le shape (le transfert des entités échouent) alors que la requête SQL fonctionne dans PGAdmin. Je vois 3 solutions : soit des problèmes liés aux jeux de caractères (mais j'ai vérifié http.conf et postgreSQL.conf) soit des données de la base incompatibles avec du shape (format texte ou "time without zone"), soit un pb lié au code ajax (mais je ne comprendrais pas en quoi le transfert poserai ce genre de pb).

En 3 jours, j'ai ai eu le plaisir de vérifier un grand nombre de fausses pistes (et de farfouiller GeoRezo, entre autre), que je ne peux pas toutes mentionner. J'espère avoir donné assez de détails pour vous donner des pistes sur mon problème.... des avis/suggestions ?

Deuxième chose : savez où trouver l'interface PHP pour ogr ? existe-t-il une version plus récente (la mienne pourrait dater de 2003)

Au secours !!

PS : lors du transfert, je passe de postgresql 8.2 à 8.3.7 à 1 ms4w un peu plus récent etc.


Bonjour,

Quelques questions pour nous aider a y voir plus clair:

Quels sont les messages d'erreur qd l'export ne marche pas ?
Quelle est la version de PostGIS ?
sous quelle forme et comment sont stockés/mis a jour les objets geographiques dans Postgis. ?
Les geometries sont-elles valides dans les tables geometriques (st_isvalid). ?
quelle est le commande envoyée par ogr2ogr ?

Nicolas

Hors ligne

 

#7 Thu 30 April 2009 18:59

alban
Participant assidu
Lieu: Chizé
Date d'inscription: 16 May 2007
Messages: 156
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour Nicolas,


Pour répondre (à moitié) à tes questions :
* Pas de message d'erreur renvoyé (ogr2ogr.php a été modifié pour les besoins de l'appli), mais j'ai localisé l'erreur dans la fonction TranslateLayer(), au niveau du transfert des entités. C'est pour ça que je cherchais une copie d'ogr2ogr.php (ou mieux version plus récente)
* Postgis 1.3.5
* les entités géographiques sont des points, stockés dans une table "point" (étonnant, non ?) avec une champ geometry.
* par d'erreur de géométrie mais qqchose m'échappe : isvalid() fonctionne mais pas st_isvalid(). Je croyais la 1ère notation obsolète... est-ce que ma base n'est pas bien associée à postGis ?
* je ne comprends pas la dernière question. J'ai du mal à retrouver la syntaxe d'ogr2ogr dans le php. Je pense que c'est la fonction OGR_F_SetFrom qui n'accepte pas les entités en entrée... mais je ne vois pas d'include et honnêtement, je ne comprends pas le lien avec ogr2ogr !

PS : 30ko/s... j'attends toujours la fin du téléchargement de postgreSQL 8.2 pour faire le test !!! Aïe, le téléchargement doit être relancé !
PS2 : 1ère expérience de mapserver... mes compétences sont un peu limites

Hors ligne

 

#8 Fri 01 May 2009 11:25

alban
Participant assidu
Lieu: Chizé
Date d'inscription: 16 May 2007
Messages: 156
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour,
J´ai finalement réussi à faire mon test sur postgres 8.2 et le résultat est le même sad
Par contre, j´ai eu ce message d´erreur lors du transfert :

pg_restore: [programme d'archivage (db)] could not execute query: ERROR:  role "consultation" does not exist
    Command was: GRANT USAGE ON SCHEMA public TO consultation;


Dés que j´ai accès à l´ordi qui hébergeait la version fonctionnelle, je lancerai

SELECT rolname FROM pg_roles;


... la suite au prochain épisode...

Et merci à Yves et Nicolas pour leurs questions et pistes !

Hors ligne

 

#9 Fri 01 May 2009 14:13

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9858
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour,

Un restore ne créé par les "rôles", il faut dont recréer le rôle avant restauration.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#10 Fri 01 May 2009 17:04

alban
Participant assidu
Lieu: Chizé
Date d'inscription: 16 May 2007
Messages: 156
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour Yves,
Effectivement, c'est une information importante. Connaitrais-tu d'autres requêtes pour mieux cerner les caractéristiques d'une base PostgreSQL ?
(hormis celles sur les rôles et les tables)
Je vais plancher sur la question de la restauration, en espérant ne pas avoir de nouveaux désagréments (j'envisage de faire le transfert inverse...)

Merci,

Hors ligne

 

#11 Sun 03 May 2009 12:03

vdb
Participant actif
Lieu: Chambéry
Date d'inscription: 21 Jun 2006
Messages: 56

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour Alban,

Pour sauvegarder une base postgres et les roles de connection, voici
comment on fait généralement :

sudo su postgres
pg_dumpall --globals-only > /tmp/globals.sql
pg_dump --format=c nom_de_la_base > /tmp/base.dump

Pour la restaurer, toujours en utilisateur postgres :

psql -d template1 -f /tmp/globals.sql
pg_restore -d template1 --create /tmp/base.dump

A+
F.

Hors ligne

 

#12 Sun 03 May 2009 19:52

brunofriedmann
Participant occasionnel
Lieu: Vellerat, suisse
Date d'inscription: 19 Apr 2008
Messages: 31
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Juste un mot sur la version postgis : si il y a changement entre les deux serveurs ( version non strictement équivalente )
il existe un /usr/share/postgis/lwpostgis_upgrade.sql

Evidement cela ne marche que dans le sens d'update pas de downgrade.

Ceci expliquerai la nom présence de certaine fonction st_

Autre point important : Lors d'un dump sur une plateforme il sera peut-être nécessaire de modifier le dump à la main
car le chemin des objets et lib postgis se code en dur lors de la "postigisation" de la db

donc sous windows vous devriez trouver des lw*.dll avec un chemin.
Evidemment restaurer cela sous un linux n'a pas beaucoup de chances de fonctionner.

Il faut remplacer par les bons noms et chemins des lib dans le dump
vi et/ou sed sont tes amis.

Là où c'est vicieux c'est par exemple avoir un serveur de dev en 32bits ( chemin /usr/lib/ ) et un prod en 64bits (/usr/lib64 ) :-)

Bruno Friedmann

Hors ligne

 

#13 Mon 04 May 2009 17:31

alban
Participant assidu
Lieu: Chizé
Date d'inscription: 16 May 2007
Messages: 156
Site web

Re: Mapserver/ajax et PostgreSQL : shapefile vide

Bonjour à tous,

Merci pour les nouvelles infos et propositions ! Je voudrais éclaircir un point : je travaille actuellement sur windows avec MS4W, et plus précisément j'ai fait un transfert entre 2 postes Windows... Les problèmes posés par le changement d'OS sont très intéressants et j'avoue avoir commencé à configurer une copie test sur Linux en local, mais c'est une autre histoire (qui promet déjà !)

J'ai regardé la sortie de la méthode de restauration proposée (en deux étapes) avec ma base actuelle et j'ai trouvé deux différences : le rôle "consultation" n'avait pas été transféré et l'encodage était différent :

--
-- PostgreSQL database cluster dump
--

\connect postgres

SET client_encoding = 'UTF8';
...


En fait, l'encodage de ma base de données était bien en UTF8, mais pas le cluster des bases de données (aïe) ... est-ce que l'on peut changer le cluster sans désinstaller pgSQL ? En parallèle, j'applique les droits au rôle consultation, mais je ne crois pas que ce soit le centre du problème.

... Bref, je continue à chercher et j'espère m'approcher de la solution...

Merci encore,

Alban

Hors ligne

 

Pied de page des forums

Powered by FluxBB