• 検索結果がありません。

ExcelVBA 10m (10m ) (10m ) km m 15 3km 4km 1 CD-ROM ExcelVBA Excel Excel - 2 -

N/A
N/A
Protected

Academic year: 2021

シェア "ExcelVBA 10m (10m ) (10m ) km m 15 3km 4km 1 CD-ROM ExcelVBA Excel Excel - 2 -"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

アルゴリズムの理解のための地図作成

小林岳人(千葉県立小金高等学校)

千葉県高等学校教育研究会地理部会秋季研究大会

「パソコン利用による地理教育の新たな取り組みについて」 資料2 2000年11月17日

(2)

アルゴリズムの理解のための地図作成

小林岳人

1 国土地理院のディジタルデータを利用した地図作成

①地図作成とアルゴリズム 地図をコンピュータで作図することは、しばしば、同じ手順の繰り返しや一定の基準に 伴ったそれ相応の作業となる。そこで、この作図過程を考えることはアルゴリズムの理解 にとって、ふさわしい課題といえる。そこで、ここではラスタ型データ構造をもつ地理情 報を地図化する過程でそのためのアルゴリズムを考え、それをExcelVBA を利用して実際 に作図してみることとする。 ②「細密数値情報〈10mメッシュ土地利用〉」 建設省国土地理院ではコンピュータで地図を作成するための各種ディジタルデータを整 備し、頒布している。標高、行政界、地名、土地利用、道路、鉄道、河川などに関するデ ータをディジタル化している。このうち土地利用に関するものとしては「細密数値情報 (10m メッシュ土地利用)」というものがある。「細密数値情報(10m メッシュ土地利用)」デ ータは、約5 年毎に行われた過去 4 回の宅地利用動向調査をもとに作成された土地利用に 関する数値情報である。これは首都圏、中部圏、近畿圏について実施されている。首都圏 に関しては、第1 回調査では昭和 49 年(1974 年)時点と昭和 54 年(1979 年)時点につ いて、第2 回調査では昭和 59 年(1984 年)時点、第 3 回調査では平成元年(1989 年) 時点、第 4 回調査では平成 6 年(1994 年)時点について、首都圏整備法に基づく約 8.3 千平方km の地域を対象に、土地利用の現況及びその変化状況について調査をしている。 合計で839 ファイルで構成されているこのデータは、10m メッシュで、空中写真から判読 した土地利用情報を 15 種類の土地利用分類にコード化し、平面直角座標系のもと、3km ×4km を 1 ファイルとしてテキスト形式で整備されている。国土地理院ではこれらのデー タをCD-ROM 単位にまとめあげて頒布している。 ③新松戸周辺土地利用データ構造 このラスタ形式データを利用して地図化を試みる。地図化の過程でアルゴリズムが必要 になる。これを、ExcelVBA で扱って実際に地図化してみる。Excel でメッシュマップを 作るのである。地域は松戸市北部の新松戸周辺である。まず、Excel で新松戸周辺の土地 利用データの一部を以下のように読み込む。

(3)

縦(南北方向)に100 行、横(東西方向)に 100 列の巨大なメッシュデータである。10 mメッシュなので、1km 四方の範囲のデータです。範囲は東は新松戸駅、西は小金高校や 新坂川がはいる範囲である。ワークシートを縮小すると次のようになる。

図 1 新松戸周辺土地利用データ

(4)

数字の形からなんとなく地図らしきものが浮かび上がってきた。道路や鉄道線、駅、学 校、河川などが判別できそうである。しかし、やはりそれぞれのセルに色をつけて地図ら しくしたい。そこでExcel の VBA 機能を利用してこの処理を行うアルゴリズムを考える 必要がでてくる。 ④凡例の作成 上のように別のシートに凡例を作成する。この凡例に従った塗り分けを行うようにする。

2 セル塗り分けのためのアルゴリズム

セルの塗りわけのために、次のようなアルゴリズムを考える。凡例シートに土地利用コ ードに対応したセルの色をあらかじめきめてあるので、土地利用データシートの各セルの コードに対応した色をこの凡例シートから読み取ってきて、これを土地利用図シートの該 当セルの色とする。行方向と列方向それぞれについて繰り返しを行い、100×100 のセル すべてに着色する。繰り返しの二重構造をもつアルゴリズムである。 図 3 凡例

