Message posté par : Olivier Pompier (pompierolivier(a)hotmail.com)
----------------------------------------
Bonjour,
N'ayant pas trouvé d'équivalent, je me permets de déposer ce script permettant
d'insérer des données (attributs + geometrie)issus d'un shape ou d'un autre
format vecteur vers une base de données PG via psycopg2.
Dans mon cas , je suis passé par Python pour intégration dans un plugin.
C'est écrit avec peu d'élégance mais ça a le mérite d'être fonctionnel, toute
suggestion de correction/amélioration est bienvenue
-----------------
Code :
try:
connection = psycopg2.connect(user="postgres",
password="postgres",
host="localhost",
port="5432",
database="db")
# Create a cursor to perform database operations
cursor = connection.cursor()
insertquery = "INSERT INTO table (champ1, champ2, geom) VALUES {}
".format(self.valSql(lyr))
cursor.execute(insertquery)
connection.commit()
except (Exception, Error) as error:
self.iface.messageBar().pushMessage('Error while connecting to PostgreSQL')
finally:
if (connection):
cursor.close()
connection.close()
#
def valSql(lyr):
''' retourne les valeurs placées dans la requête INSERT INTO
'''
l = []
for feat in lyr.getFeatures():
l.append('(')
l.append(str((feat['CHAMP1'])) + ',')
l.append(str((feat['CHAMP2'])) + ',')
l.append('(ST_GeomFromText (\'' + feat.geometry().asWkt() +
'\', 32631)))') # On assigne le SCR EPSG:32631 ou autre
l.append(',')
liste_vers_str_geom = ''.join(str(e) for e in l)
return liste_vers_str_geom[:-1] # avec le -1 on se débarasse de la virgule finale
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=347441#p347441
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net