SlideShare uma empresa Scribd logo
1 de 20
Adding “where” to yourrubyapps Roberto Pepato Robson Júnior
Em poucos slides ... Entender o que é de fato GIS; Ir além do entendimento de um simples geocode e roteirização; Gems para adicionar “where” na sua aplicação; Apresentar um caso de uso de aplicação massiva de GIS;
Primeiro de tudo ... GIS (GeographicInformation System) são sistemas de informação que permitem e facilitam a análise, gestão ou representação do espaço e dos fenômenos que nele ocorrem. Não existem limites para sua utilização. O que limita é sua imaginação.
Por que GIS? Localização; Condição; Tendência; Rotas; Modelos.
GIS no seu dia a dia Geocodificação ( Google Maps); Geocodificação Reversa ( FourSquare); Roteirização ( Google Maps); Mapas temáticos; E muitas outras aplicações .
Um pequeno exemplo
Por que em Ruby ? Linguagem dinâmica, clara e concisa; Fácil implementação de dsl’s; Comunidade ativa; Várias implementações base: geokit-gem; geocoder; geokit-rails; graticule; act_as_geocodable; ym4r-gm; postgis_adapter; google_static_maps_helper; etc; Um longo caminho a ser explorado: análise espacial, operações topológicas, análise de redes, etc.
Por quEMongoDB ? Código aberto; Armazenamento de informações desestruturadas; Comunidade ativa; Capacidade de armazenamento de dados geográficos (geometrias); Performance em consultas espaciais.
Configurando Mongoid No Gemfile Gem ‘mongoid’, ‘~> 2.2’ Gem ‘bson_ext’, ‘~> 1.3’ bundleinstall rails g mongoid:config No Model include Mongoid::Document field :name, :type => String field :address, :type => String field :coordinates, :type => Array
Configurando Geocoder gem “geocoder” bundleinstall No Model Include Geocoder::Model::Mongoid geocoded_by :address (addressor IP) after_validation :geocode		# getthecoordinates Or Reverse Geocoding include Geocoder::Model::Mongoid reverse_geocoded_by :coordinates after_validation :reverse_geocode 	#gettheaddresss rakegeocode:allCLASS=YourModel   # Geocodificação em Lote
Seu ModelGeolocalizado
Seu ModelGeolocalizado
Validação da Geolocalização
DSL’s (Exemplos Geocoder) # venues within 20 miles of Omaha  Venue.near('Omaha, NE, US', 20)  # venues within 20 miles of a point Venue.near([40.71, 100.23], 20)  # venues with coordinates Venue.geocoded # venues without coordinates Venue.not_geocoded
# other objects within 30 miles  obj.nearbys(30) # distance from arbitrary point to object obj.distance_from([40.714,-100.234])  # direction from object to arbitrary point obj.bearing_to("Paris, France") # look up coordinates of some location (like searching Google Maps) Geocoder.coordinates("25 Main St, Cooperstown, NY") => [42.700149, -74.922767]  # distance (in miles) between Eiffel Tower and Empire State Building Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655]) => 3619.77359999382  # find the geographic center (aka center of gravity) of objects or points Geocoder::Calculations.geographic_center([city1, city2, [40.22,-73.99], city4]) => [35.14968, -90.048929]
Como Você Sairia Dessa ? Eu preciso construir um hospital na zona sul de SP: Considerando que tenho de atender uma comunidade ainda não atendida por outros hospitais; Considerando que as ambulâncias que se deslocarem pela área de atendimento devem trafegar num limite máximo de 25 minutos em condições de trânsito normal;
Continuando ... Considerando a infraestrutura viária disponível; Considerando a infraestrutura de transporte público disponível; Considerando que as famílias atendidas por este hospital devem ter renda máxima de 3 salários mínimos;
Determine o local ótimo para construção desse hospital?
Buffer, Rota, Geocode, Analise Espacial, Operação Topológica, etc...
@bsao - robson @rpepato - pepato Obrigado :)

Mais conteúdo relacionado

Destaque

Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...
Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...
Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...Roberto Pepato
 
Adding where to your ruby apps
Adding where to your ruby appsAdding where to your ruby apps
Adding where to your ruby appsRoberto Pepato
 
An investigation of extreme programming practices and its impact on software ...
An investigation of extreme programming practices and its impact on software ...An investigation of extreme programming practices and its impact on software ...
An investigation of extreme programming practices and its impact on software ...Roberto Pepato
 
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...Roberto Pepato
 
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...Joberto Diniz
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
 

Destaque (9)

Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...
Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...
Continuous Inspection - Uma abordagem efetiva para melhoria contínua da quali...
 
Be Agile, Stay Agile
Be Agile, Stay AgileBe Agile, Stay Agile
Be Agile, Stay Agile
 
