都道府県・地域選択連動セレクトボックス 〜 データ準備編 〜
まずは都道府県データ・地域データをxmlファイルとして準備しましょう。
 お急ぎの場合、データはこちらからダウンロードできます。
 続きは → 都道府県・地域選択連動セレクトボックス 〜 JavaScript編 〜

 都道府県・地域選択連動セレクトボックスを自作しようと思ったとき、ネックとなるのは技術的な問題よりも地域データをどのように取得するかということではないでしょうか?
 都道府県に関しては、47しかないし半永久的に変更がないと思われるので問題はないでしょう。しかし市区町村となると数は多いし、合併や分割などもおこります。

 ここでは日本郵便のホームページで提供されている郵便番号データを使います。このページでは、都道府県別に郵便番号データがダウンロード可能です。郵便番号は適度な粒度の市区町村単位で割り振られているので、郵便番号データの中の市区町村のデータを抽出するのです。

 まずは上記ページより北海道のデータをダウンロードしましょう。ダウンロード後、解凍してできたフォルダの中に「01HOKKAI.CSV」というファイルがあります。これをExcelで開きます。今回抽出したい市区町村データはH列にありますので、まずH列以外を削除します。結果として市区町村データのみがA列に表示されます。

 次にここから重複を取り除きます

 B1セルに「1」と入力し、B2セルに「=IF(A1=A2,0,1)」と入力します。
 入力後、再度B2セルにカーソルを合わせ、フィルハンドル(選択したセルの右下にある小さな■)をダブルクリックしましょう。すると、A列にデータの存在する行までB列がコピーされます。

図1

 B列の数式が意味するのは、カレント行のAセルの値とその上のAセルの値を比較し、同じであればカレント行のBセルの値を0とし、異なれば1とするということです。
 よって重複を取り除くにはBセルの値が1のところだけを抽出すればよいわけです。

 A1とB1を選択した状態で「データ」→「フィルタ」→「オートフィルタ」と選択します。

図2

 そしてB列の値「1」でフィルタをかけます。これで必要な市区町村データが抽出されました。A列のデータのある範囲をコピーしてください。

図3

 次は抽出したデータを使ってxmlファイルを作成します。

 先ほどコピーしたA列のデータを、別のExcelシートのB列に貼り付けてください。
そしてA1セルに「<area id="1">」と入力し、A1セルのフィルハンドルをダブルクリックして下方にコピーします。
 次にC1セルに「</area>」と入力し、同様に下方にコピーします。
 データが存在するA〜C列の範囲を選択し、コピーします。(A1セルにカーソルを置き、「Ctrl + Shist + End」で範囲を選択し、「Ctrl + C」でコピー)

 次はテキストエディタを開いて上記内容をペーストします。タブ区切りとなっているので、タブを全て削除します。(SAKURAエディタの場合、置換で「正規表現」にチェックをつけた上で「\t」を「」に置換すればOKです。)
 1行目に「<prefecture id="1" name="北海道">」を挿入し、最終行に「</prefecture>」を挿入してください。これを「1.xml」として適当なフォルダに保存しましょう。

 この方法で北海道から沖縄県まで(「1.xml」から「47.xml」まで)作成してください。(prefecture要素のid属性の値は「青森県」が「2」、「岩手県」が「3」…、「沖縄県」が「47」としてください)

 最後にこれらのファイルをマージします。

 「prefectures.xml」という名前で新規ファイルを作成します。
 1行目にxml宣言「<?xml version="1.0" encoding="Shift_JIS"?>」を記述し、2行目に「<prefectures>」と記述します。
 そして「1.xml」から「47.xml」の内容を順番にコピーしていきます。
 最後に「</prefectures>」と入力して完成です。

 完成した「prefectures.xml」はこちらからダウンロードできます。
 続きは → 都道府県・地域選択連動セレクトボックス 〜 JavaScript編 〜


Yahoo!ブックマークに登録 Googleブックマークに登録 はてなブックマークに登録 livedoorブックマークに登録 deliciousブックマークに登録 Buzzurlブックマークに登録


トップ | このサイトについて | 管理者へメール | サイトマップ
Google www una.soragoto.net  
Copyright(c) 2009 - 2012 una All Rights Reserved.