QGIS Python (PyQGIS) - Calculate Field Values (Field Calculator)

Поділитися
Вставка
  • Опубліковано 29 лис 2024

КОМЕНТАРІ • 21

  • @sriramab
    @sriramab 5 місяців тому

    Hi, Is there a group by and summarize possibility on vector attribute table using pyqgis?

  • @PLRaeva
    @PLRaeva 4 роки тому +3

    Hi. Thank you for the videos. I really appreciate it that they are focused on geospatial analysis. I also like the way you 'make mistakes'. It teaches me even more. Keep the good work going. Thank you!

  • @mteixeira87
    @mteixeira87 3 роки тому +1

    Just what I needed, thank you![2]

  • @trunghieubui4896
    @trunghieubui4896 4 роки тому

    Hi Mr. Konrad,
    Please help me,
    How can i concatenate two field by field calculator

  • @GIS-Engineer
    @GIS-Engineer 4 роки тому +1

    How to kml convert shapefile. Kml have table tag.

  • @jalineliam4567
    @jalineliam4567 3 роки тому

    Just what I needed, thank you!

  • @MerlinMalin
    @MerlinMalin 4 роки тому

    Thank you for this video. I used the method to create a map for which i needed to include a set of almost 200 expression. I'm still quite new to PyQGIS. Is there a way to create a list of all the defined expressions and afterwards loop over them? I don't want to copy-paste this code 200 times:
    with edit(layer):
    for f in layer.getFeatures():
    context.setFeature(f)
    f['NewVariable'] = expression1.evaluate(context)
    layer.updateFeature(f)
    I appreciate any hint or answer!
    Thank you in advance!

    • @geospatialschool
      @geospatialschool  4 роки тому +1

      Yes. You will need to create a list that has all your expressions as strings, and a list that has the names of the new fields to create. Then you can create another loop after context.setFeature that loops through the expression strings, creates a QgsExpression then evaluates the expression. So you'll have to move around the order of the code from the video a little bit, but you should be able to do it.

  • @driesdams4093
    @driesdams4093 3 роки тому

    Thanks a lot Konrad!
    Can you please make a video on conditional statements (if, elif, else) in the pyQGIS console?

    • @geospatialschool
      @geospatialschool  3 роки тому

      Hi Dries. I'll put it on my list but I'm not sure when I'll be able to get to it. Condition statements in PyQGIS are going to work the same way as conditionals in regular Python. So if you need to figure something out quickly check out regular Python tutorials.

    • @driesdams4093
      @driesdams4093 3 роки тому

      @@geospatialschool Thanks for the answer! :)

  • @iqbaltriputra628
    @iqbaltriputra628 4 роки тому

    Hi Mr. Konrad,
    How if we want to calculate using the existed field/column of the layer?

    • @geospatialschool
      @geospatialschool  4 роки тому

      You can use the same procedure. You just won't need to create any new fields.

  • @miidrob
    @miidrob 3 роки тому +1

    genial....!
    thanks

  • @allanmazimwe7417
    @allanmazimwe7417 4 роки тому

    Hi how do i run this in qgis3 processing script??

    • @geospatialschool
      @geospatialschool  4 роки тому

      Just as shown in the video. Once you have a vector layer variable you can access, create, and calculate attributes the same way.

    • @allanmazimwe7417
      @allanmazimwe7417 4 роки тому

      @@geospatialschool
      well this script works on python console
      data='/home/geoportal/qgis/lizmapwps/lizmap/instances/VulnerabilityTool/data1/default_vulnerability.shp'

      #layer= QgsVectorLayer(data, 'dd', 'ogr')
      layer= iface.addVectorLayer(data, 'dd', 'ogr')

      pv=layer.dataProvider()
      pv.addAttributes([QgsField('rawvul', QVariant.Double),\
      QgsField('customvul', QVariant.Double)])

      layer.updateFields()
      expression1=QgsExpression('"LoACapacit" * 0.33 + "sensitivit" * 0.44 + "exposure" * 0.27' )
      expression2=QgsExpression('expression1-minimum(expression1)/(maximum(expression1)-minimum(expression1))')
      context = QgsExpressionContext()
      context.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(layer))

      with edit(layer):
      for f in layer.getFeatures():
      context.setFeature(f)
      f['rawvul'] = expression1.evaluate(context)
      f['customvul'] = expression2.evaluate(context)
      layer.updateFeature(f)
      with edit(layer):
      for f in layer.getFeatures():
      context.setFeature(f)
      f['customvul'] = expression2.evaluate(context)
      layer.updateFeature(f)
      # however i would like to change it to qgsProcessing script .. am stuck at this... pleasse help please....