Sha256: 34495a538efbe5e3294f91ac86aedcb6908ab9ba14d7b3444738c1adced10f54

Contents?: true

Size: 1.24 KB

Versions: 7

Compression:

Stored size: 1.24 KB

Contents

#!/usr/bin/env ruby

require 'csv'
require 'json'
require 'sequel'

if ARGV.size != 2
  puts "usage #$0 [src_dir_contains_iareadata_dir] [dest_sqlite3_file]"
  exit -1
end

src_path = ARGV.shift
dest_path = ARGV.shift

db = Sequel.sqlite(dest_path)

db.drop_table :meshes if db.table_exists?(:meshes)
db.create_table :meshes do
  String :meshcode
  String :areacode
  index :meshcode
  index :areacode
end

db.transaction do
  meshes = db[:meshes]
  areas = db[:areas]
  Dir[File.join(src_path, "iareadata/iarea*.txt")].each do |path|
    data = CSV.open(path, "r:cp932")
    data.each do |row|
      areaid, subareaid, name, west, south, east, north, *mesh_data = row
      areacode = areaid + subareaid

      name.encode!("UTF-8")

      mesh_data.pop if mesh_data.last.nil?
      $stderr.puts "  importing meshes %s %s" % [areacode, name]
      num_meshes = mesh_data.shift(7).map(&:to_i)

      expected_num_meshes = num_meshes.inject(&:+)
      if expected_num_meshes != mesh_data.size
        raise "number of meshes mismatch: expected %d, actual %d" % [
          expected_num_meshes, mesh_data.size
        ]
      end

      # insert meshes
      mesh_data.each do |mesh|
        meshes.insert(:meshcode => mesh, :areacode => areacode)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
iarea-0.2.0 tools/import_meshes.rb
iarea-0.1.4 tools/import_meshes.rb
iarea-0.1.3 tools/import_meshes.rb
iarea-0.1.2 tools/import_meshes.rb
iarea-0.1.1 tools/import_meshes.rb
iarea-0.1.0 tools/import_meshes.rb
iarea-0.0.3 tools/import_meshes.rb