Skip to content

Instantly share code, notes, and snippets.

@davidbjourno
Created August 20, 2018 12:35
Show Gist options
  • Save davidbjourno/4f03e56fa766c538989b925171e124c4 to your computer and use it in GitHub Desktop.
Save davidbjourno/4f03e56fa766c538989b925171e124c4 to your computer and use it in GitHub Desktop.
from osgeo import ogr
# Open shapefile and count features
source = ogr.Open('building-means.shp', update=True)
layer = source.GetLayer()
features_count = layer.GetFeatureCount()
# Create new field
new_field = ogr.FieldDefn('mean_rnd', ogr.OFTReal) # Define new floating-point field
new_field.SetWidth(10)
new_field.SetPrecision(1) # Enforce precision of one decimal place
layer.CreateField(new_field)
# Loop over all features, rounding value of 'mean' field
features_processed = 0
for feature in layer:
mean = feature.GetField('mean')
feature.SetField('mean_rnd', mean) # Copy 'mean' field into new 'mean_rnd' field
layer.SetFeature(feature)
features_processed += 1 # Update count of features processed
# Print update on number of features processed to console for progress monitoring
print('{} of {} features processed'.format(features_processed, features_count))
# Close shapefile when done
source = None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment