Our objective is to read shapefiles using the RGeo gem in a Ruby program.
gem install rgeo
3. RGeo::Shapefile is an optional module for RGeo for reading geospatial data from ESRI shapefiles.
gem install rgeo-shapefile
Download a sample shapefile to test the code, (3 files - test.shp, test.dbf, test.shx).
Paste the following lines of code in a ruby file and run it.
require 'rgeo/shapefile'
RGeo::Shapefile::Reader.open('test.shp') do |file|
puts "File contains #{file.num_records} records."
file.each do |record|
puts "Record number #{record.index}:"
puts " Geometry: #{record.geometry.as_text}"
puts " Attributes: #{record.attributes.inspect}"
end
file.rewind
record = file.next
puts "First record geometry was: #{record.geometry.as_text}"
end
If GEOS library is not installed then it may produce the following error:-
/var/lib/gems/1.9.1/gems/rgeo-shapefile 0.2.3/lib/rgeo/shapefile/reader.rb:623:in
`_read_polygon': GEOS is not available, but is required for correct interpretation
of polygons in shapefiles. (RGeo::Error::RGeoError)
We keep getting this error you listed on our server. libgeos is linked in /usr/lib but we still get this. Any ideas how to fix?
ReplyDelete