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

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ธ.ค. 2024

ความคิดเห็น • 21

  • @sriramab
    @sriramab 6 หลายเดือนก่อน

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

  • @mteixeira87
    @mteixeira87 3 ปีที่แล้ว +1

    Just what I needed, thank you![2]

  • @jalineliam4567
    @jalineliam4567 4 ปีที่แล้ว

    Just what I needed, thank you!

  • @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!

  • @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.

  • @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.

  • @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! :)

  • @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....

  • @miidrob
    @miidrob 3 ปีที่แล้ว +1

    genial....!
    thanks