diff options
Diffstat (limited to 'storage/mroonga/vendor/groonga/benchmark/geo-select-generate-grn.rb')
-rwxr-xr-x | storage/mroonga/vendor/groonga/benchmark/geo-select-generate-grn.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/storage/mroonga/vendor/groonga/benchmark/geo-select-generate-grn.rb b/storage/mroonga/vendor/groonga/benchmark/geo-select-generate-grn.rb new file mode 100755 index 00000000..dc90f7e6 --- /dev/null +++ b/storage/mroonga/vendor/groonga/benchmark/geo-select-generate-grn.rb @@ -0,0 +1,53 @@ +#!/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 |