(5)

3 アルゴリズムの VBA 化

アルゴリズムの各部分にしたがって、順序良く VBA のコードを作成していく。アルゴ リズムの各部分ごとにコードを詳しく説明してみる。

①セルパターン指定プロシージャの作成

k = Sheets("土地利用データ").Cells(i, j) + 1

Sheets("土地利用図").Cells(i, j).Interior.Pattern = Sheets("凡例").Cells(k, 3).Interior.Pattern

おわり For j = 1 To 100 ループ2 はじめ 宣言 i,j,k For i = 1 To 100 ループ1 図 4 セル塗りわけのためのアルゴリズム 図 5 セルパターン指定プロシージャ

(6)

この命令文は代入文と呼ばれ、右辺を左辺に代入するという意味を表す。 左辺のSheet は Excel の一つの部分であるワークシートを意味し、次のカッコの中でそ の具体的なシート名を指示している。ピリオドで区切ってそれ(ワークシート)のなかの Cells の(2,3)を指示している。Cells はセルを表しその次のカッコの中でそのセルの位置を 示している。(2,3)は 2 行目 3 列目のセルを示す。そのあと、ピリオドで区切って Interior はセルの書式のうちパターンを表す。さらにピリオドで区切って ColorIndex はそのパタ ーンの色を表す。つまり「凡例シートの2 行目 3 列目のセル書式のパターンの色」という ことを表す。この色は色番号という数字となっている。具体的に凡例シートの2 行目 3 列 目の部分は山林・荒地等の深緑色で、番号は 10 である。ちなみに、その下の田の緑色は の色番号は43 となっている。 左辺も同様に解釈すると「土地利用図シートの1 行目 1 列目のセルの書式のパターンの 色」ということになる。そして=はこの左辺から右辺への代入となるわけですから、この 命令文は「凡例シートの2 行目 3 列目のセル書式のパターンの色を土地利用図シートの 1 行目1 列目のセルの書式のパターンの色にしなさい」という意味になります。では、プロ シージャを実際に実行すると次のようにセル1 行目 1 列目が深緑色になっている。 ②列方向の反復・繰り返し(ループ2) 次に、列方向にセルの位置を一つずつ変化させてみる。そこで、列方向のセルの位置と して変数j を利用する。プロシージャを以下のように書き換える。 図 6 セルパターン指定プロシージャの実行結果

(7)

ここでは、For∼Next 制御文を利用して繰り返し・反復を行う。そのプログラム制御文 は For j = 1 To 100 ある。これは最後の Next j と関係する。この文は変数j を 1 から一つづつ増加させ 100 になるまで繰り返すという 制御文ある。100 とはちょうどセルの列方向の数になる。まず j を 1 とした状態で k = Sheets("土地利用データ").Cells(1, j) + 1 Sheets("土地利用図").Cells(1, j).Interior.ColorIndex = _ Sheets("凡例").Cells(k, 3).Interior.ColorIndex を行う。つまり、「土地利用データ」シートの1 行目 1 列目のセルの数字プラス 1 を k として「凡例」シートの該当する色番号を「土地利用図」シートの1 行目 1 列目のセルの 色番号としてそのセルを着色する。そして Next j で、 For j = 1 To 100 に戻り、今度はj は 2 となり k = Sheets("土地利用データ").Cells(1, j) + 1 Sheets("土地利用図").Cells(1, j).Interior.ColorIndex = _ Sheets("凡例").Cells(k, 3).Interior.ColorIndex を行う。「土地利用データ」シートの1 行目 2 列目のセルの数字プラス 1 を k として「凡 例」シートの該当する色番号を「土地利用図」シートの1 行目 2 列目のセルの色番号とし てそのセルを着色します。これをj が 100 になるまで繰り返す。実行すると次のようにセ ル1 行目がすべて着色されている。 図 7 セルパターン指定プロシージャの書き換え(列方向の反復)

(8)

③行方向への反復・繰り返し(ループ1)

