ベクトルタイル・いちさと(小学校区)Pt. 1 Shapefile を用意するまで
より範囲を限定して、ベクトルタイルの実験をポリゴン方向に進めることにした。対象とするデータは国土数値情報(小学校区データ)である。今回は、作業順序の順番で情報共有する。
範囲の設定
茨城・千葉・埼玉・東京(いちさと)の合成地域から矩形区域を切り出すことにした。南西端を(35.66811,139.233398)、北東端を(36.153059,140.914307)に定めた。
国土数値情報(小学校区データ)のダウンロード
茨城・千葉・埼玉・東京の国土数値情報(小学校区データ)をダウンロードする。以下、 ~/Downloads の下に展開されている*1ものとする。
データ変換
データの下調べ
属性の文字コード変換を主目的とするデータ変換を行う。4都県のファイルを一つにすることも目的とする。
まずQGISを使って各フィールドの長さを調べたところ、 下のとおり、最大で49*2であったので、UTF-8化によるバイト数の増大に対応して、フィールド長さを2倍に増やすこととした。
変換プログラム
次の変換プログラムにより、データを変換した。
# -*- coding: utf-8 -*- # convert.rb CC0 require 'rubygems' require 'geo_ruby' require 'geo_ruby/shp' include GeoRuby::Shp4r dst = ShpFile.create('school_district.shp', ShpType::POLYGON, [Dbf::Field.new('id', 'N', 10, 0), Dbf::Field.new('A27_005', 'C', 10), Dbf::Field.new('A27_006', 'C', 56), Dbf::Field.new('A27_007', 'C', 48), Dbf::Field.new('A27_008', 'C', 98)]) tr = dst.transaction count = 0 %w{08 11 12 13}.each do |pref| src_path = "/Users/hfu/Downloads/" + "A27-10_#{pref}_GML/A27-10_#{pref}-g_SchoolDistrict.shp" ShpFile.open(src_path) do |src| src.each do |r| r.data.attributes['id'] = count tr.add(r) if count % 100 == 0 tr.commit tr = dst.transaction end count += 1 end end end tr.commit dst.close
これにより作成したデータの属性テーブルを確認すると、次の通り。UTF-8文字コードで開いて、特段文字化けが見られないことを確認。