ベクター解析

 今回はベクター解析について学んでいきましょう。まずは、ベクターについて少し復習しましょう。ベクターとは、線、点、境界ライン、ポリゴンです。その一方、ラスターは写真等の画像で、拡大するとピクセルと呼ばれる格子状の四角形から構成されているものです。ベクター、ラスターともデータを表現する基本的な総称ですので、覚えておきましょう。

ベクターを使って何ができるでしょうか?今回一緒にみていきましょう。

目標

ベクターデータを使って、ベクター解析ができる様にする。

まずは、毎回の様に演習が始めれる様に仮想ドライブの設定をしましょう。

ベクターデータを解析するのに、以下の解析手法を今回はマスターしていきましょう。今日使うデータmxdファイルをダウンロードして、データはLドライブでzipファイルを展開してください。 LドライブにChibaというフォルダーがない場合は、Chiba.zipをダウンロードしてLドライブでzipファイルを展開してください。

今日覚えるベクター解析手法は以下です。

  • Merge (マージ)
  • Erase (イレース)
  • Clip (クリップ)
  • Intersect (インターセクト)
  • Union (ユニオン)
  • Buffer (バッファー)
  • Spatial Join (空間結合)

    1)Merge

    Mergeとは複数の入力ベクターレイヤーを結合し、新たなレイヤーを作成します。このツールはベクターデータしか使えません。ラスターデータにはMosaicというツ−ルがこれに相当します。ラスタ−デ−タ解析については、ラスタ−解析の演習時に学びます。

    ダウンロードしたEx7.mxdをLドライブでダブルクリックすると以下の様に表示されます。

    TokyoKanagawachibaのレイヤーのチェックをはずすと、Japan_without_chibaは東京、神奈川、千葉のない図であることがわかります。

    東京と神奈川、千葉を日本地図に合体させましょう。ArcToolBoxを開いて、データ管理ツール-> 一般 -> マージ(Merge)をクリック。

    以下の様にTokyoKanagawa, chiba, Japan_without_chibaを入力データセットとして、出力データをMerge.shpとしてMドライブに保存してください。

    クリックOK

    出力されたレイヤーは3つのレイヤーが結合されたことがわかります。この様にバラバラのデータを一緒にするときは、Mergeを用います。ただ、気を付けないといけないことに、ポリゴンはポリゴン、ラインはライン、点は点、とデータタイプ別に結合します。ポリゴンとポイントと違うデータタイプを結合できませんので、ご注意ください。

    2)Erase

    Eraseと書かれているデータフレームをアクティブ化してください。Eraseとは必要のないポリゴンをデータから消すことができます。消しゴムのことを英語でEraserと言いますが、地図から必要のない情報を消しゴムで消すと思ってください。

    日本地図の中で北海道をなくした図を作成したい時、Eraseで作業をします。

    ArcToolBoxにEraseというツールがあるのですが、そのツールを使うには、消したい部分を決めないと行けません。消したい部分を自分で作成してみましょう。

    以前ArcCatalogを使って、shapefileを作成しました。同じ様に、ArcCatalogを使い消したい部分のポリゴンを作成しましょう。ArcCatalogを開いて、MドライブにEraseというポリゴンを作成します。

    ArcCatalogでMドライブへ行き、Mドライブを右クリック。新規作成を選んでシェープファイルをクリック。

    名前をEraseとして、フィーチャタイプをポリゴンに指定。空間参照は座標系を指定しなければなりません。ベクター解析は座標系を合わせないと、解析が正確にできないことがあります。この場合、解析したいデータである全国地図(japan_ver62.shp)と同じ座標系にしなければなりません。同じ座標系にするために、空間参照で、japan_ver62.shpの座標系をここで読み込んであげましょう。そのために、以下で編集をクリック。

    以下の画面で右上のアイコンの中からインポートをクリックして

    LドライブにあるEx7data->Ex7dataフォルダー内にあるjapan_ver62.jpgをクリックして、追加をクリック。

    この結果上記のようにjapan_ver62.shpと同じ座標系が新規に作成するデータに付きます。クリックOK。

    またクリックOK。そうすると現在のデータフレーム内にErase.shpが追加されます。エディターををクリックして、編集の開始をしてください。

    EraseをクリックしてクリックOK。その後フィーチャの作成で、Erase.shpをクリックすると、下に「ポリゴン」と表示されますので、ポリゴンをクリック。もしフィーチャの作成が出ない場合は、エディターツールの一番右にあるをクリックすると、フィーチャの作成という画面が表示されます。

    その後、画面上で、北海道の周りをクリックしていきましょう。

    できたましたら、エディタで編集を保存して、編集の終了をしてください。これで消したい場所を指定することができました。

    ツールを使って消す場合は、ArcToolBoxを開いて、解析ツール -> オーバーレイ -> イレース をクリック。もしくは検索ツールをクリックして、検索ツールを開いて、Eraseと入力するとツールが出てきます。他のツールも検索ツールから捜せます。一番上のイレースをクリック。

    Eraseツールを開いて入力フィーチャをjapan_ver62、イレースフィーチャをErase、出力フィーチャでMドライブにJapan_erase.shpを保存。

    その後、Japan_erase.shpを右クリックして、レイヤの全体表示をさせて、Eraseとjapan_ver62.shpのチェックを外すと、以下のように消したい部分が消されたデータになります。

    ツールを使わなくても北海道を消せる方法があります(北海道の方すみません。私は北海道が好きです。ただの演習ですので、気にしないでください)。

    まずはjapan_ver62.shpをチェックを入れて、データを表示させます。それ以外のデータは表示させないでください。japan_ver62.shpの属性テーブルを開いて、属性検索から、"PREF" = '北海道'として、北海道だけ選択します。

    クリック適用にすると

    北海道だけ選択されたことを確認してください。また属性テーブルに戻り、左上のメニューから、選択セットの切り替えをクリックしてください。そうすると北海道以外が選択されます。

    その後、japan_ver62のレイヤを右クリックして、データ-> データのエクスポートを選択。

    MドライブにJapan_without_Hokkaidoとして保存してください。クリックOK

    クリック はい

    そうすると、北海道のない日本が表示されます。

    japan_ver62のチェックをはずすと、上図のように表示されます。この様に削除したい部分をまず選択して、選択セットの切り替えを用いることで、それ以外を違うshapefileとして保存ができました。これを応用すれば、必要な部分だけを簡単に抽出できます。

    3)Clip と Intersect

    Clip_Intersectというデータフレームをアクティブ化してください。IntersectやClipは重なり合ったデータだけを抽出するツールです。

    Chiba_KokyouShisetsuは千葉県内の主な公共施設の場所を点データとして表示してます。Chiba_Roadは千葉県内の道路、Chiba_boundaryは千葉県内の市町村界線です。

    人口10万人以上の市町村を対象に、市町村別公共施設の数を数えてみましょう。

    人口10万人の市町村を抽出するには、Chiba_boundaryの属性テーブルを開いて、属性検索から、以下の様に検索条件を設定してください。検索条件は、"P_NUM" >=100000 としてください。

    選択された市町村をデータ-> データのエクスポートからmore10man.shpとしてMドライブに保存。

    Chiba_boundaryとChiba_Roadのチェックを外して結果を表示すると以下のようになります。

    10万人以上の市町村内だけのポリゴンが画面上に表示されています。そのポリゴン内だけを対象に公共施設を抽出してみましょう。ArcToolBoxを開いて、解析ツール->オーバーレイ->インターセクトを選択。

    入力フィーチャとして、Chiba_KokyouShisetsumore10manを選択。出力フィーチャにMドライブにIntersect.shpとして保存してください。

    Chiba_KokyoShisetuをチェック外すと結果がわかりやすく表示されます。

    出力されたデータは、10万人以上の市町村界内のポイントデータです。Intersectは重なり合ったデータだけを抽出するツールです。今回はポイントとポリゴンが重なり−>アウトプットとして、ポイントとして出力されました。

    ではこの公共施設の数を数えてみましょう。属性テーブルを開いて、SYURUIというフィールドを右クリックして、サマリを選択。

    出力するテーブルの統計情報は、何もチェックする必要はありません。出力テーブルをShuruiというファイル名にし、ファイルの種類をテキストファイルを選んで、Mドライブに保存してください(以下の私のMドライブの中身が皆さんと違っていても気にしないでください)。

    その結果が以下です。

    人口10万人の市町村内では、学校が1018個あります。この様に、複数のレイヤ−にまたがって決められた範囲内での情報を集約することができる様になりました。

    次にIntersectClipについて使い分けてみましょう.

    Road densityという指標があります。(道路の長さ)/(関連する土地の面積) が道路密度(Road density)として開発の度合いを測る指標として使われます。人口10万人の市町村における道路密度を求めてみましょう.

    道路の長さや市町村ポリゴンの面積を測らなければなりません。道路の長さを測るには、UTMや平面直角座標系などのメートルを単位とする座標系に変換しなければなりません。データの座標系変換をするか、デ−タフレ−ムの座標系を変換しないとメートル単位での面積やを計算できません。その証拠にmore10manのレイヤのプロパティをみてください.

    角度単位としてDegreeになっています。この座標系で長さや面積を計算すると、単位がになってしまいます.m や m2 という単位を使うためには,UTMや平面直角座標系などの座標系に変換しないといけません。座標系を変換するには,レイヤ−自身の座標系を変換する方法と、デ−タフレ−ムの座標系を変換する簡易的な方法とがあります.今回はデ−タフレ−ムの座標系を変換して,長さを計算してみましょう.

    Clip_Intersectのデ−タフレ−ムを右クリックしてプロパティを選択し、座標系のタブをクリックして、

    上の座標系を選択する画面で、

    投影座標系-> 各国の座標系 -> 日本 -> 平面直角座標系 第9系 (JGD 2000)

    を選択し、クリックOK (すでに選択されていたら、上記の座標系を選択されているか確認して、クリックOK)

    まずは,more10manの属性テ−ブルを開いて,面積というフィ−ルドを追加(Doubleで精度10,小数点以下桁数3を指定).

    面積フィ−ルドを右クリックしてジオメトリ演算を選択し、データフレームの座標系を使用にチェックを入れ、単位を平方メートルにします。

    クリックOK

    その後,人口10万人の市町村内の道路を抜き出しましょう.ArcToolBoxから解析ツ−ル-> オ−バ−レイ -> インタ−セクトをクリックして、more10manChiba_Roadを入力フィ−チャとして,出力にRoad_Intersect.shpとしてMドライブに保存してください。その後クリックOK。

    人口10万人の市町村内での道路だけ抽出できていることがわかります.

    Road_Intersectの属性テ−ブルを開き,道路の長さというフィ−ルドを追加(Doubleで精度または全桁数を10,小数点以下桁数を3に指定).道路長さフィ−ルドを右クリックして,ジオメトリ演算を選択。

    「長さ」を選んで、単位がメートル(m)にして、クリックOK

    その後、市町村別の道路の長さの合計値,面積の合計値を計算するために,サマリを使いましょう。

    (重要)Intersectというツールは、地図上で重なった場所を抜き出すと同時に、2つのデータの属性テーブルも合体してくれます。

    Road_Intersect.shpの属性テーブルを開いて、要約するフィ−ルドにCITY1を選択,P_NUM合計値面積平均値道路長さ合計値にチェックを入れてください。

    (Road_Intersect.shpは線データですが、元々more10man.shpのポリゴンデータにあった情報もインターセクトによって属性テーブルが合体することで利用可能になっています。ですので、P_NUMのテーブルも利用可能になっていることに注意をしてください。)

    Mドライブに道路密度として出力、出力したテ−ブルを開き,密度という名のフィ−ルドを追加して,

    密度フィ−ルドを右クリックして,フィ−ルド演算を選択

    上の様に式を完成させ,クリックOK

    上記で計算した道路密度人口とはどんな関係があるだろうか?道路密度は,開発の指標として使われるが,人口にそれが反映しているだろうか?考えてみよう(続きは宿題へ)。

    同様の処理をClipで行ってみよう!解析ツ−ル-> 抽出-> クリップを選択

    Chiba_Roadを入力レイヤ−とし、クリップ フィーチャはmore10man、出力フィ−チャはMドライブにRoad_Clipとして保存

    同様にRoad_Clipの属性テ−ブルを開いて,道路の長さというフィ−ルドを追加、ジオメトリ演算から長さを計算してください.その後道路長さの統計情報を得ると

    合計値が16334170.303mである.これはインタ−セクトの結果とほぼ同じになります。確認のためにもRoad_Intersectの属性テ−ブルを開いて道路長さの統計情報を得ると

    16334170.322mであるため、クリップもインターセクトもほぼ同じ長さになることがわかります。

    「折り返し地点だね。」

                 

    4) Union

    Unionと書かれているデ−タフレ−ムをアクティブ化してください。

    ユニオンは2つのレイヤ−を一つのレイヤ−として結合させます。インタ−セクトと違うところは、インタ−セクトは重なった場所だけを表示しますが、ユニオンは重ね合った場所以外もすべて表示します。

    Chiba_Lake_Riverは千葉県内の湖や河で,この情報を千葉県の市町村界ポリゴンに付加します.

    ArcToolBoxの解析ツ−ル-> オ−バ−レイ-> ユニオン をクリックし、以下の2つのレイヤ−を入力した後、出力はUnion.shpとしてMドライブに保存します。

    クリックOKした後、

    千葉県の湖、川(Chiba_Lake_River) と、市町村ポリゴン(Chiba_boundary)はユニオン前に別々のデータとなっております。

    ユニオン後は、一緒のデータになっていることがわかります。

    湖,川のポリゴンが市町村ポリゴンと結合したことがわかります.

    5) Buffer

    Bufferと書かれているデ−タフレ−ムをアクティブ化してください。

    Bufferとはある一定の距離にあるデータを表示、計算できるツールです。

    例えば川から100m以内の公共施設は,何個ありますか?答えなさい。聞かれたら、Bufferが解析に向いてます。

    ArcToolBoxの解析ツ−ル-> 近接-> ブッファを開く

    入力フィ−チャに Chiba_Streamを選択

    出力フィ−チャにMドライブでBuffer_Streamという名前で保存

    距離単位として川から 100 mのため,100と入力してメ−トルを選択

    [重要] 最後にディゾルブ タイプALLとする.(ここでNONEにすると,各パーツごと、バラバラに(細かく)バッファ−が作られます。興味がありましたら、NONEにしてやり直してください。NONEとALLの違いは明らかです。)

    「ALL」とは、すべてのバッファーを1つにまとめるという意味です。

    クリックOK

    得られた結果ズ−ムインすると,川のラインに沿って線から両側100mの範囲でポリゴンが作成されております。この範囲内でどれほど公共施設があるでしょうか?

    インタ−セクトを使って,このバッファ−の結果とChiba_KoukyouShisetuのレイヤ−を重ね合わせてみましょう。ArcToolBoxの解析ツ−ル-> オ−バ−レイ->インタ−セクトをクリック

    入力フィーチャにChiba_KoukyouShisetuとBuffer_Streamを選んで、出力フィーチャクラスにMドライブでBuffer_Intersect.shpとします。

    クリックOK.

    バッファ−内の点のみが抽出できました。Buffer_Intersectの属性テ−ブルを開き、サマリを使うとバッファー内の公共施設の数が数えられます。SYURUI要約するフィ−ルドとします。

    出力テ−ブルWithin_100mとして保存しますが、以下のように、ファイルの種類を「テキストファイル」としてください(Mドライブにあるファイルが以下の図と皆さんのと違っていても気にしないでください。)

    クリックOK。結果出力されたテーブルを開いて

    上記の公共施設が川から100m以内にあるため,洪水があったら何らかの対策が必要です。

    今回の解析では,川幅まで考慮して解析していないため、より詳細に解析するには川幅も含めたバッファ−が必要です。

    「もうひといき」

            

    6) Spatial Join(空間的位置関係に基づく統計値の算出方法)

    Spatial Joinのデータフレームをアクティブ化してください。異なるGISレイヤー(異なるデータ)間から統計情報や空間的位置に基づいた距離を算出する方法を学びましょう.

    Chiba_chika_2008は2008年の千葉県内の地価(土地の価格)です。地価を調査した場所が点として地図上で表示されています。

    市町村別に地価を計算してみましょう。.

    Chiba_boundaryを右クリックしてテ−ブルの結合とリレ−ト-> テ−ブルの結合をクリック

    一番上で「テーブルの属性結合」から「空間的位置関係に基づき,他のレイヤ−からテ−ブル デ−タを結合」 に変えて,

    1. 結合するレイヤをChiba_chika_2008にします。

    2のところは以下のようにチェックを入れ、平均から分散まですべてチェックを入れることを忘れず。

    最後はMドライブにJoin_chikaとして保存します。

    クリックOK

    作成されたJoin_chika.shpの属性テーブルを開いてAvg_PLPに注目します。

    Ave_PLPが平均地価です。市町村界別の平均地価情報が上の様に表示されます。その中で最も高い平均地価と最も低い地価を選択すると

    九十九里が最も低い地価(0を除く)で、浦安が最も高い地価であることがわかります。

    最後に異なるデータ間の距離を計算してみましょう。地価と線路までの距離との関係を把握してみましょう。地価のと線路のラインまでの距離を計算するためにChiba_Train.shpというのをLドライブのChibaフォルダからデータの追加で追加してください。

    点⇒ライン までの距離を求めるため、Chiba_chika_2008.shp を右クリックして、

    1. 結合対象をChiba_Trainとして

    2. 以下のように最短距離を計算させるところにチェックを入れ

    3. Join_Train.shpをMドライブに保存します。

    クリックOK

    Join_Train.shpの属性テーブルを開くと、一番右に距離というフィールドが作成されて、距離が計算されていることに気がつきます。

    上記は座標系が緯度経度ですので、「度」の単位で距離を計算してしまったため、単位としてはおかしいですが、最短距離は以上のように計算できます。点⇒ライン は以上のように計算させることができます。このツールは 点⇒ライン 点⇒ポリゴン 点⇒点 等 様々な組み合わせで最短距離が計算できますので、大変便利なツールです。(続きは今日の宿題で)

    Bufferは事前に距離を決めてから、データを作る方法ですが、以上の最短距離はより詳細にデータ間の距離を計算できますので、より正確な距離を計算することができます。

    「お疲れ様。」

           

    今日の演習はここまでです。では、Cドライブにあるworkplaceフォルダー削除して、必要なら持ってきたメモリーにファイルをコピーして帰りましょう。コンピュータをシャットダウンすることも忘れずに!千葉大環境ISOにご協力を。Cドライブの他のフォルダーを削除しないように!コンピュータに必要なファイルを削除したら、利用委員の規約より厳重に罰せられます。気をつけてくださいね。

    「お疲れ様、また会おうね。バイバ〜イ」

                           

    To top

  •