Class: OGR::SpatialReference
- Inherits:
-
Object
- Object
- OGR::SpatialReference
- Defined in:
- lib/ffi-ogr/spatial_reference.rb
Instance Attribute Summary collapse
-
#ptr ⇒ Object
Returns the value of attribute ptr.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #check_int(sr_import, format = 'epsg') ⇒ Object
- #check_string(sr_import, format) ⇒ Object
- #find_transformation(out_sr) ⇒ Object
- #free ⇒ Object
- #import_epsg(epsg_code) ⇒ Object
- #import_esri(esri_string) ⇒ Object
- #import_proj4(proj4_string) ⇒ Object
- #import_wkt(wkt) ⇒ Object
-
#initialize(ptr) ⇒ SpatialReference
constructor
A new instance of SpatialReference.
- #to_proj4 ⇒ Object
- #to_wkt(pretty = false) ⇒ Object
Constructor Details
#initialize(ptr) ⇒ SpatialReference
Returns a new instance of SpatialReference.
5 6 7 8 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 5 def initialize(ptr) @ptr = FFI::AutoPointer.new(ptr, self.class.method(:release)) @ptr.autorelease = false end |
Instance Attribute Details
#ptr ⇒ Object
Returns the value of attribute ptr.
3 4 5 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 3 def ptr @ptr end |
Class Method Details
.import(sr_import, format = 'epsg') ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 28 def self.import(sr_import, format = 'epsg') sr = OGR::Tools.cast_spatial_reference(FFIOGR.OSRNewSpatialReference(nil)) case format when 'epsg' sr.import_epsg sr_import when 'wkt' sr.import_wkt sr_import when 'proj4' sr.import_proj4 sr_import when 'esri' sr.import_esri sr_import else raise RuntimeError.new "Format: #{format} is not currently supported" end sr end |
.release(ptr) ⇒ Object
10 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 10 def self.release(ptr);end |
Instance Method Details
#==(other) ⇒ Object
94 95 96 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 94 def ==(other) self.to_wkt == other.to_wkt end |
#check_int(sr_import, format = 'epsg') ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 16 def check_int(sr_import, format = 'epsg') begin Integer(sr_import) rescue => ex raise RuntimeError.new "Format: #{format} requires an integer value" end end |
#check_string(sr_import, format) ⇒ Object
24 25 26 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 24 def check_string(sr_import, format) raise RuntimeError.new "Format: #{format} requires a string value" unless sr_import.instance_of? String end |
#find_transformation(out_sr) ⇒ Object
98 99 100 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 98 def find_transformation(out_sr) CoordinateTransformation.find_transformation self, out_sr end |
#free ⇒ Object
12 13 14 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 12 def free FFIOGR.OSRDestroySpatialReference(@ptr) end |
#import_epsg(epsg_code) ⇒ Object
60 61 62 63 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 60 def import_epsg(epsg_code) epsg_code = check_int epsg_code, 'epsg' FFIOGR.OSRImportFromEPSG @ptr, epsg_code end |
#import_esri(esri_string) ⇒ Object
65 66 67 68 69 70 71 72 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 65 def import_esri(esri_string) check_string esri_string, 'esri' esri_ptr = FFI::MemoryPointer.from_string esri_string esri_ptr_ptr = FFI::MemoryPointer.new :pointer, 2 esri_ptr_ptr[0].put_pointer 0, esri_ptr esri_ptr_ptr[1].put_pointer 0, nil FFIOGR.OSRImportFromESRI @ptr, esri_ptr_ptr end |
#import_proj4(proj4_string) ⇒ Object
55 56 57 58 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 55 def import_proj4(proj4_string) check_string proj4_string, 'proj4' FFIOGR.OSRImportFromProj4 @ptr, proj4_string end |
#import_wkt(wkt) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 47 def import_wkt(wkt) check_string wkt, 'wkt' wkt_ptr = FFI::MemoryPointer.from_string wkt wkt_ptr_ptr = FFI::MemoryPointer.new :pointer wkt_ptr_ptr.put_pointer 0, wkt_ptr FFIOGR.OSRImportFromWkt @ptr, wkt_ptr_ptr end |
#to_proj4 ⇒ Object
87 88 89 90 91 92 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 87 def to_proj4 ptr = FFI::MemoryPointer.new :pointer FFIOGR.OSRExportToProj4(@ptr, ptr) str_ptr = ptr.read_pointer return str_ptr.null? ? nil: str_ptr.read_string end |
#to_wkt(pretty = false) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/ffi-ogr/spatial_reference.rb', line 74 def to_wkt(pretty=false) ptr = FFI::MemoryPointer.new :pointer unless pretty FFIOGR.OSRExportToWkt(@ptr, ptr) else FFIOGR.OSRExportToPrettyWkt(@ptr, ptr, 4) end str_ptr = ptr.read_pointer return str_ptr.null? ? nil : str_ptr.read_string end |