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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 13 December 2013 11:01

monique
Participant actif
Date d'inscription: 7 Oct 2005
Messages: 146

QGIS 2.0 : Copier coller d'une couche à une autre

Bonjour,

Avec la version 2, il y a un réel changement pour le copier coller entre 2 couches concernant les attributs.
Avant (avec la 1.7.2) Qgis ne tenait pas compte de l’intitulé des colonnes, il fallait que les colonnes soient organisées de la même façon dans les 2 couches.
Maintenant (V2), Qgis tient compte de l'intitulé des colonnes peu importe l'ordre.

Sauf que nous utilisons des fichiers shape (colonne limité à 10 caractères) pour mettre à jour des tables PostgreSQL/PostGIS qui ont des champs avec des libellés de plus de 10 caractères.
La mise à jour consiste à ajouter des enregistrements d'un fichier shape  dans une table PostgreSQL/PostGIS déjà existante.
Donc maintenant nous ne pouvons plus mettre à jour tous les champs puisque le shape n'accepte pas des colonnes de plus de 10 caractères.
Quelqu'un aurait-il une piste pour contourner cette nouveauté qui devient pour nous un problème, sans avoir à refaire toute la structure de PostgreSQL.


Monique

Hors ligne

 

#2 Mon 16 December 2013 16:41

Romary
Participant assidu
Lieu: Epinal
Date d'inscription: 17 Jun 2011
Messages: 211

Re: QGIS 2.0 : Copier coller d'une couche à une autre

Bonjour,

Il faudrait :
1) intégrer le shape dans postgresql via le plugin "shape file to postGIS Importer" dans une table qui sera temporaire.
2) renommer les intituler de cette table
3) Intégrer la table dans QGIS
4) faire la manip habituelle

ou
1)  intégrer le shape dans postgresql via le plugin "shape file to postGIS Importer" dans une table qui sera temporaire.
2) créer un requête ou insert en prenant les données de cette table pour les insérer dans la table désirée.
Cette solution est plus "pro" et sera plus rapide les fois suivantes (vu que vous allez sauvegarder votre requête).

cordialement,

Hors ligne

 

#3 Mon 16 December 2013 17:10

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3947

Re: QGIS 2.0 : Copier coller d'une couche à une autre

Bonjour,
Dans la continuité de la seconde option de Romary, si l'utilisation d'une interface graphique telle QGIS est requise et que les "recopieurs" n'ont pas forcément accès à PGAdmin, on peut penser à une table postgis "bâtarde" ayant la même structure que le shapefile et dans lequel les copies seront faites. Un trigger, calibré comme il faut, pourrait alors se charger de recopier ses entités dans la bonne table postgis. Par contre, ça veut dire que les utilisateurs auront à jongler peut-être avec deux tables à contenu presque identique.

-- Là, je commence à réfléchir à haute voix---
je ne connais pas super bien les modalités d'utilisation d'un trigger mais est-ce qu'il ne serait pas possible d'en créer un qui lors de la recopie depuis le shapefile ferait les correspondances entre les champs? Si Postgresql arrive à identifier les champs qui sont nommés à l'identique, je suppose qu'il arrive donc à lire leur nom dans le shapefile. Pour autant que vos shapefiles aient la même structure, ne peut-on donc penser à une fonction dans laquelle on ferait les correspondances de champs et qui serait appelée par un trigger before?
Est-ce possible? Si oui, je ne vois pas le début du code sad donc avis aux experts...

Hors ligne

 

#4 Mon 16 December 2013 18:45

VianneyD
Participant assidu
Date d'inscription: 30 May 2011
Messages: 153

Re: QGIS 2.0 : Copier coller d'une couche à une autre

Bonjour,

J'avance une autre piste :

Exporter votre table en .shp depuis QGIS puis utiliser la commande ogrinfo comme suit pour renommer vos colonnes

Code:

ogrinfo votre_table.shp -sql "ALTER TABLE votre_table RENAME COLUMN colonne_qgis TO colonne_pgis"

Ensuite, vous pouvez executer shp2pgsql avec l'option -a pour mettre à jour votre table postgis, le tour est joué (enfin il me semble)


Vianney Dugrain

Hors ligne

 

Pied de page des forums

Powered by FluxBB