QGIS - Geometrie duplizieren anhand eines Tabelleneintrages

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Homunkulus
User
Beiträge: 3
Registriert: Freitag 28. Oktober 2022, 07:39

Hallo zusammen,

ich hätte eine Frage zu einem Python Script, welches ich auf der folgenden Seite gefunden habe:

https://gis.stackexchange.com/questions ... 857#443857

Leider funktioniert das Script nicht so wie es beschrieben wird.

Ich habe alles genauso umgesetzt.

Es wird mir immer nur eine Geometrie dupliziert, verdreifacht, vervierfacht usw. Die anderen werden ignoriert.

Ich muss hinzufügen, dass ich überhaupt keine Kenntnisse in Pythonprogrammierung besitze.
Für eure Hilfe recht vielen Dank im voraus.

MFG
Benutzeravatar
__blackjack__
User
Beiträge: 14076
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Homunkulus: In der Python-Dokumentation gibt es ein Tutorial. Wenn Du das durchgearbeitet hast, sollte der Fehler in dem Programm trivial sein. Der ist ziemlich offensichtlich. 😇
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Versuch mal das hier:

Code: Alles auswählen

layer = iface.activeLayer() # my layer 
provider = layer.dataProvider() # access to the features of the layer 

# Loop on the features of the layer 
for feature in layer.getFeatures():
    id_duplicate = feature["id"] # value of the field id 
    number_duplicate = feature["number"] # number of duplicates
    geometry_duplicate = feature.geometry() # geometry of my feature
    
    # initialization of my counter which will allow me to know when I should stop duplicating 
    counter = 0
    while counter != number_duplicate :
        new_feature = QgsFeature() # new feature 
        new_feature.setAttributes([id_duplicate,number_duplicate]) # I apply the same attributes 
        new_feature.setGeometry(QgsGeometry(geometry_duplicate)) # I apply the same geometry
        provider.addFeature(new_feature) # Addition of the new entity 
    
        counter += 1
        # if the value of my field is equal to 1 then I stop duplicating this entity 
        and move on to the next one otherwise I continue.
Wenn das nicht hilft (die Einrückungen sind wichtig in Python!), dann braucht es einen Experten in ArcGIS, den du hier wahrscheinlich nicht findest. Mein Bruder macht das, aber kostet Geld ;)
Homunkulus
User
Beiträge: 3
Registriert: Freitag 28. Oktober 2022, 07:39

Hallo,
das hier wiedergegebene Script entspricht ja 1:1 dem aus dem Tutorial.

Was diue Anpassung betrifft stehe ich auf dem Schlauch, sorry.

Trotzdem vielen dank schon mal für die antworten.
Benutzeravatar
__blackjack__
User
Beiträge: 14076
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Homunkulus: Es entspricht eben nicht 1:1. Die Einrückung der zweiten Schleife ist anders. Die steht hier *in* der ``for``-Schleife und im SO Beitrag *nach* der ``for``-Schleife.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Homunkulus
User
Beiträge: 3
Registriert: Freitag 28. Oktober 2022, 07:39

Ich wollte mich noch recht herzlich bedanken.
Funktioniert super.

Super !!!
Antworten