class RGeoServer::ShapefileInfo
Attributes
file_path[R]
Public Class Methods
new(file_path)
click to toggle source
# File lib/rgeoserver/utils/shapefile_info.rb, line 19 def initialize file_path @file_path = file_path end
Public Instance Methods
bounds()
click to toggle source
# File lib/rgeoserver/utils/shapefile_info.rb, line 23 def bounds resource_init bbox = BoundingBox.new RGeo::Shapefile::Reader.open(@shp_path) do |shp| shp.each do |record| geometry = record.geometry envelope = geometry.envelope envelope_type = envelope.geometry_type points = case envelope_type when RGeo::Feature::Point [envelope] when RGeo::Feature::Polygon envelope.exterior_ring.points else raise ShapefileInfoGeometryNotExpected, envelope_type end points.each { |point| bbox.add point.x, point.y } end end resource_destroy bbox.expand if [bbox.minx, bbox.miny] == [bbox.maxx, bbox.maxy] bbox end
srid()
click to toggle source
# File lib/rgeoserver/utils/shapefile_info.rb, line 51 def srid resource_init srid = 0 RGeo::Shapefile::Reader.open(@shp_path) do |shp| srid = shp.factory.srid end resource_destroy srid end
Private Instance Methods
resource_destroy()
click to toggle source
# File lib/rgeoserver/utils/shapefile_info.rb, line 83 def resource_destroy FileUtils.rm_rf [tmp_dir] @shp_path = nil @tmp_dir = nil end
resource_init()
click to toggle source
# File lib/rgeoserver/utils/shapefile_info.rb, line 69 def resource_init if @file_path =~ /\.zip$/i Zip::ZipFile.open(@file_path) do |zipfile| zipfile.glob('**/**').each do |entry_name| dest_path = [tmp_dir, entry_name].join(File::SEPARATOR) @shp_path = dest_path if entry_name.name =~ /\.shp$/i zipfile.extract entry_name, dest_path end end else @shp_path = @file_path end end
tmp_dir()
click to toggle source
# File lib/rgeoserver/utils/shapefile_info.rb, line 65 def tmp_dir @tmp_dir ||= Dir.mktmpdir end