gb_mapfish_appserver 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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