Guest User

Untitled

a guest
Aug 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. import gdal
  2. import ogr
  3.  
  4. stream = ogr.Open("stream.shp")
  5. substrates = ogr.Open("substrate1.shp")
  6. stream_l = stream.GetLayer()
  7. sub_l = substrates.GetLayer()
  8.  
  9. driver = ogr.GetDriverByName("ESRI Shapefile")
  10. outputds = driver.CreateDataSource(outputfn)
  11. outputlayer = outputds.CreateLayer(outputfn, geom_type=ogr.wkbPolygon)
  12.  
  13. for stream_f in stream_l:
  14. s_geom = stream_f.GetGeometryRef()
  15.  
  16. #Get overlap size by using a clip
  17. dict = {}
  18. for i,sub_feat in enumerate(sub_l):
  19. geom = sub_feat.GetGeometryRef()
  20. clip = geom.Intersection(stream_geom)
  21. dict[clip.GetArea()]=i
  22.  
  23. #Sort based on size and get most overlapping polygon
  24. sorted(dict.items(), key=lambda s: s[0])
  25. polynum = dict[dict.keys[0]]
  26. largest_feat = sub_l.GetFeature(polynum)
  27.  
  28. #enter the fieldname at #fn
  29. field_largest_feat = largest_feat.GetField(#fn)
  30.  
  31. #add this substrate feature to the original stream feature
  32. defn = outputlayer.GetLayerDefn()
  33. feature =ogr.Feature(defn)
  34. feature.CreateField(ogr.FieldDefn("substrate",ogr.OFTString))
  35. feature.SetField(str(field_largest_feat))
  36. feature.SetGeometry(s_geom)
  37.  
  38. outputlayer.CreateFeature(feature)
  39.  
  40. outputds = None
Add Comment
Please, Sign In to add comment