Sha256: dc93dc208c6fa0b89a446b5b8522c6afe22aa2c34e2e18f4ea0926720fa5743d
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
require 'bundler/setup' require 'thor' require 'fileutils' require 'gdal/dataset' require 'gdal/raster_band' GDAL::Logger.logging_enabled = true module Examples class RasterErasing < ::Thor desc 'erase SOURCE DEST', 'Erase (clip) pixels from the center of the first raster band in SOURCE to DEST' def erase(source_path, dest_path) FileUtils.cp(source_path, dest_path) dest_dataset = GDAL::Dataset.open(dest_path, 'w') geo_transform = dest_dataset.geo_transform raster_band = dest_dataset.raster_band(1) extent_polygon = dest_dataset.extent buffer_size = if extent_polygon.area > 1 extent_polygon.area / -5000 else extent_polygon.area / -0.5 end extent_polygon = extent_polygon.buffer(buffer_size) if extent_polygon.empty? raise 'Poorly buffered extent--you should play with these values to get this demo to work.' end raster_point = OGR::Point.new start = Time.now raster_band.simple_erase! do |x, y| coords = geo_transform.apply_geo_transform(x, y) raster_point.set_point(0, coords[:x_geo], coords[:y_geo]) !raster_point.within? extent_polygon end dest_dataset.close puts "Erased dataset in #{Time.now - start}s. Output at '#{dest_path}'" end end end Examples::RasterErasing.start(ARGV)
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ffi-gdal-1.0.0.beta7 | examples/raster_erasing.rb |
ffi-gdal-1.0.0.beta6 | examples/raster_erasing.rb |