さあ、空港の数を数えろ
国土数値情報(空港データ、平成19年度)に存在する空港の個数を数えてみました。
五歳男児の流行語をタイトルに借りて、簡単な Ruby プログラムを組んで処理してみました。
プログラム
# -*- coding: utf-8 -*- # count_airports.rb require 'rubygems' require 'zip/zip' require 'nokogiri' class Parser < Nokogiri::XML::SAX::Document def initialize @mode = nil @buf = '' @code = nil @name = nil @city = nil end def start_element(name, attrs) @mode = name if %w{ksj:AIC ksj:NA3 ksj:AAC}.include?(name) end def characters(text) @buf += text if @mode end def end_element(name) case name when 'ksj:CF02' print [@city, @name, @code].join(' '), "\n" (@code, @name, @city) = [nil, nil, nil] when 'ksj:AIC' @buf = '0' + @buf if @buf.size == 4 @code = @buf when 'ksj:NA3' @name = @buf + '' when 'ksj:AAC' @city = @buf end @buf = '' @mode = nil end def run Zip::ZipFile.open('../../../src/ksj/airport/C28-07.zip') {|z| Nokogiri::XML::SAX::Parser.new(self).parse( z.get_input_stream(z.get_entry('C28-07.xml'))) } end end Parser.new.run
処理結果
$ ruby count_airports.rb > wc -l 97
結論
国土数値情報によると、日本の空港は97程度あるようです。