helllo dear osm-experts

new to Ruby - i need some advices -

i plan to do some requests in osm-files. (openstreetmap)

Question - how can i store the results on a Database - eg mysql or - (if you prefer postgresql) -

note: my favorite db - at least at the moment is mysql

here the code

require 'open-uri'
require "net/http"
require 'rexml/document'

def query_overpass(object_type, left,bottom,right,top, key, value)
   base_url = "http://www.overpass-api.de/api/xapi?"
   query_string = "#{object_type}[bbox=#{left},#{bottom},#{right},#{top}][#{key}=#{value}]"
   url = "#{base_url}#{URI.encode(query_string)}"
   resp = Net::HTTP.get_response(URI.parse(url))
   data = resp.body
   return data
end

overpass_result = REXML::Document.new(query_overpass("node",

7.1,51.2,7.2,51.3,"amenity","restaurant|pub|ice_cream|food_court|fast_food|cafe|biergarten|bar|bakery|steak|pasta|pizza|sushi|asia|nightclub"))

overpass_result.elements.each('osm/node')

{|x| if !x.elements["tag[@k='name']"].nil? print x.elements["tag[@k='name']"].attributes["v"] end print " | "

  if !x.elements["tag[@k='addr:postcode']"].nil?
    print x.elements["tag[@k='addr:postcode']"].attributes["v"]
    print ", "
  end
  if !x.elements["tag[@k='addr:city']"].nil?
    print x.elements["tag[@k='addr:city']"].attributes["v"]
    print ", "
  end
  if !x.elements["tag[@k='addr:street']"].nil?
    print x.elements["tag[@k='addr:street']"].attributes["v"]
    print ", "
  end
  if !x.elements["tag[@k='addr:housenumber']"].nil?
    print x.elements["tag[@k='addr:housenumber']"].attributes["v"]
  end
  print " | "
  print x.attributes["lat"]
  print " | "
  print x.attributes["lon"]
  print " | "
  if !x.elements["tag[@k='website']"].nil?
    print x.elements["tag[@k='website']"].attributes["v"]
  end
  print " | "
  if !x.elements["tag[@k='amenity']"].nil?
    print x.elements["tag[@k='amenity']"].attributes["v"]
    print " | "
  end
  puts
}

look forward to hear from you

again - i would love to store it on a mysql - database - if possible. If you would prefer postgresql - then i would takte this one.... ;-)

asked 08 Jun '14, 12:24

say_hello_to_the_world's gravatar image

say_hello_to...
19232427
accept rate: 0%


I would suggest using postgresql with the PostGIS extension - it's much better at geographical support than MySQL.

For ruby I'd recommend the RGeo suite of tools - see https://github.com/rgeo/rgeo . I use this for my projects, usually with the activerecord-postgis-adapter and rgeo-geojson gems too.

permanent link

answered 09 Jun '14, 12:28

Andy%20Allan's gravatar image

Andy Allan
11.5k23120140
accept rate: 30%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×85
×26
×6

question asked: 08 Jun '14, 12:24

question was seen: 2,106 times

last updated: 09 Jun '14, 12:28

powered by OSQA