module NSWTopo::Import

Public Instance Methods

get_raster(temp_dir) click to toggle source
# File lib/nswtopo/layer/import.rb, line 5
def get_raster(temp_dir)
  crop_path = temp_dir / "crop.tif"

  json = begin
    OS.gdalinfo "-json", @path
  rescue OS::Error
    raise "invalid raster file: #{@path}"
  end
  palette = JSON.parse(json)["bands"].any? do |band|
    "Palette" == band["colorInterpretation"]
  end

  projection = Projection.new(@path)
  args = ["-projwin", *@map.projwin(projection), @path, crop_path]
  args = ["-expand", "rgba", *args] if palette
  OS.gdal_translate *args

  return Numeric === @resolution ? @resolution : @map.get_raster_resolution(crop_path), crop_path
end