Adding where to your ruby apps lt - (q con)

685 visualizações

Publicada em

Lightning Tallk about how to integrate GIS functionalities into Ruby code. Presented at São Paulo QCon 2011.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
685
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Adding where to your ruby apps lt - (q con)

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

×