mariadb/storage/mroonga/vendor/groonga/benchmark/geo-select-generate-grn.rb

53 lines
1.3 KiB
Ruby
Executable file

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
if ARGV.size != 2
puts "Usage: #{$0} SOURCE_CSV OUTPUT_GRN"
puts " e.g.: #{$0} fixtures/geo-select/13_2010.CSV fixtures/geo-select/load.grn"
exit(false)
end
csv, grn = ARGV
require "fileutils"
require "csv"
FileUtils.mkdir_p(File.dirname(grn))
File.open(grn, "w") do |output|
output.print(<<-EOH.strip)
table_create Addresses TABLE_HASH_KEY ShortText
column_create Addresses location COLUMN_SCALAR WGS84GeoPoint
table_create Locations TABLE_PAT_KEY WGS84GeoPoint
column_create Locations address COLUMN_INDEX Addresses location
load --table Addresses
[
["_key", "location"]
EOH
headers = nil
csv_foreach_args = [csv]
csv_foreach_args << {:encoding => "UTF-8"} if defined?(Encoding)
CSV.foreach(*csv_foreach_args) do |row|
if headers.nil?
headers = row
else
record = {}
headers.each_with_index do |header, i|
record[header] = row[i]
end
central_value_p = record["代表フラグ"] == "1"
next unless central_value_p
name =
record["都道府県名"] + record["市区町村名"] +
record["大字・町丁目"] + record["街区符号・地番"]
location = "%sx%s" % [record["緯度"], record["経度"]]
output.print(",\n[\"#{name}\", \"#{location}\"]")
end
end
output.print(<<-EOF)
]
EOF
end