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 Wed 18 July 2012 08:58

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

POSTGIS : Export de table selon attribut

Bonjour,

J'ai une polyline dans une base de donnée postgis avec un attribut "station" et je souhaite l'exporter avec un pgsql2shp   en autant de shape qu'il y a de stations et le tout dans un même dossier avec comme nom du shp le nom de la station. En gros j'envisageais une boucle qui fait

Pour i dans (select distinct station from mypolyline) {

\! pgsql2shp -p 5432 -h localhost -u postgres -f  "monchemin\i -P motdepasse mabdd "select * from mypolyline where station = i

}


Seulement, je ne connais pas la syntaxe à utiliser en sql ou en batch windows.


Avez-vous déjà fait ceci ? 

Merci d'avance,


Pascal PLUVINET

Hors ligne

 

#2 Wed 18 July 2012 10:40

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

Re: POSTGIS : Export de table selon attribut

Bonjour,

Batch non, shell plutot ?

Nicolas

Hors ligne

 

#3 Wed 18 July 2012 11:33

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: POSTGIS : Export de table selon attribut

Heu oui Shell window !


Pascal PLUVINET

Hors ligne

 

#4 Wed 18 July 2012 15:09

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

Re: POSTGIS : Export de table selon attribut

Je ne connais pas trop la syntaxe en shell windows.

En shell ou bash, je ferais qqch comme (pas testé):

Code:

$station = `psql  -At -c "select distinct station from mypoly"`

for i in $station; do
    pgsql2shp -f fichier_$i.shp ... "select * from mypoly where station=$i"
done

Nicolas

Hors ligne

 

#5 Wed 18 July 2012 16:09

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: POSTGIS : Export de table selon attribut

Merci Nicolas,
je testerai et ferai un retour


Pascal PLUVINET

Hors ligne

 

#6 Wed 18 July 2012 16:28

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

Re: POSTGIS : Export de table selon attribut

Sinon, une idee qui me vient, un peu moins propre que l'autre, mais que j'utilise souvent pour faire des traitements "one shot" consisterai a ecrire une requete SQL qui génèrerait les commandes pgsql2shp qui vont bien pour générer un shape par station:

Code:

WITH unique_stations as (
    select distinct station from mypolyline
) select 'pgsql2shp -p 5432 -h localhost -u postgres -f monchemin\fichier_' || station || '.shp "select * from mypolyline where station ='||station||'"';
from unique_stations.

Ensuite, coller le resultat de cette requete dans un fichier .bat ou directement dans une fenetre cmd et lancer le tout smile (apres avoir vérifier que ca marche pour une ou deux stations)

Nicolas

Hors ligne

 

#7 Thu 19 July 2012 12:22

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: POSTGIS : Export de table selon attribut

En m'inspirant de ce que Nicolas proposait (deuxième solution), voilà ce que j'ai finalement fait :



Code:

   
 create table export as 
select ' C:\postgres\bin\pgsql2shp -p 5432 -h localhost -u postgres  -f "D:\OUTPUT_POSTGIS\STAT\' || a.nom_statio || '.shp" -P mypassword mybdd "select * from mypolyline  where idsta ='||a.idsta||'"'
 from (select distinct idsta , nom_statio from mypolyline) as a ;
 
 \COPY  export to D:\OUTPUT_POSTGIS\exportshp.bat

L'idée étant , tout en restant dans la console postgres de créer un fichier bat que j’exécute ensuite.

Merci encore


Pascal PLUVINET

Hors ligne

 

Pied de page des forums

Powered by FluxBB