Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.55 KB | None | 0 0
  1. ##geo=group
  2. ##Warstwa1=vector polygon
  3. ##Warstwa2=vector point
  4. ##Pole_wyb=field Warstwa2
  5. ##Wyjscie=output vector
  6.  
  7. from qgis.core import *
  8. from PyQt4.QtCore import QVariant
  9.  
  10. warstwa1 = processing.getObject(Warstwa1)
  11. warstwa2 = processing.getObject(Warstwa2)
  12.  
  13. pola = QgsFields (warstwa1.fields())
  14.  
  15. pole = QgsField('ILOSC', QVariant.Int)
  16. pola.append(pole)
  17. pole = QgsField('SUMA', QVariant.Double)
  18. pola.append(pole)
  19. pole = QgsField('SREDNIA', QVariant.Double)
  20. pola.append(pole)
  21.  
  22. writer = processing.VectorWriter(
  23.     Wyjscie,
  24.     warstwa1.dataProvider().encoding(),
  25.     pola,
  26.     warstwa1.wkbType(),
  27.     warstwa1.crs())
  28.  
  29. feats = processing.features(warstwa1)
  30. n = len(feats)
  31. for i, feat in enumerate(feats):
  32.     progress.setPercentage(int(100 * i / n))
  33.     #do something with 'feat'
  34.    
  35.     obiekt = QgsFeature(pola)
  36.     geometria = feat.geometry()
  37.     obiekt.setGeometry(geometria)
  38.  
  39.     for kolumna in warstwa1.fields():
  40.         nazwa = kolumna.name()
  41.         obiekt[nazwa] = feat[nazwa]
  42.        
  43.     geom = QgsGeometry(geometria)
  44.     request = QgsFeatureRequest(geom.boundingBox())
  45.     count = 0
  46.     sum = 0.0
  47.     for feat2 in processing.features(warstwa2, request):
  48.         if geom.intersects(feat2.geometry()):
  49.             count += 1
  50.             sum+=float(feat2[Pole_wyb])
  51.    
  52.     obiekt["ILOSC"] = count
  53.     obiekt["SUMA"] = sum
  54.     if obiekt["ILOSC"] > 0:
  55.         obiekt["SREDNIA"] = obiekt["SUMA"]/obiekt["ILOSC"]
  56.     else:
  57.         obiekt["SREDNIA"] = 0
  58.        
  59.     writer.addFeature(obiekt)
  60.  
  61.            
  62. del writer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement