gb_mapfish_appserver 0.9.6 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MWY1NjE4Y2QyN2E4NzFmNDA0MzMzZDNkMTVmOWI3MjllMWY5OTQxNQ==
5
+ data.tar.gz: !binary |-
6
+ MmFmNDQ4ZGJjMjIxOTllOTEzZjk3NjY4ODE5NTY5OGEwMDZmYWU5NA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ OTM2NzRlNjE2M2UyMmIzMjBkMTJkMTRjZGUyYmExOGY2MmE1YTg2ZTM4NzY3
10
+ OTM3YTk2YTY3YjhmYWFmMjg4MWVjNTJhYTg3YzFjNTFhMGM1YTA2NGUyNjEx
11
+ MjFlNzIwNDljOGUxYzQwNDA1NjFlMmUzMmRlYWI0MDIzMmM0YWU=
12
+ data.tar.gz: !binary |-
13
+ ZjMxNWE3MjZkY2FiYTQ5NjFmMDExMmQ2NzMyNTVkNGQwNTRjYmYyNTg5YzEy
14
+ MjNlY2FkNjI4ZmU0NDdlYmNlYmM5ZTg3YjA0M2ZiYjNiZWQzMTdiNzY1MDc0
15
+ Y2JmNzMzNGFjZDE4MDBlYzRkZDc1Y2ZkZTY3MjNmZjY0ZTBlYTQ=
@@ -31,6 +31,9 @@ class TopicsController < ApplicationController
31
31
  end
32
32
 
33
33
  def query
34
+ # optional parameter (default = false) to return only the feature nearest to the center of the search geometry, if no custom layer query is used
35
+ nearest = params['nearest'] == 'true'
36
+
34
37
  @query_topics = ActiveSupport::JSON.decode(params[:infoQuery])['queryTopics']
35
38
  #e.g. [{"layers"=>"lk25,grenzen,gemeindegrenzen,seen,wald,haltestellen", "divCls"=>"legmain", "level"=>"main", "topic"=>"BASISKARTEZH"}, {"layers"=>"", "divCls"=>"legover", "level"=>"over", "topic"=>"AVParzOverlayZH"}]
36
39
  @query_topics.each do |query_topic|
@@ -38,15 +41,15 @@ class TopicsController < ApplicationController
38
41
  authorize! :show, topic
39
42
  query_topic['topicobj'] = topic
40
43
  if params['bbox']
41
- query_topic['results'] = topic.query(current_ability, query_topic, params['bbox'])
44
+ query_topic['results'] = topic.query(current_ability, query_topic, params['bbox'], nearest)
42
45
  elsif params['rect']
43
46
  x1, y1, x2, y2 = params['rect'].split(',').collect(&:to_f)
44
47
  rect = "POLYGON((#{x1} #{y1}, #{x1} #{y2}, #{x2} #{y2}, #{x2} #{y1} ,#{x1} #{y1}))"
45
- query_topic['results'] = topic.query(current_ability, query_topic, rect)
48
+ query_topic['results'] = topic.query(current_ability, query_topic, rect, nearest)
46
49
  elsif params['circle']
47
- query_topic['results'] = topic.query(current_ability, query_topic, params['circle'])
50
+ query_topic['results'] = topic.query(current_ability, query_topic, params['circle'], nearest)
48
51
  elsif params['poly']
49
- query_topic['results'] = topic.query(current_ability, query_topic, params['poly'])
52
+ query_topic['results'] = topic.query(current_ability, query_topic, params['poly'], nearest)
50
53
  else
51
54
  # problem
52
55
  end
@@ -38,24 +38,34 @@ class GeoModel < ActiveRecord::Base
38
38
  "ST_Area(#{table_name}.#{geometry_column.name}) AS area"
39
39
  end
40
40
 
41
- def self.identify_filter(searchgeo, radius)
41
+ def self.identify_filter(searchgeo, radius, nearest=false)
42
+ filter = scoped
42
43
  if searchgeo[0..3] == "POLY"
43
44
  logger.debug "*** POLY-query: #{searchgeo} ***"
44
45
  polygon = "ST_GeomFromText('#{searchgeo}', #{srid})"
45
- scoped.where("ST_DWithin(#{table_name}.#{geometry_column_name}, #{polygon}, #{radius})")
46
+ filter = filter.where("ST_DWithin(#{table_name}.#{geometry_column_name}, #{polygon}, #{radius})")
47
+ center = "ST_Centroid(#{polygon})"
46
48
  else
47
49
  if searchgeo.split(',').length == 3
48
50
  logger.debug "*** CIRCLE-query: #{searchgeo} ***"
49
51
  x1, y1, r = searchgeo.split(',').collect(&:to_f)
50
52
  center = "ST_GeomFromText('POINT(#{x1} #{y1})', #{srid})"
51
- scoped.where("ST_DWithin(#{table_name}.#{geometry_column_name}, #{center}, #{r})")
53
+ filter = filter.where("ST_DWithin(#{table_name}.#{geometry_column_name}, #{center}, #{r})")
52
54
  else
53
55
  logger.debug "*** BBOX-query: #{searchgeo} ***"
54
56
  x1, y1, x2, y2 = searchgeo.split(',').collect(&:to_f)
55
57
  center = "ST_GeomFromText('POINT(#{x1+(x2-x1)/2} #{y1+(y2-y1)/2})', #{srid})"
56
- scoped.where("ST_DWithin(#{table_name}.#{geometry_column_name}, #{center}, #{radius})")
58
+ filter = filter.where("ST_DWithin(#{table_name}.#{geometry_column_name}, #{center}, #{radius})")
57
59
  end
58
60
  end
61
+
62
+ if nearest
63
+ logger.debug "*** query nearest ***"
64
+ # get the feature nearest to the center of the search geometry
65
+ filter = filter.order("ST_Distance(#{table_name}.#{geometry_column_name}, #{center})").limit(1)
66
+ end
67
+
68
+ filter
59
69
  end
60
70
 
61
71
  #Custom identify query
@@ -118,7 +118,7 @@ EOS
118
118
  allowed_fields
119
119
  end
120
120
 
121
- def query(ability, query_topic, searchgeo)
121
+ def query(ability, query_topic, searchgeo, nearest=false)
122
122
  if table =~ /^https?:/
123
123
  features = get_feature_info(searchgeo)
124
124
  [self, features, searchgeo.split(',')]
@@ -141,7 +141,7 @@ EOS
141
141
  feature_class.identify_query(searchgeo, searchdistance)
142
142
  else
143
143
  logger.debug "*** Identify on layer #{name} with query fields #{query_fields(ability)} at #{searchgeo.inspect}"
144
- feature_class.identify_filter(searchgeo, searchdistance).select(query_fields(ability)).all
144
+ feature_class.identify_filter(searchgeo, searchdistance, nearest).select(query_fields(ability)).all
145
145
  end
146
146
  logger.debug "Number of features: #{features.size}"
147
147
  # calculate bbox of all features
@@ -179,12 +179,12 @@ class Topic < ActiveRecord::Base
179
179
  perms.collect(&:role)
180
180
  end
181
181
 
182
- def query(ability, query_topic, searchbbox)
182
+ def query(ability, query_topic, searchbbox, nearest=false)
183
183
  active_layers = query_topic['layers'].split(',')
184
184
  qlayers = query_layers(ability, active_layers)
185
185
  results = []
186
186
  qlayers.each do |layer|
187
- result = layer.query(ability, query_topic, searchbbox)
187
+ result = layer.query(ability, query_topic, searchbbox, nearest)
188
188
  results << result unless result.nil?
189
189
  end
190
190
  results
@@ -1,3 +1,3 @@
1
1
  module GbMapfishAppserver
2
- VERSION = "0.9.6"
2
+ VERSION = "0.9.7"
3
3
  end
metadata CHANGED
@@ -1,170 +1,211 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gb_mapfish_appserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
5
- prerelease:
4
+ version: 0.9.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Pirmin Kalberer
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-08-27 00:00:00.000000000 Z
11
+ date: 2014-09-17 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
- requirement: &4201140 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.2.13
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *4201140
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.13
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: json
27
- requirement: &4200640 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ! '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *4200640
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: acts_as_tree
38
- requirement: &4200020 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - =
45
+ - - '='
42
46
  - !ruby/object:Gem::Version
43
47
  version: 0.2.0
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *4200020
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.2.0
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: devise
49
- requirement: &4199360 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
54
61
  version: 2.2.0
55
62
  type: :runtime
56
63
  prerelease: false
57
- version_requirements: *4199360
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.2.0
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: cancan
60
- requirement: &4198860 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - =
73
+ - - '='
64
74
  - !ruby/object:Gem::Version
65
75
  version: 1.6.8
66
76
  type: :runtime
67
77
  prerelease: false
68
- version_requirements: *4198860
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.6.8
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rails_admin
71
- requirement: &4198360 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
87
  - - ~>
75
88
  - !ruby/object:Gem::Version
76
89
  version: 0.4.9
77
90
  type: :runtime
78
91
  prerelease: false
79
- version_requirements: *4198360
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.9
80
97
  - !ruby/object:Gem::Dependency
81
98
  name: fastercsv
82
- requirement: &4197860 !ruby/object:Gem::Requirement
83
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
84
100
  requirements:
85
101
  - - ! '>='
86
102
  - !ruby/object:Gem::Version
87
103
  version: '0'
88
104
  type: :runtime
89
105
  prerelease: false
90
- version_requirements: *4197860
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: sass
93
- requirement: &4197280 !ruby/object:Gem::Requirement
94
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
95
114
  requirements:
96
115
  - - ~>
97
116
  - !ruby/object:Gem::Version
98
117
  version: 3.2.12
99
118
  type: :runtime
100
119
  prerelease: false
101
- version_requirements: *4197280
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: 3.2.12
102
125
  - !ruby/object:Gem::Dependency
103
126
  name: GeoRuby
104
- requirement: &4196660 !ruby/object:Gem::Requirement
105
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
106
128
  requirements:
107
129
  - - ! '>='
108
130
  - !ruby/object:Gem::Version
109
131
  version: 0.1.4
110
132
  type: :runtime
111
133
  prerelease: false
112
- version_requirements: *4196660
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: 0.1.4
113
139
  - !ruby/object:Gem::Dependency
114
140
  name: rgeo
115
- requirement: &4196180 !ruby/object:Gem::Requirement
116
- none: false
141
+ requirement: !ruby/object:Gem::Requirement
117
142
  requirements:
118
143
  - - ~>
119
144
  - !ruby/object:Gem::Version
120
145
  version: 0.3.20
121
146
  type: :runtime
122
147
  prerelease: false
123
- version_requirements: *4196180
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: 0.3.20
124
153
  - !ruby/object:Gem::Dependency
125
154
  name: rgeo-geojson
126
- requirement: &4211880 !ruby/object:Gem::Requirement
127
- none: false
155
+ requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
157
  - - ~>
130
158
  - !ruby/object:Gem::Version
131
159
  version: 0.2.3
132
160
  type: :runtime
133
161
  prerelease: false
134
- version_requirements: *4211880
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: 0.2.3
135
167
  - !ruby/object:Gem::Dependency
136
168
  name: hpricot
137
- requirement: &4211280 !ruby/object:Gem::Requirement
138
- none: false
169
+ requirement: !ruby/object:Gem::Requirement
139
170
  requirements:
140
171
  - - ! '>='
141
172
  - !ruby/object:Gem::Version
142
173
  version: '0'
143
174
  type: :runtime
144
175
  prerelease: false
145
- version_requirements: *4211280
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
146
181
  - !ruby/object:Gem::Dependency
147
182
  name: pg
148
- requirement: &4210640 !ruby/object:Gem::Requirement
149
- none: false
183
+ requirement: !ruby/object:Gem::Requirement
150
184
  requirements:
151
185
  - - ~>
152
186
  - !ruby/object:Gem::Version
153
187
  version: 0.14.0
154
188
  type: :runtime
155
189
  prerelease: false
156
- version_requirements: *4210640
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ~>
193
+ - !ruby/object:Gem::Version
194
+ version: 0.14.0
157
195
  - !ruby/object:Gem::Dependency
158
196
  name: activerecord-postgis-adapter
159
- requirement: &4210120 !ruby/object:Gem::Requirement
160
- none: false
197
+ requirement: !ruby/object:Gem::Requirement
161
198
  requirements:
162
- - - =
199
+ - - '='
163
200
  - !ruby/object:Gem::Version
164
201
  version: 0.4.1
165
202
  type: :runtime
166
203
  prerelease: false
167
- version_requirements: *4210120
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '='
207
+ - !ruby/object:Gem::Version
208
+ version: 0.4.1
168
209
  description: Mapfish Appserver is a framework for web mapping applications using OGC
169
210
  standards and the Mapfish protocol.
170
211
  email:
@@ -421,27 +462,26 @@ files:
421
462
  - test/test_helper.rb
422
463
  homepage: http://mapfish-appserver.github.io/
423
464
  licenses: []
465
+ metadata: {}
424
466
  post_install_message:
425
467
  rdoc_options: []
426
468
  require_paths:
427
469
  - lib
428
470
  required_ruby_version: !ruby/object:Gem::Requirement
429
- none: false
430
471
  requirements:
431
472
  - - ! '>='
432
473
  - !ruby/object:Gem::Version
433
474
  version: '0'
434
475
  required_rubygems_version: !ruby/object:Gem::Requirement
435
- none: false
436
476
  requirements:
437
477
  - - ! '>='
438
478
  - !ruby/object:Gem::Version
439
479
  version: '0'
440
480
  requirements: []
441
481
  rubyforge_project:
442
- rubygems_version: 1.8.11
482
+ rubygems_version: 2.2.2
443
483
  signing_key:
444
- specification_version: 3
484
+ specification_version: 4
445
485
  summary: Mapfish application server.
446
486
  test_files:
447
487
  - test/dummy/README.rdoc