Skip to content

Instantly share code, notes, and snippets.

@stepankuzmin
Created October 5, 2015 10:49
Show Gist options
  • Save stepankuzmin/dbaf3a8ebf784577d6bd to your computer and use it in GitHub Desktop.
Save stepankuzmin/dbaf3a8ebf784577d6bd to your computer and use it in GitHub Desktop.
Transliterate osm2pgsql openstreetmap data table to English using Ruby
#!/usr/bin/env ruby
require 'pg'
require 'colorize'
require 'translit'
# Output a table of current connections to the DB
conn = PG.connect( dbname: 'astrakhan' )
# conn.exec( "ALTER TABLE planet_osm_line ADD COLUMN name_en text;" )
# conn.exec( "ALTER TABLE planet_osm_point ADD COLUMN name_en text;" )
puts "transliterating planet_osm_point".colorize(:blue)
conn.exec( "SELECT osm_id, name FROM planet_osm_point WHERE name <> ''" ) do |result|
result.each do |row|
id = row.values_at('osm_id').first
name = row.values_at('name').first
name_en = Translit.convert(name, :english).gsub("'"){"''"}
conn.exec("UPDATE planet_osm_point SET name_en = '#{name_en}' WHERE osm_id = #{id}")
puts "%s -> %s".colorize(:green) % [name, name_en]
end
end
puts "transliterating planet_osm_line".colorize(:blue)
conn.exec( "SELECT osm_id, name FROM planet_osm_line WHERE name <> ''" ) do |result|
result.each do |row|
id = row.values_at('osm_id').first
name = row.values_at('name').first
name_en = Translit.convert(name, :english).gsub("'"){"''"}
conn.exec("UPDATE planet_osm_point SET name_en = '#{name_en}' WHERE osm_id = #{id}")
puts "%s -> %s".colorize(:green) % [name, name_en]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment