module Proj::Api
Constants
- PJ_CARTESIAN_CS_2D_TYPE
@return [Symbol]
- PJ_CATEGORY
Object
category @return [Symbol]- PJ_COMPARISON_CRITERION
Comparison criteria @return [Symbol]
- PJ_COORDINATE_SYSTEM_TYPE
@return [Symbol]
- PJ_DIRECTION
Apply transformation to observation - in forward or inverse direction @return [Symbol]
- PJ_ELLIPSOIDAL_CS_2D_TYPE
@return [Symbol]
- PJ_ELLIPSOIDAL_CS_3D_TYPE
@return [Symbol]
- PJ_GUESSED_WKT_DIALECT
Guessed WKT “dialect”
@return [Symbol]
- PJ_LOG_LEVEL
@return [Symbol]
- PJ_PROJ_STRING_TYPE
@return [Symbol]
- PJ_TYPE
@return [Symbol]
- PJ_UNIT_TYPE
@return [Symbol]
- PJ_WKT_TYPE
@return [Symbol]
- PROJ_OPEN_ACCESS
@return [Symbol]
Public Class Methods
library_versions()
click to toggle source
List of knows PROJ library versions
@return [Array<String>]
# File lib/api/api.rb, line 11 def self.library_versions ["25", # 9.2 "9_1", # 9.1 "22", # 8.0 and 8.1 "19", # 7.x "17", # 6.1 *and* 6.2 "15", # 6.0 "14", # 5.2 "13", # 5.0 "12", # 4.9 "11"] # 4.9 end
linux_search_paths()
click to toggle source
Linux search paths for PROJ library
@return [Array<String>]
# File lib/api/api.rb, line 54 def self.linux_search_paths self.library_versions.map do |version| "libproj.so.#{version}" end end
load_api()
click to toggle source
Load API files based on PROJ version
@return [nil]
# File lib/api/api.rb, line 86 def self.load_api # First load the base 5.0 api so we can determine the Proj Version require_relative './api_5_0' Api.const_set('PROJ_VERSION', Gem::Version.new(self.proj_info[:version])) # Now load the rest of the apis based on the proj version versions = ['5.1.0', '5.2.0', '6.0.0', '6.1.0', '6.2.0', '6.3.0', '7.0.0', '7.1.0', '7.2.0', '8.0.0', '8.1.0', '8.2.0', '9.1.0', '9.2.0'] versions.each do |version| api_version = Gem::Version.new(version) if PROJ_VERSION >= api_version require_relative "./api_#{api_version.segments[0]}_#{api_version.segments[1]}" end end # Add in the experimental api require_relative "./api_experimental" end
load_library()
click to toggle source
Load PROJ library
@return [FFI::DynamicLibrary]
# File lib/api/api.rb, line 73 def self.load_library if ENV["PROJ_LIB_PATH"] ffi_lib ENV["PROJ_LIB_PATH"] else ffi_lib self.search_paths end ffi_libraries.first end
macos_search_paths()
click to toggle source
MacOS search paths for PROJ library
@return [Array<String>]
# File lib/api/api.rb, line 63 def self.macos_search_paths # On MacOS only support HomeBrew since the MacPort is unsupported and ancient (5.2). self.library_versions.map do |version| "libproj.#{version}.dylib" end end
search_paths()
click to toggle source
Search paths to use when looking for PROJ library
@return [Array<String>]
# File lib/api/api.rb, line 27 def self.search_paths result = case RbConfig::CONFIG['host_os'] when /mswin|msys|mingw|cygwin|bccwin|wince|emc/ self.windows_search_paths when /darwin|mac os/ self.macos_search_paths else self.linux_search_paths end # Try libproj as catch all result << 'libproj' result end
windows_search_paths()
click to toggle source
Windows search paths for PROJ library
@return [Array<String>]
# File lib/api/api.rb, line 45 def self.windows_search_paths self.library_versions.map do |version| ["libproj-#{version}", "libproj_#{version}"] end.flatten end