42
FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails FOSSGIS 2010 GIS mit Ruby on Rails Pirmin Kalberer Sourcepole AG, Bad Ragaz www.sourcepole.ch

GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

FOSSGIS 2010

GIS mit Ruby on Rails

Pirmin KalbererSourcepole AG, Bad Ragazwww.sourcepole.ch

Page 2: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

./configure && make && make install

Page 3: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

apt-get install postgis

Page 4: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

XML, SOAP

Page 5: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

Http, REST

Page 6: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

CVS

Page 7: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

git

Page 8: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

Linux?

Page 9: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

Linux!

Page 10: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

RUP

Page 11: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

Agile Software-Entwicklung

Page 12: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

PHP Web-GIS

Page 13: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

Web-Framework, Mashup

Page 14: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

Sourceforge

Page 15: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

github

Page 16: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

OSS GIS 2000

Page 17: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

OSS GIS 2010?

Page 18: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Ruby on Rails

RubyInterpretierte, objektorientierte &

dynamisch typisierte Skriptsprache

RailsFullstack MVC Web-Applikations

Framework

Page 19: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Ruby - Philosophie

eine dynamische, freie Programmiersprache,

die sich einfach anwenden und

produktiv einsetzen lässt.

Sie hat eine elegante Syntax, die man

leicht lesen und schreiben kann.

Page 20: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Ruby - Programmiersprache

> Japan 1995, Yukihiro Matsumoto

> Open Source

> Mischung aus Perl, Smalltalk, Eiffel, Ada und Lisp

> Hohe Qualität der Bibliotheken

Page 21: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Ruby - Syntax

5.times do

puts "ruby ist cool!".upcase

end

RUBY IST COOL!

RUBY IST COOL!

RUBY IST COOL!

RUBY IST COOL!

RUBY IST COOL!

Page 22: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails Framework

> Dänemark 2004, David Heinemeier Hansson

> Open Source MIT Lizenz

> Fullstack MVC Web-Framework

> Wurde aus bestehender Anwendung extrahiert

> 20 Konferenzen 1. Halbjahr 2010

> Bücher: >100

Page 23: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails Features

> „Don’t repeat yourself” (DRY)

> Convention over Configuration

> MVC, REST,...

> AJAX

> Test-Framework

> Generatoren, Scaffolding

> Plugins

Page 24: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails - MVC

Das Model bildet die zugrundeliegende Datenstruktur

Die View ist die Darstellung der Datenstruktur

Der Controller enthält die eigentliche Programmlogik

Page 25: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails Architektur

Model

ControllerBrowser

View

Database

Page 26: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails MVC - Model

> ORM: Objektrelationales Mapping

> Enthält Business-Logik

> Beziehungen zwischen Modellen

> Validierung

ActiveRecord

Page 27: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails MVC - View

> Repräsentiert die Sicht auf die Daten

> HTML, XML, EMail Inhalte oder Javascript

> kann Ruby Code enthalten

> Helfer Klassen enthalten View Logik

ActionView

Page 28: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails MVC - Controller

> steuert den Kontrollfluss der Anwendung

> redirected zu anderen Kontroller Aktionen

> stellt der View Daten und Methoden zur Verfügung

> wählt die View

> sendet View zurück an den Client

ActionController

Page 29: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails MVC - Code

Modelclass Customer < ActiveRecord::Base has_many :projects validates_presence_of :name, :minimum => 50, :message => "zu kurz!"end

Controllerdef list @customers = Customer.all(:aktiv => true)end

Page 30: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Rails MVC - Code

View<ul> <% for customer in @customers %> <li><%= link_to customer.name, customer %> ( <%= link_to "ändern", edit_customer_path(customer) %>) </li> <% end %></ul>

Page 31: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

GIS-Bibliotheken für RoR

> GeoKit, Graticule und acts_as_geocodable: Geokodierung und Distanzberechnungen

> GeoRuby: Spatial DB Adapter

> Ruby bindings: OGR/GDAL, Mapserver

> MapLayers: Integration von OpenLayers und OGC Service-Publikation von Geodaten

> MapFish: Web Mapping Framwork mit REST-Protokoll als Client-Server Schnittstelle

Page 32: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

MapLayers

Karte einbinden (Controller):

@map = MapLayers::Map.new("map") do |map, page| page << map.add_layer(MapLayers::GOOGLE) page << map.zoom_to_max_extent end

> Integration von OpenLayers in RoR

> Publizierung von Rails-Models als WFS, KML und GeoRSS

Page 33: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

MapLayers

View: <html> <head> <%= map_layers_includes :google => "ABQIAAAA..." %>

</head> <body> <div id="map"/> <%= @map.to_html %> </body></html>

Page 34: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

MapLayers

Web-Service publizieren (Controller):

class WeatherStationsController < ApplicationController

map_layer :weather_stations, :geometry => :geom

end > WFS-Service

> KML-Service

> GeoRSS-Service

Page 35: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

„Web 2.0 GIS-Architektur“

Web

ser

ver

Raster files(TIFF)

Raster files(TIFF)

Clie

nts

BrowserJavacript viewer

BrowserJavacript viewer

Mapserver(WMS)

Mapserver(WMS)

Application server

PostgreSQL/PostGIS

Javascript-API

goog

le

yaho

o

etc.

Geo module(WFS/ GeoJSON)

Page 36: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

UMN Mapserver

WMS/WFS Server:require "mapscript"

class Mapserver include Mapscript

def initialize(app, mapfile) @wms = MapObj.new(mapfile) end

def call(env) req = OWSRequest.new #... retval = @wms.OWSDispatch(req) #... endend

Page 37: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Mapfish

Generator:script/generate mapfish_resource Summit

Generierte Controller-Code:def index @summits = Summit.find_by_mapfish_filter(params)

render :json => @summits.to_geojsonend

Page 38: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Mapfish

Page 39: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Mapfish – Unterschiede Pylon

> Client kompatibel / REST-Schnittstelle

> Riesige Auswahl an Rails-Plugins

> Literatur, Schulungen, etc.

> Automatisches OR-Mapping

> Migrations

> Integriertes Test-Framework

Page 40: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

Links

> http://rubyonrails.org/

> http://wiki.github.com/pka/map_layers

> http://mapfish.org/doc/implementations/rails.html

Page 41: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

OSS GIS 2010?

Ruby on Rails!

Page 42: GIS mit Ruby on Rails - Sourcepole · 2020. 4. 30. · FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails Ruby - Philosophie eine dynamische, freie Programmiersprache, die sich einfach

FOSSGIS Osnabrück 3.3.10 GIS mit Ruby on Rails

FOSSGIS 2010

Danke!

Pirmin Kalberer<pka at sourcepole.ch>