Maze Posted June 8, 2014 Share Posted June 8, 2014 helllo dear php-commmunitynew 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 mysqlhere 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 youagain - i would love to store it on a mysql - database - if possible. If you would prefer postgresql - then i wouldtakte this one.... ;-)look forward to hear from youagain - i would love to store it on a mysql - database - if possible. If you would prefer postgresql - then i wouldtakte this one.... ;-)well - i guess that the answer to this will be the same no matter what language we are using.If the db is a sql database we need to design the database schema and create the tables in the database.The first step in accessing a db in our code is to get a connection to it.If ruby is our choice of language, a search for "ruby sql connector" will give uslots of options to read about.Well - we also can do it in PHP. What do you think!?Next, based on the schema we have designed, we need to create queries suitable for storing the data.We will likely need to consider our transactional model.Again, searching "ruby sql transactional model" will give us plenty of food for thought. Finally, we may want or need to close the connection to the database. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.