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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Sat 17 July 2021 22:08

JC_
Participant occasionnel
Date d'inscription: 25 Mar 2021
Messages: 14

QGIS: Creer des points 3D avec Pygis

Bonjour,

Je cherche à créer des points avec une valeur Z avec Pygis. Débutant complet en Python, j'ai trouvé un script qui me créer 4 points mais seulement en coordonnées (x,y), alors que je voudrais ajouter un Z également.

Code:

layer = QgsVectorLayer('Point?crs=EPSG:4326', 'point', 'memory') 
provider = layer.dataProvider()
provider.addAttributes([QgsField('Name', QVariant.String)])
provider.addAttributes([QgsField('ID', QVariant.Int)])
layer.updateFields() 
f = QgsFeature()
p1 = QgsPointXY(78.25, 14.25)
p2 = QgsPointXY(78.25, 14.50)
p3 = QgsPointXY(78.50, 14.50)
p4 = QgsPointXY(78.50, 14.25)
f.setGeometry(QgsGeometry.fromPointXY(p1))
f.setAttributes(['Lower Left',1])
provider.addFeature(f)
f.setGeometry(QgsGeometry.fromPointXY(p2))
f.setAttributes(['Upper Left',2])
provider.addFeature(f)
f.setGeometry(QgsGeometry.fromPointXY(p3))
f.setAttributes(['Upper Right',3])
provider.addFeature(f)
f.setGeometry(QgsGeometry.fromPointXY(p4))
f.setAttributes(['Lower Right',4])
provider.addFeature(f)
layer.updateExtents() 
QgsProject.instance().addMapLayer(layer)
QgsVectorFileWriter.writeAsVectorFormat(layer, "C:/Users/XXX/Desktop/Articles PEM/Graphiques/testpoint11.shp", "UTF-8", layer.crs(), "ESRI Shapefile")
path = "C:/XXX/XXX/Desktop/Articles PEM/Graphiques"
layerfile = QgsVectorLayer(path, "test point", "ogr")
QgsProject.instance().addMapLayer(layerfile)

J'ai partiellement trouvé un élément de réponse ici : https://gis.stackexchange.com/questions … -in-pyqgis mais je suis bien trop débutant pour adapter mon code, rien ne fonctionne.

Quelqu'un a t-il déjà été confronté au problème ? Une adaptation est-elle possible ?
Merci !

Hors ligne

 

#2 Sat 17 July 2021 22:28

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

Re: QGIS: Creer des points 3D avec Pygis

Bonjour,
Pas testé le code mais QgsPointXY crée des points 2D. Pour la 3D, il vous faut utiliser QgsPoint et passer les 3 valeurs de coordonnées x,y,z à vos p1..p4

Hors ligne

 

#3 Sun 18 July 2021 21:45

JC_
Participant occasionnel
Date d'inscription: 25 Mar 2021
Messages: 14

Re: QGIS: Creer des points 3D avec Pygis

Bonjour,

Merci pour votre éclaircissement.
J'ai changé mon code par celui-là du coup mais il ne fonctionne toujours pas, le Z n'existe pas...

Code:

layer = QgsVectorLayer('Point?crs=EPSG:4326', 'point', 'memory') 
provider = layer.dataProvider()
provider.addAttributes([QgsField('Name', QVariant.String)])
provider.addAttributes([QgsField('ID', QVariant.Int)])
layer.updateFields() 
f = QgsFeature()
f.setGeometry(QgsPoint(78.25, 14.25, 500))
f.setAttributes(['Lower Left',1])
provider.addFeature(f)
f.setGeometry(QgsPoint(78.25, 14.50, 400))
f.setAttributes(['Upper Left',2])
provider.addFeature(f)
f.setGeometry(QgsPoint(78.50, 14.50, 600))
f.setAttributes(['Upper Right',3])
provider.addFeature(f)
f.setGeometry(QgsPoint(78.50, 14.25, 400))
f.setAttributes(['Lower Right',4])
provider.addFeature(f)
layer.updateExtents() 
QgsProject.instance().addMapLayer(layer)
QgsVectorFileWriter.writeAsVectorFormat(layer, "C:/Users/XXX/Desktop/Articles PEM/Graphiques/testpoint11.shp", "UTF-8", layer.crs(), "ESRI Shapefile")
path = "C:/Users/XXX/Desktop/Articles PEM/Graphiques"
layerfile = QgsVectorLayer(path, "test point", "ogr")
QgsProject.instance().addMapLayer(layerfile)

Est-ce que j'ai bien fait ?

Hors ligne

 

#4 Mon 19 July 2021 09:55

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 566
Site web

Re: QGIS: Creer des points 3D avec Pygis

Bonjour,

Il faut modifier la première ligne de votre code qui crée la couche pour lui indiquer que vous souhaitez stocker le z des points

Code:

layer = QgsVectorLayer('Point z?crs=EPSG:4326', 'point', 'memory')

Jean-Marie
Azimut

Hors ligne

 

#5 Mon 19 July 2021 10:29

JC_
Participant occasionnel
Date d'inscription: 25 Mar 2021
Messages: 14

Re: QGIS: Creer des points 3D avec Pygis

Merci beaucoup Jean-Marie, ça marche !!
Bonne journée !

Hors ligne

 

Pied de page des forums

Powered by FluxBB