Class: Proj::Context
- Inherits:
-
Object
- Object
- Proj::Context
- Extended by:
- Gem::Deprecate
- Defined in:
- lib/proj/context.rb
Overview
Proj 4.8 introduced the concept of a thread context object to support multi-threaded programs. The bindings automatically create one context per thread (its stored in local thread storage).
Instance Attribute Summary collapse
-
#database ⇒ Object
readonly
Returns the value of attribute database.
Class Method Summary collapse
-
.current ⇒ Context
The context for the current thread.
-
.default ⇒ Context
Returns the default Proj context.
Instance Method Summary collapse
-
#ca_bundle_path=(path) ⇒ nil
Sets the CA Bundle path which will be used by PROJ when curl and PROJ_NETWORK are enabled.
-
#cache ⇒ GridCache
Returns the cache used to store grid files locally.
-
#database_path ⇒ Object
— Deprecated ——-.
-
#database_path=(value) ⇒ Object
Sets the path to the Proj database.
-
#errno ⇒ Object
Returns the current error-state of the context.
-
#initialize ⇒ Context
constructor
A new instance of Context.
- #initialize_copy(original) ⇒ Object
-
#log_level ⇒ PJ_LOG_LEVEL
Gets the current log level.
-
#log_level=(value) ⇒ nil
Sets the current log level.
-
#network_enabled=(value) ⇒ Object
Enable or disable network access for downloading grid files.
-
#network_enabled? ⇒ Boolean
Returns if network access is enabled allowing Grid files to be downloaded.
-
#search_paths=(paths) ⇒ Object
Sets the paths that Proj will search when opening one of its resource files such as the proj.db database, grids, etc.
-
#set_file_api(file_api_klass) ⇒ Object
Installs a new FileApi.
-
#set_log_function(pointer = nil, &proc) ⇒ nil
Sets a custom log function.
-
#set_network_api(network_api_klass) ⇒ Object
Installs a new NetworkApi.
- #to_ptr ⇒ Object
-
#url ⇒ String
Returns the URL endpoint to query for remote grids.
-
#url=(value) ⇒ Object
Sets the URL endpoint to query for remote grids.
-
#use_proj4_init_rules ⇒ Boolean
Gets if proj4 init rules are being used (i.e., support +init parameters).
-
#use_proj4_init_rules=(value) ⇒ nil
Sets if proj4 init rules should be used.
-
#user_directory(create = false) ⇒ String
Returns the user directory used to save grid files.
-
#wkt_dialect(wkt) ⇒ PJ_GUESSED_WKT_DIALECT
Guess the “dialect” of the specified WKT string.
Constructor Details
Instance Attribute Details
#database ⇒ Object (readonly)
Returns the value of attribute database.
5 6 7 |
# File 'lib/proj/context.rb', line 5 def database @database end |
Class Method Details
.current ⇒ Context
The context for the current thread. If a context does not exist a new one is created
22 23 24 |
# File 'lib/proj/context.rb', line 22 def self.current Thread.current[:proj_context] ||= Context.new end |
.default ⇒ Context
Returns the default Proj context. This context must only be used in the main thread In general it is better to create new contexts
11 12 13 14 15 16 |
# File 'lib/proj/context.rb', line 11 def self.default result = Context.allocate # The default Proj Context is represented by a null pointer result.instance_variable_set(:@pointer, FFI::Pointer::NULL) result end |
Instance Method Details
#ca_bundle_path=(path) ⇒ nil
Sets the CA Bundle path which will be used by PROJ when curl and PROJ_NETWORK are enabled.
129 130 131 |
# File 'lib/proj/context.rb', line 129 def ca_bundle_path=(path) Api.proj_context_set_ca_bundle_path(self, path.encode(:utf8)) end |
#cache ⇒ GridCache
Returns the cache used to store grid files locally
136 137 138 |
# File 'lib/proj/context.rb', line 136 def cache GridCache.new(self) end |
#database_path ⇒ Object
— Deprecated ——-
237 238 239 |
# File 'lib/proj/context.rb', line 237 def database_path self.database.path end |
#database_path=(value) ⇒ Object
Sets the path to the Proj database
242 243 244 |
# File 'lib/proj/context.rb', line 242 def database_path=(value) self.database.path = value end |
#errno ⇒ Object
Returns the current error-state of the context. An non-zero error codes indicates an error.
See proj.org/development/reference/functions.html#c.proj_context_errno proj_context_errno
return [Integer]
60 61 62 |
# File 'lib/proj/context.rb', line 60 def errno Api.proj_context_errno(self) end |
#initialize_copy(original) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/proj/context.rb', line 40 def initialize_copy(original) ObjectSpace.undefine_finalizer(self) super @pointer = Api.proj_context_clone(original) @database = Database.new(self) ObjectSpace.define_finalizer(self, self.class.finalize(@pointer)) end |
#log_level ⇒ PJ_LOG_LEVEL
Gets the current log level
82 83 84 |
# File 'lib/proj/context.rb', line 82 def log_level Api.proj_log_level(self, :PJ_LOG_TELL) end |
#log_level=(value) ⇒ nil
Sets the current log level
90 91 92 |
# File 'lib/proj/context.rb', line 90 def log_level=(value) Api.proj_log_level(self, value) end |
#network_enabled=(value) ⇒ Object
Enable or disable network access for downloading grid files
155 156 157 |
# File 'lib/proj/context.rb', line 155 def network_enabled=(value) Api.proj_context_set_enable_network(self, value ? 1 : 0) end |
#network_enabled? ⇒ Boolean
Returns if network access is enabled allowing Grid files to be downloaded
145 146 147 148 |
# File 'lib/proj/context.rb', line 145 def network_enabled? result = Api.proj_context_is_network_enabled(self) result == 1 ? true : false end |
#search_paths=(paths) ⇒ Object
Sets the paths that Proj will search when opening one of its resource files such as the proj.db database, grids, etc.
If set on the default context, they will be inherited by contexts created later.
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/proj/context.rb', line 194 def search_paths=(paths) # Convert paths to C chars paths_ptr = paths.map do |path| FFI::MemoryPointer.from_string(path) end pointer = FFI::MemoryPointer.new(:pointer, paths.size) pointer.write_array_of_pointer(paths_ptr) if Api.method_defined?(:proj_context_set_search_paths) Api.proj_context_set_search_paths(self, paths.size, pointer) elsif Api.method_defined?(:pj_set_searchpath) Api.pj_set_searchpath(paths.size, pointer) end end |
#set_file_api(file_api_klass) ⇒ Object
Installs a new FileApi
213 214 215 216 217 218 219 220 221 |
# File 'lib/proj/context.rb', line 213 def set_file_api(file_api_klass) unless file_api_klass.kind_of?(Class) raise("#{file_api_klass} must be a class whose initializer has single argument which is a context") end # There is no API to "uninstall" a FileApi. Thus it needs to stay alive # until the context is GCed @file_api = file_api_klass.new(self) end |
#set_log_function(pointer = nil, &proc) ⇒ nil
Sets a custom log function
75 76 77 |
# File 'lib/proj/context.rb', line 75 def set_log_function(pointer = nil, &proc) Api.proj_log_func(self, pointer, proc) end |
#set_network_api(network_api_klass) ⇒ Object
Installs a new NetworkApi
226 227 228 229 230 231 232 233 234 |
# File 'lib/proj/context.rb', line 226 def set_network_api(network_api_klass) unless network_api_klass.kind_of?(Class) raise("#{network_api_klass} must be a class whose initializer has single argument which is a context") end # There is no API to "uninstall" a FileApi. Thus it needs to stay alive # until the context is GCed @network_api = network_api_klass.new(self) end |
#to_ptr ⇒ Object
51 52 53 |
# File 'lib/proj/context.rb', line 51 def to_ptr @pointer end |
#url ⇒ String
Returns the URL endpoint to query for remote grids
164 165 166 |
# File 'lib/proj/context.rb', line 164 def url Api.proj_context_get_url_endpoint(self) end |
#url=(value) ⇒ Object
Sets the URL endpoint to query for remote grids. This overrides the default endpoint in the PROJ configuration file or with the PROJ_NETWORK_ENDPOINT environment variable.
173 174 175 |
# File 'lib/proj/context.rb', line 173 def url=(value) Api.proj_context_set_url_endpoint(self, value) end |
#use_proj4_init_rules ⇒ Boolean
Gets if proj4 init rules are being used (i.e., support +init parameters)
97 98 99 100 |
# File 'lib/proj/context.rb', line 97 def use_proj4_init_rules result = Api.proj_context_get_use_proj4_init_rules(self, 0) result == 1 ? true : false end |
#use_proj4_init_rules=(value) ⇒ nil
Sets if proj4 init rules should be used
107 108 109 |
# File 'lib/proj/context.rb', line 107 def use_proj4_init_rules=(value) Api.proj_context_use_proj4_init_rules(self, value ? 1 : 0) end |
#user_directory(create = false) ⇒ String
Returns the user directory used to save grid files.
184 185 186 |
# File 'lib/proj/context.rb', line 184 def user_directory(create = false) Api.proj_context_get_user_writable_directory(self, create ? 1 : 0) end |
#wkt_dialect(wkt) ⇒ PJ_GUESSED_WKT_DIALECT
Guess the “dialect” of the specified WKT string
118 119 120 |
# File 'lib/proj/context.rb', line 118 def wkt_dialect(wkt) Api.proj_context_guess_wkt_dialect(self, wkt) end |