Class: Searcher

Inherits:
Object
  • Object
show all
Defined in:
lib/search_geometry_iowa/searcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tier, range, section) ⇒ Searcher

Returns a new instance of Searcher.



6
7
8
9
10
11
# File 'lib/search_geometry_iowa/searcher.rb', line 6

def initialize(tier, range, section)
  @tier = sanitize_str tier
  @range = sanitize_str range
  @section = sanitize_str section
  raise 'Invalid parameters' unless valid_params?
end

Instance Attribute Details

#rangeObject

Returns the value of attribute range.



4
5
6
# File 'lib/search_geometry_iowa/searcher.rb', line 4

def range
  @range
end

#sectionObject

Returns the value of attribute section.



4
5
6
# File 'lib/search_geometry_iowa/searcher.rb', line 4

def section
  @section
end

#tierObject

Returns the value of attribute tier.



4
5
6
# File 'lib/search_geometry_iowa/searcher.rb', line 4

def tier
  @tier
end

Instance Method Details

#call_url(url) ⇒ Object



42
43
44
# File 'lib/search_geometry_iowa/searcher.rb', line 42

def call_url(url)
  Net::HTTP.get(URI.parse(url))
end

#format_urlObject



35
36
37
38
39
40
# File 'lib/search_geometry_iowa/searcher.rb', line 35

def format_url
  url = "/geoserver/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=plss:plss"
  url = url + "&cql_filter=(township%20=%20%27#{@tier}%27"
  url = url + "%20AND%20range%20=%20%27#{@range}%27AND%20section%20=%20#{@section})"
  geo_server_url + url + "&outputFormat=text/javascript&srsName=EPSG:4326"
end

#geo_server_urlObject



17
18
19
# File 'lib/search_geometry_iowa/searcher.rb', line 17

def geo_server_url
  GEOSERVER[:url]
end

#get_responseObject



31
32
33
# File 'lib/search_geometry_iowa/searcher.rb', line 31

def get_response
  call_url(format_url)
end

#match_me(str, first_letter, last_letter) ⇒ Object



27
28
29
# File 'lib/search_geometry_iowa/searcher.rb', line 27

def match_me(str, first_letter, last_letter)
  str.match(/#{first_letter}[0-9]{1,2}(#{last_letter})/)
end

#sanitize_str(str) ⇒ Object



13
14
15
# File 'lib/search_geometry_iowa/searcher.rb', line 13

def sanitize_str(str)
  URI.escape str.to_s.upcase
end

#transform_to_multipolygon(response) ⇒ Object



47
48
49
50
51
# File 'lib/search_geometry_iowa/searcher.rb', line 47

def transform_to_multipolygon(response)
  response.gsub!(/(\[){3}(.*)(\]){3}/, "[#{response.match(/(\[){3}(.*)(\]){3}/)}]")
  response.gsub!(/Polygon/, 'MultiPolygon')
  response
end

#valid_params?Boolean

Returns:

  • (Boolean)


21
22
23
24
25
# File 'lib/search_geometry_iowa/searcher.rb', line 21

def valid_params?
  return false if @tier.nil? || @range.nil?
  return true if match_me(@tier, 'T', 'N|S') && match_me(@range, 'R', 'W|E')
  false
end