次に、まず行方向へもセルの位置を一つずつ変化させてみる。そこで、行方向のセルの 位置として変数I を利用する。プロシージャを以下のように書き換える。

(9)

まず、最初の For i = 1 To 100 で、i は 1 となる。次の For j = 1 To 100 で、j は 1 となる。つまり i が 1、j が 1 ということで k = Sheets("土地利用データ").Cells(i, j) + 1 Sheets("土地利用図").Cells(i, j).Interior.ColorIndex = _ Sheets("凡例").Cells(k, 3).Interior.ColorIndex をする。そして Next j で、 For j = 1 To 100 に戻る。このときj は 2 となる。つまり i が 1、j が 2 ということで k = Sheets("土地利用データ").Cells(i, j) + 1 Sheets("土地利用図").Cells(i, j).Interior.ColorIndex = _ Sheets("凡例").Cells(k, 3).Interior.ColorIndex を行う。そして再び、 Next j で、 For j = 1 To 100 に戻り、j が 100 になるまで繰り返す。そうしたら Next i で、 For i = 1 To 100 に戻り、i が 2 となり、次の For j = 1 To 100 で、j は 1 となる。つまり i が 2、j が 1 ということで k = Sheets("土地利用データ").Cells(i, j) + 1 Sheets("土地利用図").Cells(i, j).Interior.ColorIndex = _ Sheets("凡例").Cells(k, 3).Interior.ColorIndex をする。そして Next j で、 For j = 1 To 100 に戻り、j が 100 になるまで繰り返す。そして、 Next i で For i = 1 To 100 に戻り、i が 100 になるまで繰り返してこのプロシージャは終わる。

(10)

プロシージャを実行すると次のようになる。

4 まとめと考察

地図データとExcelVBA を利用すると、視覚的によく理解できるようなアルゴリズムが 体験できる。数字では体感し難い感覚が得られる。ただ、この報告書でも詳しく述べてい るように、アルゴリズムを具体化するプログラミング言語についての説明はやや詳しい内 容が必要であろう。特に、繰り返しの部分の処理についてはしっかりと説明するべきであ る。ただ、前述したように、このアルゴリズムは視覚的に体感できるようになっているの で部分部分に分けて説明することによって、理解は深まるであろう。勿論、できがった地 図自体も新たな情報である。ディジタル化された情報なので情報の発信、情報の活用等に も大いに利用が可能である。 なお、VBA の理解にためにはたとえば、凡例の色を適当なパターンに変更して見るとい う応用問題などが考えられる。例えば白黒印刷にも耐えうるような凡例にし、プロシージ ャ内のColorIndex オブジェクト Pattern オブジェクトに書き換えて、プロシージャを実 行するといった例が考えられる。 図 10 行方向への反復実行結果

(11)

※本文中で使用した地図はいずれもMicrosoft 社の Excel を利用して本報告者が作成した ものである。 参考文献 小林岳人(1998):Excel を利用した地理情報システム(GIS)の方法. 「房総地理(千 葉県高等学校教育研究会地理部会機関誌)」49 中村和郎・村山祐司他編(1998):「地理情報システムを学ぶ」、古今書院

エクスメディア社編(1998):「EXCEL97VBA SUPER MASTER」、エクスメディア社 図 11 セルパターン指定プロシージャの応用

図  2 新松戸周辺土地利用データ(縮小)
図   8  列方向への反復実行結果

参照

関連したドキュメント

前章 / 節からの流れで、計算可能な関数のもつ性質を抽象的に捉えることから始めよう。話を 単純にするために、以下では次のような型のプログラム を考える。 は部分関数 (

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

Lane and Bands Table と同様に、Volume Table と Lane Statistics Table も Excel 形式や CSV

共通点が多い 2 。そのようなことを考えあわせ ると、リードの因果論は結局、・ヒュームの因果

72 Officeシリーズ Excel 2016 Learning(入門編) Excel の基本操作を覚える  ・Excel 2016 の最新機能を理解する  ・ブックの保存方法を習得する 73

手動のレバーを押して津波がどのようにして起きるかを観察 することができます。シミュレーターの前には、 「地図で見る日本

お客様が CD-ROM

行なうこととします。