iarea 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +2 -2
- data/db/mesh.msgpack +0 -0
- data/db/meta.msgpack +0 -0
- data/iarea.gemspec +1 -1
- data/lib/iarea.rb +3 -2
- data/lib/iarea/area.rb +3 -3
- data/lib/iarea/prefecture.rb +2 -3
- data/lib/iarea/version.rb +1 -1
- data/lib/iarea/zone.rb +2 -3
- data/lib/tasks/iarea.rake +18 -24
- data/tools/generate.rb +122 -0
- metadata +17 -28
- data/db/iareadata/000013.sst +0 -0
- data/db/iareadata/000014.sst +0 -0
- data/db/iareadata/000015.sst +0 -0
- data/db/iareadata/000016.log +0 -0
- data/db/iareadata/000017.sst +0 -0
- data/db/iareadata/CURRENT +0 -1
- data/db/iareadata/LOCK +0 -0
- data/db/iareadata/LOG +0 -27
- data/db/iareadata/LOG.old +0 -1
- data/db/iareadata/MANIFEST-000004 +0 -0
- data/tools/import_areas.rb +0 -79
- data/tools/import_meshes.rb +0 -44
data/Gemfile.lock
CHANGED
data/db/mesh.msgpack
ADDED
Binary file
|
data/db/meta.msgpack
ADDED
Binary file
|
data/iarea.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_runtime_dependency '
|
21
|
+
s.add_runtime_dependency 'msgpack'
|
22
22
|
s.add_development_dependency 'rspec'
|
23
23
|
s.add_development_dependency 'rdoc'
|
24
24
|
s.add_development_dependency 'rake'
|
data/lib/iarea.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
require 'leveldb'
|
2
1
|
require 'json'
|
2
|
+
require 'msgpack'
|
3
3
|
require 'ostruct'
|
4
4
|
require_relative 'iarea/version'
|
5
5
|
|
6
6
|
module Iarea # :nodoc:
|
7
|
-
DB =
|
7
|
+
DB = MessagePack::unpack(File.read File.expand_path("../../db/meta.msgpack", __FILE__)) # :nodoc:
|
8
|
+
MESH = MessagePack::unpack(File.read File.expand_path("../../db/mesh.msgpack", __FILE__)) # :nodoc:
|
8
9
|
autoload :Area, File.expand_path('../iarea/area', __FILE__)
|
9
10
|
autoload :Zone, File.expand_path('../iarea/zone', __FILE__)
|
10
11
|
autoload :Prefecture, File.expand_path('../iarea/prefecture', __FILE__)
|
data/lib/iarea/area.rb
CHANGED
@@ -15,20 +15,20 @@ module Iarea
|
|
15
15
|
|
16
16
|
# Neighbor areas of the area
|
17
17
|
def neighbors
|
18
|
-
|
18
|
+
@table[:neighbors].map{|areacode| Area.find areacode}
|
19
19
|
end
|
20
20
|
|
21
21
|
class << self
|
22
22
|
# Find area by <tt>areacode</tt>
|
23
23
|
def find(areacode)
|
24
|
-
@@areas[areacode] ||= new
|
24
|
+
@@areas[areacode] ||= new DB['area'][areacode]
|
25
25
|
end
|
26
26
|
|
27
27
|
# Find area by latitude and longitude in degrees
|
28
28
|
def find_by_lat_lng(lat, lng)
|
29
29
|
meshcodes = Utils.expand_meshcode(Utils.lat_lng_to_meshcode(lat, lng))
|
30
30
|
meshcodes.each do |meshcode|
|
31
|
-
if areacode =
|
31
|
+
if areacode = MESH[meshcode]
|
32
32
|
return find(areacode)
|
33
33
|
end
|
34
34
|
end
|
data/lib/iarea/prefecture.rb
CHANGED
@@ -16,13 +16,12 @@ module Iarea
|
|
16
16
|
class << self
|
17
17
|
# Find a prefecture by <tt>id</tt>
|
18
18
|
def find(id)
|
19
|
-
id
|
20
|
-
@@prefectures[id] ||= new JSON.parse(DB['p:'+id])
|
19
|
+
@@prefectures[id.to_i] ||= new DB['prefecture'][id.to_i]
|
21
20
|
end
|
22
21
|
|
23
22
|
# All prefectures
|
24
23
|
def all
|
25
|
-
|
24
|
+
DB['prefecture_ids'].map{ |id| find(id) }
|
26
25
|
end
|
27
26
|
end
|
28
27
|
end
|
data/lib/iarea/version.rb
CHANGED
data/lib/iarea/zone.rb
CHANGED
@@ -15,13 +15,12 @@ module Iarea
|
|
15
15
|
class << self
|
16
16
|
# Find a zone by <tt>id</tt>
|
17
17
|
def find(id)
|
18
|
-
id
|
19
|
-
@@zones[id] ||= new JSON.parse(DB['z:'+id])
|
18
|
+
@@zones[id.to_i] ||= new DB['zone'][id.to_i]
|
20
19
|
end
|
21
20
|
|
22
21
|
# All zones
|
23
22
|
def all
|
24
|
-
|
23
|
+
DB['zone_ids'].map{|id| Zone.find id}
|
25
24
|
end
|
26
25
|
end
|
27
26
|
end
|
data/lib/tasks/iarea.rake
CHANGED
@@ -4,33 +4,27 @@ require 'tmpdir'
|
|
4
4
|
require 'tempfile'
|
5
5
|
|
6
6
|
namespace :iarea do
|
7
|
-
desc "generate
|
8
|
-
task :generate
|
7
|
+
desc "generate data"
|
8
|
+
task :generate do
|
9
|
+
# fetch iarea metadata
|
10
|
+
uri = "http://www.nttdocomo.co.jp/service/imode/make/content/iarea/domestic/map/js/iarea_def.js"
|
11
|
+
tf = Tempfile.open("iarea")
|
12
|
+
tf.write URI(uri).read
|
13
|
+
tf.close
|
9
14
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
desc "fetch iareadata.lzh"
|
21
|
-
task :data do
|
22
|
-
Dir.mktmpdir("iareadata") do |dir|
|
23
|
-
Dir.chdir(dir) do
|
24
|
-
uri = "http://www.nttdocomo.co.jp/binary/archive/service/imode/make/content/iarea/domestic/iareadata.lzh"
|
25
|
-
File.open("iareadata.lzh", "w") do |f|
|
26
|
-
f.write URI(uri).read
|
27
|
-
end
|
28
|
-
unless system("lha", "xf", "iareadata.lzh")
|
29
|
-
raise "lha failed"
|
30
|
-
end
|
15
|
+
# fetch and extract iareadata.lzh
|
16
|
+
Dir.mktmpdir("iareadata") do |dir|
|
17
|
+
Dir.chdir(dir) do
|
18
|
+
uri = "http://www.nttdocomo.co.jp/binary/archive/service/imode/make/content/iarea/domestic/iareadata.lzh"
|
19
|
+
File.open("iareadata.lzh", "w") do |f|
|
20
|
+
f.write URI(uri).read
|
21
|
+
end
|
22
|
+
unless system("lha", "xf", "iareadata.lzh")
|
23
|
+
raise "lha failed"
|
31
24
|
end
|
32
|
-
ruby "./tools/import_meshes.rb", dir, "db/iareadata"
|
33
25
|
end
|
26
|
+
|
27
|
+
ruby './tools/generate.rb', 'db', tf.path, dir
|
34
28
|
end
|
35
29
|
end
|
36
30
|
end
|
data/tools/generate.rb
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
|
4
|
+
require 'csv'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
require 'rubygems'
|
8
|
+
require 'bundler/setup'
|
9
|
+
require 'msgpack'
|
10
|
+
|
11
|
+
def import_meshes(src_path)
|
12
|
+
mesh_to_iarea_hash = {}
|
13
|
+
Dir[File.join(src_path, "iareadata/iarea*.txt")].each do |path|
|
14
|
+
data = CSV.open(path, "r:cp932")
|
15
|
+
data.each do |row|
|
16
|
+
areaid, subareaid, name, west, south, east, north, *mesh_data = row
|
17
|
+
areacode = areaid + subareaid
|
18
|
+
|
19
|
+
name.encode!("UTF-8")
|
20
|
+
|
21
|
+
mesh_data.pop if mesh_data.last.nil?
|
22
|
+
$stderr.puts " importing meshes %s %s" % [areacode, name]
|
23
|
+
num_meshes = mesh_data.shift(7).map(&:to_i)
|
24
|
+
|
25
|
+
expected_num_meshes = num_meshes.inject(&:+)
|
26
|
+
if expected_num_meshes != mesh_data.size
|
27
|
+
raise "number of meshes mismatch: expected %d, actual %d" % [
|
28
|
+
expected_num_meshes, mesh_data.size
|
29
|
+
]
|
30
|
+
end
|
31
|
+
|
32
|
+
# insert meshes
|
33
|
+
mesh_data.each do |mesh|
|
34
|
+
mesh_to_iarea_hash[mesh] = areacode
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
mesh_to_iarea_hash
|
39
|
+
end
|
40
|
+
|
41
|
+
def import_metadata(src_path)
|
42
|
+
js = open(src_path, "r:cp932").read
|
43
|
+
js.sub!(%r|^var IAreaDef=new function\(\)\{|, "")
|
44
|
+
data = {}
|
45
|
+
js.scan %r|this\.(.+?)=(.+?);|m do |key, json|
|
46
|
+
data[key] = JSON.parse(json)
|
47
|
+
end
|
48
|
+
|
49
|
+
db = Hash.new{|h,k| h[k] = {}}
|
50
|
+
|
51
|
+
# zones
|
52
|
+
data['zones'].each_with_index do |zone, i|
|
53
|
+
id = i + 1
|
54
|
+
$stderr.puts " importing zone %d %s" % [id, zone['name']]
|
55
|
+
areacodes = data['areas'].select {|areacode, area| area['zone'] == i}.keys
|
56
|
+
prefecture_ids = data['prefs'].each.with_index.select {|pref, j| pref['zone'] == i}.map{|pref, j| j+1 }
|
57
|
+
|
58
|
+
db['zone'][id] = {
|
59
|
+
:id => id,
|
60
|
+
:name => zone['name'],
|
61
|
+
:areacodes => areacodes,
|
62
|
+
:prefecture_ids => prefecture_ids
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
db['zone_ids'] = data['zones'].map.with_index{|z, i| i + 1}
|
67
|
+
|
68
|
+
# prefs
|
69
|
+
data['prefs'].each_with_index do |pref, i|
|
70
|
+
id = i + 1
|
71
|
+
$stderr.puts " importing prefecture %d %s" % [id, pref['name']]
|
72
|
+
areacodes = data['areas'].select {|areacode, area| area['pref'] == i}.keys
|
73
|
+
db['prefecture'][id] = {
|
74
|
+
:id => id,
|
75
|
+
:name => pref['name'],
|
76
|
+
:zone_id => pref['zone'] + 1,
|
77
|
+
:areacodes => areacodes
|
78
|
+
}
|
79
|
+
end
|
80
|
+
db['prefecture_ids'] = data['prefs'].map.with_index{|z, i| i + 1}
|
81
|
+
|
82
|
+
# areas
|
83
|
+
data['areas'].each do |areacode, area|
|
84
|
+
$stderr.puts " importing area %s %s" % [areacode, area['name']]
|
85
|
+
# insert area
|
86
|
+
hash = {
|
87
|
+
:areaid => areacode[0..2],
|
88
|
+
:subareaid => areacode[3..4],
|
89
|
+
:areacode => areacode,
|
90
|
+
:name => area['name'],
|
91
|
+
:west => area['msWest'],
|
92
|
+
:south => area['msSouth'],
|
93
|
+
:east => area['msEast'],
|
94
|
+
:north => area['msNorth'],
|
95
|
+
:zone_id => area['zone'] + 1,
|
96
|
+
:prefecture_id => area['pref'] + 1,
|
97
|
+
:neighbors => area['neighbors']
|
98
|
+
}
|
99
|
+
# fix .js problem
|
100
|
+
if hash[:name] == '新宿1?2丁目'
|
101
|
+
hash[:name] = '新宿1〜2丁目'
|
102
|
+
end
|
103
|
+
db['area'][areacode] = hash
|
104
|
+
end
|
105
|
+
db
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
db_dir = ARGV.shift
|
110
|
+
js_path = ARGV.shift
|
111
|
+
iareadata_dir = ARGV.shift
|
112
|
+
|
113
|
+
meta = import_metadata(js_path)
|
114
|
+
File.open(File.join(db_dir, 'meta.msgpack'), 'w') do |f|
|
115
|
+
f.write meta.to_msgpack
|
116
|
+
end
|
117
|
+
|
118
|
+
mesh_to_iarea_hash = import_meshes(iareadata_dir)
|
119
|
+
File.open(File.join(db_dir, 'mesh.msgpack'), 'w') do |f|
|
120
|
+
f.write mesh_to_iarea_hash.to_msgpack
|
121
|
+
end
|
122
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iarea
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-01 00:00:00.000000000
|
13
|
-
default_executable:
|
12
|
+
date: 2011-08-01 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
requirement: &
|
15
|
+
name: msgpack
|
16
|
+
requirement: &2157922240 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ! '>='
|
@@ -22,10 +21,10 @@ dependencies:
|
|
22
21
|
version: '0'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements: *
|
24
|
+
version_requirements: *2157922240
|
26
25
|
- !ruby/object:Gem::Dependency
|
27
26
|
name: rspec
|
28
|
-
requirement: &
|
27
|
+
requirement: &2157921820 !ruby/object:Gem::Requirement
|
29
28
|
none: false
|
30
29
|
requirements:
|
31
30
|
- - ! '>='
|
@@ -33,10 +32,10 @@ dependencies:
|
|
33
32
|
version: '0'
|
34
33
|
type: :development
|
35
34
|
prerelease: false
|
36
|
-
version_requirements: *
|
35
|
+
version_requirements: *2157921820
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
37
|
name: rdoc
|
39
|
-
requirement: &
|
38
|
+
requirement: &2157921400 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
41
|
- - ! '>='
|
@@ -44,10 +43,10 @@ dependencies:
|
|
44
43
|
version: '0'
|
45
44
|
type: :development
|
46
45
|
prerelease: false
|
47
|
-
version_requirements: *
|
46
|
+
version_requirements: *2157921400
|
48
47
|
- !ruby/object:Gem::Dependency
|
49
48
|
name: rake
|
50
|
-
requirement: &
|
49
|
+
requirement: &2157920980 !ruby/object:Gem::Requirement
|
51
50
|
none: false
|
52
51
|
requirements:
|
53
52
|
- - ! '>='
|
@@ -55,10 +54,10 @@ dependencies:
|
|
55
54
|
version: '0'
|
56
55
|
type: :development
|
57
56
|
prerelease: false
|
58
|
-
version_requirements: *
|
57
|
+
version_requirements: *2157920980
|
59
58
|
- !ruby/object:Gem::Dependency
|
60
59
|
name: bundler
|
61
|
-
requirement: &
|
60
|
+
requirement: &2157920560 !ruby/object:Gem::Requirement
|
62
61
|
none: false
|
63
62
|
requirements:
|
64
63
|
- - ! '>='
|
@@ -66,7 +65,7 @@ dependencies:
|
|
66
65
|
version: '0'
|
67
66
|
type: :development
|
68
67
|
prerelease: false
|
69
|
-
version_requirements: *
|
68
|
+
version_requirements: *2157920560
|
70
69
|
description: A library for DoCoMo Open Iarea.
|
71
70
|
email:
|
72
71
|
- dara@shidara.net
|
@@ -83,16 +82,8 @@ files:
|
|
83
82
|
- README.rdoc
|
84
83
|
- Rakefile
|
85
84
|
- VERSION
|
86
|
-
- db/
|
87
|
-
- db/
|
88
|
-
- db/iareadata/000015.sst
|
89
|
-
- db/iareadata/000016.log
|
90
|
-
- db/iareadata/000017.sst
|
91
|
-
- db/iareadata/CURRENT
|
92
|
-
- db/iareadata/LOCK
|
93
|
-
- db/iareadata/LOG
|
94
|
-
- db/iareadata/LOG.old
|
95
|
-
- db/iareadata/MANIFEST-000004
|
85
|
+
- db/mesh.msgpack
|
86
|
+
- db/meta.msgpack
|
96
87
|
- iarea.gemspec
|
97
88
|
- lib/iarea.rb
|
98
89
|
- lib/iarea/area.rb
|
@@ -106,9 +97,7 @@ files:
|
|
106
97
|
- spec/iarea/util_spec.rb
|
107
98
|
- spec/iarea/zone_spec.rb
|
108
99
|
- spec/spec_helper.rb
|
109
|
-
- tools/
|
110
|
-
- tools/import_meshes.rb
|
111
|
-
has_rdoc: true
|
100
|
+
- tools/generate.rb
|
112
101
|
homepage: http://github.com/darashi/iarea
|
113
102
|
licenses: []
|
114
103
|
post_install_message:
|
@@ -129,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
118
|
version: '0'
|
130
119
|
requirements: []
|
131
120
|
rubyforge_project: iarea
|
132
|
-
rubygems_version: 1.
|
121
|
+
rubygems_version: 1.8.3
|
133
122
|
signing_key:
|
134
123
|
specification_version: 3
|
135
124
|
summary: A library for DoCoMo Open Iarea.
|
data/db/iareadata/000013.sst
DELETED
Binary file
|
data/db/iareadata/000014.sst
DELETED
Binary file
|
data/db/iareadata/000015.sst
DELETED
Binary file
|
data/db/iareadata/000016.log
DELETED
Binary file
|
data/db/iareadata/000017.sst
DELETED
Binary file
|
data/db/iareadata/CURRENT
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
MANIFEST-000004
|
data/db/iareadata/LOCK
DELETED
File without changes
|
data/db/iareadata/LOG
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
2011/08/01-06:56:10.243731 7fff7e529960 Recovering log #3
|
2
|
-
2011/08/01-06:56:10.245217 7fff7e529960 Level-0 table #5: started
|
3
|
-
2011/08/01-06:56:10.247597 7fff7e529960 Level-0 table #5: 137776 bytes OK
|
4
|
-
2011/08/01-06:56:10.248902 7fff7e529960 Delete type=0 #3
|
5
|
-
2011/08/01-06:56:10.248995 7fff7e529960 Delete type=3 #2
|
6
|
-
2011/08/01-06:56:11.052004 1007f2000 Level-0 table #8: started
|
7
|
-
2011/08/01-06:56:11.087336 1007f2000 Level-0 table #8: 1540152 bytes OK
|
8
|
-
2011/08/01-06:56:11.093042 1007f2000 Delete type=0 #6
|
9
|
-
2011/08/01-06:56:11.913693 1007f2000 Level-0 table #10: started
|
10
|
-
2011/08/01-06:56:11.961970 1007f2000 Level-0 table #10: 1538749 bytes OK
|
11
|
-
2011/08/01-06:56:11.968064 1007f2000 Delete type=0 #7
|
12
|
-
2011/08/01-06:56:12.808704 1007f2000 Level-0 table #12: started
|
13
|
-
2011/08/01-06:56:12.841190 1007f2000 Level-0 table #12: 1532571 bytes OK
|
14
|
-
2011/08/01-06:56:12.850141 1007f2000 Delete type=0 #9
|
15
|
-
2011/08/01-06:56:12.850476 1007f2000 Compacting 4@0 + 0@1 files
|
16
|
-
2011/08/01-06:56:12.972097 1007f2000 Generated table #13: 109414 keys, 2116092 bytes
|
17
|
-
2011/08/01-06:56:13.060578 1007f2000 Generated table #14: 114250 keys, 2115011 bytes
|
18
|
-
2011/08/01-06:56:13.077859 1007f2000 Generated table #15: 26061 keys, 513678 bytes
|
19
|
-
2011/08/01-06:56:13.077922 1007f2000 Compacted 4@0 + 0@1 files => 4744781 bytes
|
20
|
-
2011/08/01-06:56:13.081068 1007f2000 Delete type=2 #5
|
21
|
-
2011/08/01-06:56:13.081286 1007f2000 Delete type=2 #8
|
22
|
-
2011/08/01-06:56:13.081596 1007f2000 Delete type=2 #10
|
23
|
-
2011/08/01-06:56:13.081880 1007f2000 Delete type=2 #12
|
24
|
-
2011/08/01-06:56:13.082217 1007f2000 compacted to: files[ 0 3 0 0 0 0 0 ]
|
25
|
-
2011/08/01-06:56:13.662966 1007f2000 Level-0 table #17: started
|
26
|
-
2011/08/01-06:56:13.700564 1007f2000 Level-0 table #17: 1535854 bytes OK
|
27
|
-
2011/08/01-06:56:13.705899 1007f2000 Delete type=0 #11
|
data/db/iareadata/LOG.old
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2011/08/01-06:56:08.209457 7fff7e529960 Delete type=3 #1
|
Binary file
|
data/tools/import_areas.rb
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# coding: utf-8
|
3
|
-
|
4
|
-
require 'json'
|
5
|
-
|
6
|
-
require 'rubygems'
|
7
|
-
require 'bundler/setup'
|
8
|
-
require 'leveldb'
|
9
|
-
|
10
|
-
if ARGV.size != 2
|
11
|
-
puts "usage #$0 [iarea_def.js] [dest_lebeldb_file]"
|
12
|
-
exit -1
|
13
|
-
end
|
14
|
-
|
15
|
-
src_path = ARGV.shift
|
16
|
-
dest_path = ARGV.shift
|
17
|
-
|
18
|
-
db = LevelDB::DB.new dest_path
|
19
|
-
|
20
|
-
js = open(src_path, "r:cp932").read
|
21
|
-
js.sub!(%r|^var IAreaDef=new function\(\)\{|, "")
|
22
|
-
data = {}
|
23
|
-
js.scan %r|this\.(.+?)=(.+?);|m do |key, json|
|
24
|
-
data[key] = JSON.parse(json)
|
25
|
-
end
|
26
|
-
# zones
|
27
|
-
data['zones'].each_with_index do |zone, i|
|
28
|
-
id = i + 1
|
29
|
-
$stderr.puts " importing zone %d %s" % [id, zone['name']]
|
30
|
-
areacodes = data['areas'].select {|areacode, area| area['zone'] == i}.keys
|
31
|
-
prefecture_ids = data['prefs'].each.with_index.select {|pref, j| pref['zone'] == i}.map{|pref, j| j+1 }
|
32
|
-
|
33
|
-
db['z:%d' % id] = JSON.dump(
|
34
|
-
:id => id,
|
35
|
-
:name => zone['name'],
|
36
|
-
:areacodes => areacodes,
|
37
|
-
:prefecture_ids => prefecture_ids
|
38
|
-
)
|
39
|
-
end
|
40
|
-
|
41
|
-
db['z'] = JSON.dump(data['zones'].map.with_index{|z, i| i + 1})
|
42
|
-
|
43
|
-
# prefs
|
44
|
-
data['prefs'].each_with_index do |pref, i|
|
45
|
-
id = i + 1
|
46
|
-
$stderr.puts " importing prefecture %d %s" % [id, pref['name']]
|
47
|
-
areacodes = data['areas'].select {|areacode, area| area['pref'] == i}.keys
|
48
|
-
db['p:%d' % id] = JSON.dump(
|
49
|
-
:id => id,
|
50
|
-
:name => pref['name'],
|
51
|
-
:zone_id => pref['zone'] + 1,
|
52
|
-
:areacodes => areacodes
|
53
|
-
)
|
54
|
-
end
|
55
|
-
db['p'] = JSON.dump(data['prefs'].map.with_index{|z, i| i + 1})
|
56
|
-
|
57
|
-
# areas
|
58
|
-
data['areas'].each do |areacode, area|
|
59
|
-
$stderr.puts " importing area %s %s" % [areacode, area['name']]
|
60
|
-
# insert area
|
61
|
-
hash = {
|
62
|
-
:areaid => areacode[0..2],
|
63
|
-
:subareaid => areacode[3..4],
|
64
|
-
:areacode => areacode,
|
65
|
-
:name => area['name'],
|
66
|
-
:west => area['msWest'],
|
67
|
-
:south => area['msSouth'],
|
68
|
-
:east => area['msEast'],
|
69
|
-
:north => area['msNorth'],
|
70
|
-
:zone_id => area['zone'] + 1,
|
71
|
-
:prefecture_id => area['pref'] + 1
|
72
|
-
}
|
73
|
-
# fix .js problem
|
74
|
-
if hash[:name] == '新宿1?2丁目'
|
75
|
-
hash[:name] = '新宿1〜2丁目'
|
76
|
-
end
|
77
|
-
db['a:%s' % areacode] = JSON.dump(hash)
|
78
|
-
db['n:%s' % areacode] = JSON.dump(area['neighbors'])
|
79
|
-
end
|
data/tools/import_meshes.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'csv'
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
require 'bundler/setup'
|
7
|
-
require 'leveldb'
|
8
|
-
|
9
|
-
|
10
|
-
if ARGV.size != 2
|
11
|
-
puts "usage #$0 [src_dir_contains_iareadata_dir] [dest_leveldb_file]"
|
12
|
-
exit -1
|
13
|
-
end
|
14
|
-
|
15
|
-
src_path = ARGV.shift
|
16
|
-
dest_path = ARGV.shift
|
17
|
-
|
18
|
-
db = LevelDB::DB.new dest_path
|
19
|
-
|
20
|
-
Dir[File.join(src_path, "iareadata/iarea*.txt")].each do |path|
|
21
|
-
data = CSV.open(path, "r:cp932")
|
22
|
-
data.each do |row|
|
23
|
-
areaid, subareaid, name, west, south, east, north, *mesh_data = row
|
24
|
-
areacode = areaid + subareaid
|
25
|
-
|
26
|
-
name.encode!("UTF-8")
|
27
|
-
|
28
|
-
mesh_data.pop if mesh_data.last.nil?
|
29
|
-
$stderr.puts " importing meshes %s %s" % [areacode, name]
|
30
|
-
num_meshes = mesh_data.shift(7).map(&:to_i)
|
31
|
-
|
32
|
-
expected_num_meshes = num_meshes.inject(&:+)
|
33
|
-
if expected_num_meshes != mesh_data.size
|
34
|
-
raise "number of meshes mismatch: expected %d, actual %d" % [
|
35
|
-
expected_num_meshes, mesh_data.size
|
36
|
-
]
|
37
|
-
end
|
38
|
-
|
39
|
-
# insert meshes
|
40
|
-
mesh_data.each do |mesh|
|
41
|
-
db['m:%s' % mesh] = areacode
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|