aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Florisson2013-06-27 11:45:12 +0200
committerMarc Florisson2013-06-27 11:45:12 +0200
commiteaf807102b191381c06bc801a2047b270056e65d (patch)
treeb07b8df507a5a3cb0a9654bd1f71bb608227af68
parent6d74cc620d0ed64036e7fd600cfc744ff9dd3ffc (diff)
downloadchouette-core-eaf807102b191381c06bc801a2047b270056e65d.tar.bz2
prepare kml exports
-rw-r--r--app/controllers/api/kml/lines_controller.rb16
-rw-r--r--app/controllers/api/kml/routes_controller.rb21
-rw-r--r--app/controllers/api/kml/stop_areas_controller.rb30
-rw-r--r--app/views/api/kml/lines/index.kml.erb27
-rw-r--r--app/views/api/kml/lines/show.kml.erb29
-rw-r--r--app/views/api/kml/routes/index.kml.erb25
-rw-r--r--app/views/api/kml/routes/show.kml.erb27
-rw-r--r--app/views/api/kml/stop_areas/_stop_area.kml.erb21
-rw-r--r--app/views/api/kml/stop_areas/index.kml.erb22
-rw-r--r--config/routes.rb10
10 files changed, 228 insertions, 0 deletions
diff --git a/app/controllers/api/kml/lines_controller.rb b/app/controllers/api/kml/lines_controller.rb
new file mode 100644
index 000000000..30935402b
--- /dev/null
+++ b/app/controllers/api/kml/lines_controller.rb
@@ -0,0 +1,16 @@
+module Api
+ module Kml
+ class LinesController < ChouetteController
+ respond_to :kml
+
+ defaults :resource_class => Chouette::Line
+
+ protected
+
+ def collection
+ @lines ||= ( @referential ? @referential.lines : [])
+ end
+ end
+ end
+end
+
diff --git a/app/controllers/api/kml/routes_controller.rb b/app/controllers/api/kml/routes_controller.rb
new file mode 100644
index 000000000..0b0a56eb0
--- /dev/null
+++ b/app/controllers/api/kml/routes_controller.rb
@@ -0,0 +1,21 @@
+module Api
+ module Kml
+ class RoutesController < ChouetteController
+ respond_to :kml
+
+ defaults :resource_class => Chouette::Route
+
+ belongs_to :referential do
+ belongs_to :line, :parent_class => Chouette::Line, :optional => true, :polymorphic => true
+ end
+
+ protected
+
+ alias_method :route, :resource
+
+ def collection
+ @routes ||= parent.routes
+ end
+ end
+ end
+end
diff --git a/app/controllers/api/kml/stop_areas_controller.rb b/app/controllers/api/kml/stop_areas_controller.rb
new file mode 100644
index 000000000..5663d7bad
--- /dev/null
+++ b/app/controllers/api/kml/stop_areas_controller.rb
@@ -0,0 +1,30 @@
+module Api
+ module Kml
+ class StopAreasController < ChouetteController
+ respond_to :kml
+
+ defaults :resource_class => Chouette::StopArea
+
+ belongs_to :referential
+
+ protected
+
+ def collection
+ @commercials = []
+ @places = []
+ @physicals = []
+ referential.stop_areas.select {|sa| sa.longitude && sa.latitude}.each do |sa|
+ case sa.area_type
+ when "StopPlace"
+ @places << sa
+ when "CommercialStopPoint"
+ @commercials << sa
+ when "BoardingPosition", "Quay"
+ @physicals << sa
+ end
+ end
+ end
+ end
+ end
+end
+
diff --git a/app/views/api/kml/lines/index.kml.erb b/app/views/api/kml/lines/index.kml.erb
new file mode 100644
index 000000000..2df104296
--- /dev/null
+++ b/app/views/api/kml/lines/index.kml.erb
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <% @lines.each do |line| %>
+ <Placemark id="<%= line.objectid %>:StopAreas" >
+ <%= line.geometry_presenter.stop_areas_geometry.kml_representation.html_safe %>
+ </Placemark>
+ <Placemark id="<%= line.objectid %>" >
+ <objectid><%= line.objectid %></objectid>
+ <object_version><%= line.object_version %></object_version>
+ <creation_time><%= line.creation_time %></creation_time>
+ <creator_id><%= line.creator_id %></creator_id>
+ <name><%= line.name %></name>
+ <number><%= line.number %></number>
+ <published_name><%= line.published_name %></published_name>
+ <transport_mode_name><%= line.transport_mode_name %></transport_mode_name>
+ <registration_number><%= line.registration_number %></registration_number>
+ <comment><%= line.comment %></comment>
+ <mobility_restricted_suitability><%= line.mobility_restricted_suitability %></mobility_restricted_suitability>
+ <int_user_needs><%= line.int_user_needs %></int_user_needs>
+
+ <%= line.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/lines/show.kml.erb b/app/views/api/kml/lines/show.kml.erb
new file mode 100644
index 000000000..936801266
--- /dev/null
+++ b/app/views/api/kml/lines/show.kml.erb
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <% @line.commercial_stop_areas.each do |stop_area| %>
+ <Placemark id="<%= stop_area.objectid %>" >
+ <name><%= stop_area.name %></name>
+ <stop_area_type><%= stop_area.area_type.underscore %></stop_area_type>
+ <%= (stop_area.position or stop_area.default_position).kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ <Placemark id="<%= @line.objectid %>" >
+ <objectid><%= @line.objectid %></objectid>
+ <object_version><%= @line.object_version %></object_version>
+ <creation_time><%= @line.creation_time %></creation_time>
+ <creator_id><%= @line.creator_id %></creator_id>
+ <name><%= @line.name %></name>
+ <number><%= @line.number %></number>
+ <published_name><%= @line.published_name %></published_name>
+ <transport_mode_name><%= @line.transport_mode_name %></transport_mode_name>
+ <registration_number><%= @line.registration_number %></registration_number>
+ <comment><%= @line.comment %></comment>
+ <mobility_restricted_suitability><%= @line.mobility_restricted_suitability %></mobility_restricted_suitability>
+ <int_user_needs><%= @line.int_user_needs %></int_user_needs>
+
+ <%= @line.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/routes/index.kml.erb b/app/views/api/kml/routes/index.kml.erb
new file mode 100644
index 000000000..a1521f254
--- /dev/null
+++ b/app/views/api/kml/routes/index.kml.erb
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <% @routes.each do |route| %>
+ <Placemark id="<%= route.objectid %>:StopAreas" >
+ <%= route.geometry_presenter.stop_areas_geometry.kml_representation.html_safe %>
+ </Placemark>
+ <Placemark id="<%= route.objectid %>" >
+ <objectid><%= route.objectid %></objectid>
+ <object_version><%= route.object_version %></object_version>
+ <creation_time><%= route.creation_time %></creation_time>
+ <creator_id><%= route.creator_id %></creator_id>
+ <name><%= route.name %></name>
+ <direction_code><%= route.direction_code %></direction_code>
+ <comment><%= route.comment %></comment>
+ <published_name><%= route.published_name %></published_name>
+ <number><%= route.number %></number>
+ <direction><%= route.direction %></direction>
+ <wayback><%= route.wayback %></wayback>
+ <%= route.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/routes/show.kml.erb b/app/views/api/kml/routes/show.kml.erb
new file mode 100644
index 000000000..0b9bf7629
--- /dev/null
+++ b/app/views/api/kml/routes/show.kml.erb
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <% @route.stop_areas.each do |stop_area| %>
+ <Placemark id="<%= stop_area.objectid %>" >
+ <name><%= stop_area.name %></name>
+ <stop_area_type><%= stop_area.area_type.underscore %></stop_area_type>
+ <%= (stop_area.position or stop_area.default_position).kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ <Placemark id="<%= @route.objectid %>" >
+ <objectid><%= @route.objectid %></objectid>
+ <object_version><%= @route.object_version %></object_version>
+ <creation_time><%= @route.creation_time %></creation_time>
+ <creator_id><%= @route.creator_id %></creator_id>
+ <name><%= @route.name %></name>
+ <direction_code><%= @route.direction_code %></direction_code>
+ <comment><%= @route.comment %></comment>
+ <published_name><%= @route.published_name %></published_name>
+ <number><%= @route.number %></number>
+ <direction><%= @route.direction %></direction>
+ <wayback><%= @route.wayback %></wayback>
+ <%= @route.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/stop_areas/_stop_area.kml.erb b/app/views/api/kml/stop_areas/_stop_area.kml.erb
new file mode 100644
index 000000000..1383fbf66
--- /dev/null
+++ b/app/views/api/kml/stop_areas/_stop_area.kml.erb
@@ -0,0 +1,21 @@
+ <objectid><%= stop_area.objectid.to_s.html_safe %></objectid>
+ <object_version><%= stop_area.object_version.to_s.html_safe %></object_version>
+ <creation_time><%= stop_area.creation_time.to_s.html_safe %></creation_time>
+ <creator_id><%= stop_area.creator_id.to_s.html_safe %></creator_id>
+ <name><%= stop_area.name.to_s.html_safe %></name>
+ <comment><%= stop_area.comment.to_s.html_safe %></comment>
+ <area_type><%= stop_area.area_type.to_s.html_safe %></area_type>
+ <registration_number><%= stop_area.registration_number.to_s.html_safe %></registration_number>
+ <nearest_topic_name><%= stop_area.nearest_topic_name.to_s.html_safe %></nearest_topic_name>
+ <fare_code><%= stop_area.fare_code.to_s.html_safe %></fare_code>
+ <longitude><%= stop_area.longitude.to_s.html_safe %></longitude>
+ <latitude><%= stop_area.latitude.to_s.html_safe %></latitude>
+ <long_lat_type><%= stop_area.long_lat_type.to_s.html_safe %></long_lat_type>
+ <x><%= stop_area.x.to_s.html_safe %></x>
+ <y><%= stop_area.y.to_s.html_safe %></y>
+ <projection_type><%= stop_area.projection_type.to_s.html_safe %></projection_type>
+ <country_code><%= stop_area.country_code.to_s.html_safe %></country_code>
+ <street_name><%= stop_area.street_name.to_s.html_safe %></street_name>
+
+ <%= stop_area.geometry_presenter.geometry.kml_representation.html_safe %>
+
diff --git a/app/views/api/kml/stop_areas/index.kml.erb b/app/views/api/kml/stop_areas/index.kml.erb
new file mode 100644
index 000000000..b4ce5a215
--- /dev/null
+++ b/app/views/api/kml/stop_areas/index.kml.erb
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+
+ <Document>
+ <% @places.each do |stop_area| %>
+ <Placemark id="<%= stop_area.objectid %>:Places" >
+ <%= render :partial => "stop_area", :locals => { :stop_area => stop_area} %>
+ </Placemark>
+ <% end %>
+ <% @commercials.each do |stop_area| %>
+ <Placemark id="<%= stop_area.objectid %>:Commercials" >
+ <%= render :partial => "stop_area", :locals => { :stop_area => stop_area} %>
+ </Placemark>
+ <% end %>
+ <% @physicals.each do |stop_area| %>
+ <Placemark id="<%= stop_area.objectid %>:Physicals" >
+ <%= render :partial => "stop_area", :locals => { :stop_area => stop_area} %>
+ </Placemark>
+ <% end %>
+ </Document>
+</kml>
+
diff --git a/config/routes.rb b/config/routes.rb
index 238217099..a424bd8de 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -6,6 +6,16 @@ ChouetteIhm::Application.routes.draw do
devise_for :users
namespace :api do
+ namespace :kml do
+ resources :referentials do
+ resources :stop_areas, :only => [:index, :show]
+ resources :lines, :only => [:index, :show] do
+ resources :routes, :only => [:index, :show]
+ end
+ end
+ end
+ end
+ namespace :api do
namespace :v1 do
resources :time_tables, :only => [:index, :show]
resources :connection_links, :only => [:index, :show]