Adding where to your ruby apps
Adding where to your ruby appsAdding where to your ruby apps
Adding where to your ruby apps
 
Haskell 101
Haskell 101Haskell 101
Haskell 101
 
An investigation of extreme programming practices and its impact on software ...
An investigation of extreme programming practices and its impact on software ...An investigation of extreme programming practices and its impact on software ...
An investigation of extreme programming practices and its impact on software ...
 
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
 
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

Semelhante a Adding where to Ruby apps with MongoDB and Geocoder gems

Sql4 devs geodatabases
Sql4 devs geodatabasesSql4 devs geodatabases
Sql4 devs geodatabasesResource IT
 
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Dextra Sistemas / Etec Itu
 
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Dextra Sistemas / Etec Itu
 
Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.Guilherme Vinicius Moreira
 
Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?Café Digital
 
Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2
Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2
Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2Renata Curcio
 
Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?Kadu Fernandiz
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...Narcélio de Sá
 
Palestra Inteligência Geográfica: Geoinformação e Geolocalização
Palestra Inteligência Geográfica: Geoinformação e GeolocalizaçãoPalestra Inteligência Geográfica: Geoinformação e Geolocalização
Palestra Inteligência Geográfica: Geoinformação e Geolocalizaçãogaup_geo
 
SBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-G
SBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-GSBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-G
SBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-Gbrabello
 
PGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingPGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingJairo de Almeida
 
Análise Espacial baseada em Localização - Prática no QGis - 2024
Análise Espacial baseada em Localização - Prática no QGis - 2024Análise Espacial baseada em Localização - Prática no QGis - 2024
Análise Espacial baseada em Localização - Prática no QGis - 2024Vitor Vieira Vasconcelos
 
Utilizando GeoTools para Manipulação de Dados Geográficos - Apresentação
Utilizando GeoTools para Manipulação de Dados Geográficos - ApresentaçãoUtilizando GeoTools para Manipulação de Dados Geográficos - Apresentação
Utilizando GeoTools para Manipulação de Dados Geográficos - Apresentaçãopcollares
 
Aula 1 Introdução e Cartografia - Geoprocessamento.pdf
Aula 1 Introdução e Cartografia - Geoprocessamento.pdfAula 1 Introdução e Cartografia - Geoprocessamento.pdf
Aula 1 Introdução e Cartografia - Geoprocessamento.pdfLuizPauloSantos20
 
Geografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localizaçãoGeografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localizaçãoRodrigo Ferreira
 
Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsHelder da Rocha
 

Semelhante a Adding where to Ruby apps with MongoDB and Geocoder gems (20)

Sql4 devs geodatabases
Sql4 devs geodatabasesSql4 devs geodatabases
Sql4 devs geodatabases
 
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...
 
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
Tdc - Criando uma Minimal API para serviços de Geolocalização com SQL + C#
 
Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.Geo on Rails - Um guia para manter o seu cabelo.
Geo on Rails - Um guia para manter o seu cabelo.
 
Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?
 
Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2
Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2
Geolocalização social: até onde queremos chegar com isso? Café Digital 2012 #2
 
Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?Geolocalização social: até onde vamos com isso?
Geolocalização social: até onde vamos com isso?
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
Utilização do PostGIS para aplicações de inteligência espacial no setor de Sa...
 
Palestra Inteligência Geográfica: Geoinformação e Geolocalização
Palestra Inteligência Geográfica: Geoinformação e GeolocalizaçãoPalestra Inteligência Geográfica: Geoinformação e Geolocalização
Palestra Inteligência Geográfica: Geoinformação e Geolocalização
 
Banco de dados geográficos
Banco de dados geográficosBanco de dados geográficos
Banco de dados geográficos
 
SBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-G
SBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-GSBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-G
SBBD2013/MC3: Modelagem Conceitual de Bancos de Dados Geográficos: Modelo OMT-G
 
PGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRoutingPGDAY - Palestra PostGIS + PgRouting
PGDAY - Palestra PostGIS + PgRouting
 
Análise Espacial baseada em Localização - Prática no QGis - 2024
Análise Espacial baseada em Localização - Prática no QGis - 2024Análise Espacial baseada em Localização - Prática no QGis - 2024
Análise Espacial baseada em Localização - Prática no QGis - 2024
 
Geovisualização em portais WebGIS
Geovisualização em portais WebGISGeovisualização em portais WebGIS
Geovisualização em portais WebGIS
 
Utilizando GeoTools para Manipulação de Dados Geográficos - Apresentação
Utilizando GeoTools para Manipulação de Dados Geográficos - ApresentaçãoUtilizando GeoTools para Manipulação de Dados Geográficos - Apresentação
Utilizando GeoTools para Manipulação de Dados Geográficos - Apresentação
 
Aula 1 Introdução e Cartografia - Geoprocessamento.pdf
Aula 1 Introdução e Cartografia - Geoprocessamento.pdfAula 1 Introdução e Cartografia - Geoprocessamento.pdf
Aula 1 Introdução e Cartografia - Geoprocessamento.pdf
 
Geografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localizaçãoGeografia das coisas - Internet das coisas com enfoque em localização
Geografia das coisas - Internet das coisas com enfoque em localização
 
Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.js
 
App
AppApp
App
 

Adding where to Ruby apps with MongoDB and Geocoder gems

  • 1. Adding “where” to yourrubyapps Roberto Pepato Robson Júnior
  • 2. Em poucos slides ... Entender o que é de fato GIS; Ir além do entendimento de um simples geocode e roteirização; Gems para adicionar “where” na sua aplicação; Apresentar um caso de uso de aplicação massiva de GIS;
  • 3. Primeiro de tudo ... GIS (GeographicInformation System) são sistemas de informação que permitem e facilitam a análise, gestão ou representação do espaço e dos fenômenos que nele ocorrem. Não existem limites para sua utilização. O que limita é sua imaginação.
  • 4. Por que GIS? Localização; Condição; Tendência; Rotas; Modelos.
  • 5. GIS no seu dia a dia Geocodificação ( Google Maps); Geocodificação Reversa ( FourSquare); Roteirização ( Google Maps); Mapas temáticos; E muitas outras aplicações .
  • 7. Por que em Ruby ? Linguagem dinâmica, clara e concisa; Fácil implementação de dsl’s; Comunidade ativa; Várias implementações base: geokit-gem; geocoder; geokit-rails; graticule; act_as_geocodable; ym4r-gm; postgis_adapter; google_static_maps_helper; etc; Um longo caminho a ser explorado: análise espacial, operações topológicas, análise de redes, etc.
  • 8. Por quEMongoDB ? Código aberto; Armazenamento de informações desestruturadas; Comunidade ativa; Capacidade de armazenamento de dados geográficos (geometrias); Performance em consultas espaciais.
  • 9. Configurando Mongoid No Gemfile Gem ‘mongoid’, ‘~> 2.2’ Gem ‘bson_ext’, ‘~> 1.3’ bundleinstall rails g mongoid:config No Model include Mongoid::Document field :name, :type => String field :address, :type => String field :coordinates, :type => Array
  • 10. Configurando Geocoder gem “geocoder” bundleinstall No Model Include Geocoder::Model::Mongoid geocoded_by :address (addressor IP) after_validation :geocode # getthecoordinates Or Reverse Geocoding include Geocoder::Model::Mongoid reverse_geocoded_by :coordinates after_validation :reverse_geocode #gettheaddresss rakegeocode:allCLASS=YourModel # Geocodificação em Lote
  • 14. DSL’s (Exemplos Geocoder) # venues within 20 miles of Omaha Venue.near('Omaha, NE, US', 20) # venues within 20 miles of a point Venue.near([40.71, 100.23], 20) # venues with coordinates Venue.geocoded # venues without coordinates Venue.not_geocoded
  • 15. # other objects within 30 miles obj.nearbys(30) # distance from arbitrary point to object obj.distance_from([40.714,-100.234]) # direction from object to arbitrary point obj.bearing_to("Paris, France") # look up coordinates of some location (like searching Google Maps) Geocoder.coordinates("25 Main St, Cooperstown, NY") => [42.700149, -74.922767] # distance (in miles) between Eiffel Tower and Empire State Building Geocoder::Calculations.distance_between([47.858205,2.294359], [40.748433,-73.985655]) => 3619.77359999382 # find the geographic center (aka center of gravity) of objects or points Geocoder::Calculations.geographic_center([city1, city2, [40.22,-73.99], city4]) => [35.14968, -90.048929]
  • 16. Como Você Sairia Dessa ? Eu preciso construir um hospital na zona sul de SP: Considerando que tenho de atender uma comunidade ainda não atendida por outros hospitais; Considerando que as ambulâncias que se deslocarem pela área de atendimento devem trafegar num limite máximo de 25 minutos em condições de trânsito normal;
  • 17. Continuando ... Considerando a infraestrutura viária disponível; Considerando a infraestrutura de transporte público disponível; Considerando que as famílias atendidas por este hospital devem ter renda máxima de 3 salários mínimos;
  • 18. Determine o local ótimo para construção desse hospital?
  • 19. Buffer, Rota, Geocode, Analise Espacial, Operação Topológica, etc...
  • 20. @bsao - robson @rpepato - pepato Obrigado :)