Skip to content
This repository has been archived by the owner on Jun 16, 2020. It is now read-only.

mapfish/mapfish-archive-rails-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

056a627 · May 3, 2016

History

21 Commits
Jul 7, 2011
Sep 23, 2009
Jun 18, 2010
Jul 7, 2011
Sep 23, 2009
May 3, 2016
Jun 18, 2010
Jul 7, 2011
Jun 18, 2010
Sep 23, 2009
Jul 7, 2011
Sep 23, 2009

Repository files navigation

Mapfish server plugin for Ruby on Rails

/!\ This project is deprecated. See http://mapfish.org or http://mapfish.github.io/mapfish-website.

This HowTo describes step by step how to use MapFish Server Framework to set up a MapFish project. A MapFish project defines Web Services on which MapFish Client components can rely. See here for a description of the interfaces provided by MapFish Web Services.

The Mapfish server for Ruby is implemented as a plugin for the Ruby on Rails framework.

A sample application is available at GitHub.

Create a MapFish project

Create a new Rails project:

    rails new MyMapFishProject --database=postgresql
    cd MyMapFishProject

Rails 3: Add the mapfish plugin to your Gemfile:

  gem 'mapfish'

Then from your project’s RAILS_ROOT, run:

  bundle install

Rails 2: Add the mapfish plugin to your config/environment.rb:

  config.gem 'mapfish'

Then from your project’s RAILS_ROOT, run:

  rake gems:install

It is also possible to install mapfish as a plugin:

  script/plugin install http://www.mapfish.org/svn/mapfish/implementations/rails-plugin/mapfish/trunk

Install the latest version of the Mapfish client libraries:

  rake mapfish:install_client

Set up the PostGIS database

If you don't have PostGIS database template yet, create one:

  sudo su - postgres
  createdb -E UTF8 template_postgis # Create the template spatial database.
  createlang -d template_postgis plpgsql # Adding PLPGSQL language support.
  psql -d template_postgis -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
  psql -d template_postgis -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql
  cat <<EOS | psql -d template_postgis
  UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template_postgis';
  REVOKE ALL ON SCHEMA public FROM public;
  GRANT USAGE ON SCHEMA public TO public;
  GRANT ALL ON SCHEMA public TO postgres;
  GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.geometry_columns TO PUBLIC;
  GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.spatial_ref_sys TO PUBLIC;
  VACUUM FULL FREEZE;
  EOS

Change the connection properties in config/database.yml. Add a line template: template_postgis for each environment.

Create the development database, if it does not exist:

  rake db:create

Set up layers

You now need to create layers. In effect, a layer corresponds to a PostGIS table.

Create a resource (model and controller):

  rails generate mapfish:resource WeatherStation name:string geom:point --skip-timestamps --skip-fixture
  rake db:migrate

Import some data:

  rails runner "Geonames::Weather.weather(:north => 44.1, :south => -9.9, :east => -22.4, :west => 55.2).each { |st| WeatherStation.create(:name => st.stationName, :geom => Point.from_x_y(st.lng, st.lat)) }"

(needs lib/geonames.rb from http://github.com/pka/map_layers/raw/master/lib/geonames.rb)

Create a resource for an existing table:

  rails generate mapfish:resource Country --skip-migration --skip-fixture

Insert table name and custom id in app/models/country.rb:

  set_table_name "world_factbk_simplified"
  set_primary_key "gid"

Starting the web server

You should be all set now. Try starting the web server:

  rails server

and checkout http://localhost:3000/countries?maxfeatures=10

Your browser should be displaying a nice GeoJSON object!

You can now go back to your webpage and configure MapFish widgets to access your layer through the URL http://localhost:3000/countries.

For running in production mode you should build and install the compressed runtime libraries:

   rake mapfish:build_scripts
   rake mapfish:copy_scripts

The development libraries in public/mfbase are not needed in a production deployment and the CSS and Javascript files can be included from public/javascripts:

   <link rel="stylesheet" type="text/css" href="javascripts/ext/resources/css/ext-all.css" />
   <link rel="stylesheet" type="text/css" href="javascripts/mapfish/mapfish.css" />

   <script type="text/javascript" src="javascripts/ext/adapter/ext/ext-base.js"></script>
   <script type="text/javascript" src="javascripts/ext/ext-all.js"></script>
   <script type="text/javascript" src="javascripts/mapfish/MapFish.js"></script>

Using the print module

The Rails MapFish plugin can generate a controller for the MapFish print protocol <http://trac.mapfish.org/trac/mapfish/wiki/PrintModuleDoc#Protocol>, to produce PDF outputs of your maps. (see MapFish PrintModuleDoc <http://trac.mapfish.org/trac/mapfish/wiki/PrintModuleDoc>):

  rails generate mapfish:print_controller Print

You'll need to have Sun's JRE <http://www.java.com/download/>_ installed to make this working.

  • The print module should be ready & responding to /print/info.json to get print configuration. Don't forget to adapt config/print.yaml (see configuration <http://trac.mapfish.org/trac/mapfish/wiki/PrintModuleServer>_. For instance, you should at least allow the print service to access the WMS services you're using. If you're getting errors, check your log file to get debug information.

  • Once this is done, you can integrate the MapFish print widgets <http://www.mapfish.org/svn/mapfish/trunk/MapFish/client/mfbase/mapfish/widgets/print/>_ into your client application, which give you the ability to output nice customizable PDF with your maps. Examples can be found here <http://demo.mapfish.org/mapfishsample/trunk/examples/print/>_.

License

The Mapfish server plugin for Rails is released under the LGPL license.

Copyright (c) 2008-2010 Pirmin Kalberer, Sourcepole AG

About

(Archive) Mapfish server plugin for Ruby on Rails

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages