goo blog サービス終了のお知らせ 

雑記

QGIS関連はサイト(https://sites.google.com/site/qgisnoiriguchi/)で

人口メッシュと駅のデータから、駅から2km圏内の人口を出してみる~その1 データの用意(1)~

2012-07-07 15:47:46 | QGIS_その他
1.8.0の話はこの辺にして、元の話に戻ります。

今回は、国勢調査の500mメッシュ人口データと、国土数値情報の駅のデータを使って
駅から半径2km圏内の大体の人口を出してみます。
まあGISでやる作業の初歩的なやつですね。

データのダウンロードと準備

まずは使うデータをダウンロードして、作業のための下準備をします。

500mメッシュの人口データ

500メートルの人口データは独立行政法人統計センターの
「政府統計の総合窓口(e-Stat)」 http://www.e-stat.go.jp/SG1/estat/eStatTopPortal.do
からダウンロードできます。

まず、「地図で見る統計(統計GIS)」というリンクを探してください。



ここをクリックするとこういう↓画面になります。「データダウンロード」をクリックしてください。


そうするとこういう↓ウィンドウが開くので、必要なデータを選択します。



ここでは平成17年国勢調査500mメッシュのデータを選択します。
そうすると右側の欄にダウンロードできる情報の一覧が出てきます。
フォルダのアイコンをクリックすると



データの内容が確認できます。



フォルダアイコンの右にあるチェックボックスにチェックを入れて、右下にある「次へ」をクリックします。



これは500mメッシュの人口なので一つしかありませんが、
小地域の人口など複数のチェックボックスがあるデータもあり、その場合は複数にチェックを入れてダウンロードページに移れます。



そうするとこういう画面になりますが、いきなり「1次メッシュ」とか言われて
よくわからない文字と数字の羅列がでてきます。



とりあえず、まず何をどう選ぶのか途方にくれます。
その後、統計情報研究開発センターのメッシュ地図
必要な地域の1次メッシュを探してください。

今回は神奈川県の小田急線本厚木駅とかあのあたりにします。
図郭「厚木」の地図の1次メッシュは5339なので、「081:M5339」を選択し、右下の「検索」を押します。



そうすると、右側の「Step4」のところにこんなのが出てきます。


これが使いたいデータへのリンクです。
右側がJGD2000緯度経度のshapeファイル、左側がデータのテキストファイルです。
それぞれクリックしてダウンロードしてください。
定義書もダウンロードしておくことをお勧めします。

駅から半径2km以内の人口を出したいので、座標系を平面直角座標(神奈川県は9系)に変換しておいてください。
やり方は「測地系とか座標系とか(7-1)~変換~」を参考にしてください。


長くなったので続きます。

測地系とか座標系とか(6)~投影法~

2012-05-31 20:36:40 | QGIS_その他
CRSとか測地系とか座標系について勉強し始めると、大抵の本で最初に出てくるのは
投影点と投影面の話のような気がしますが、
ここではその辺の話はざっくり切り捨てています。
なぜかというと「日本国内の地図を扱うときにあまり関係してこない」からです。

日本国内で使う地図については、座標系は
たいてい「緯度経度」か「UTM座標系」か「平面直角座標系」です。
緯度経度系は地表に原点を持ちませんので、どうやっても独自路線になりますが
「UTM座標系」と「平面直角座標系」は、どちらも横メルカトル図法の一種です。
「地図は原点から遠くなると歪みが大きくなる」という話はすでにしましたが、
ものすごく乱暴な言い方をしてしまえば
横メルカトル図法の原点を、歪みが許容範囲に収まるように点々と動かしていったのが
UTM座標系や平面直角座標系なのです。
(原点から遠くなったところの処理とかが違うのですが)


ここからはちょっとややこしい話になるので読み飛ばしていただいてもかまいません。

QGISで作成したshapeファイルには、shpファイル、dbfファイル、shxファイルという基本の3つのファイルのほかに
prjファイルとqpjファイルという2種類のファイルがついています。
これはどちらもCRS等を指定したファイルですが、
prjファイルはshapeファイルを使い始めたArcGISを作っているESRI社の独自形式で、
投影変換ライブラリであるprj.4に準拠していないものもあるので、
prj.4に準拠した書き方をしているものをqpjファイルとして別に保存しているわけです。

このprjファイルやqpjファイルは、拡張子はそれぞれですが
中身はテキストファイルですので、テキストエディタで開けられます。
ためしに平面直角座標VIII系のqpjファイルをテキストエディタで開けてみると、こんな感じになっています。
-------------------------------------------
PROJCS["JGD2000 / Japan Plane Rectangular CS VIII",GEOGCS["JGD2000",DATUM["Japanese_Geodetic_Datum_2000",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]], TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6612"]], PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4612"]],
PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",36],PARAMETER["central_meridian",138.5], PARAMETER["scale_factor",0.9999],PARAMETER["false_easting",0], PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],
AXIS["X",NORTH],AXIS["Y",EAST],AUTHORITY["EPSG","2450"]]
-------------------------------------------
「うわー…」と思うかもしれませんが、とりあえず赤字にしたところ(だけ)に注目してください。
「Transverse_Mercator」というのは「横メルカトル図法」のことです。
「PARAMETER["latitude_of_origin",36],PARAMETER["central_meridian",138.5]」で、
原点が北緯36度、東経138.5度であることを指定しています。
よく見ると測地系がJGD2000だと指定してあるらしいことが分かります。


ということで、大雑把にいえば地図の作り方は同じで、
真ん中をどこにするかを点々と動かしているだけなので(実際にはいろいろと違いますが)
日本国内のデータを扱うだけなら投影点とか投影面とかはあまり関わり合いにはなりません。
海外のデータを扱うとかで、必要になったら頑張って勉強するしかないでしょうが
これが分からないからといってGISが使えないということはありません。

測地系とか座標系とか(5)~回転楕円体~

2012-05-31 20:16:17 | QGIS_その他
回転楕円体自体はCRSで定義されるわけではありませんが
CRSに定義されている測地系は回転体の指定が前提になっていますので、一応把握しておいてください。

回転楕円体の考え方もさまざまなものがありますが、しばしば出てくるのは
「ベッセル回転楕円体」と「GRS80回転楕円体(GRS1980回転楕円体)」と「WGS84回転楕円体(WGS1984回転楕円体)」の3つです。
GRS80回転体とWGS84回転体はほぼ同じものと考えて差し支えありません。

人間の地球に対する認識は、「地面は平らである」というところから始まり「どうやら球体らしい」となりました。
その後、「地球の自転の遠心力で赤道方面にやや膨らんでいる」ということが分かりました。
この段階の回転体の定義が「ベッセル回転楕円体」です。
さらに「地球の公転軌道に対して自転軸が傾いているため、質量の大きい太陽が、地球から見ればやや南にある。
その他さまざまな要因で、地球を構成する物質はやや南によっている」ということが分かってきました。
地球は微妙に洋ナシ形をしているわけです。
この段階での回転楕円体の定義が「GRS80回転楕円体」や「WGS84回転楕円体」です。
まあ本当はもう少し凸凹しているんですが、
そんなとこまで忠実に定義しようとすると際限がないので、回転楕円体で近似してあります。

ベッセル回転楕円体とGRS80回転楕円体では、原点(地球の重心)の位置が違います。
ここでいう重心というのは質量重心のことなので、物質が南に寄っているかいないかで変わるわけです。

ちなみに測地系のところで出てきた「Tokyo」はベッセル回転楕円体を、「JGD2000」はGRS80楕円体を使っています。

測地系とか座標系とか(4)~測地系~

2012-05-30 20:47:02 | QGIS_その他
日本でよく使われる測地系には、「JGD2000」、「Tokyo」、「WGS84」があります。
その他に、JGD2000の元になったITRFというものもあります。

WGS84は、測地系・座標系・回転体等において独自路線を突っ走るという
アメリカの意思表示だと私は勝手に思っています。
国内の野球の試合をワールドシリーズといってしまう国ですから。
もともと軍事目的で作られたもので、
攻撃する時などの位置の指定をするのに十分なものであればよかったので、
数メートルのズレが出ても気にならない程度の精度しか要求されていませんでした。
その後、GPS等さまざまな用途に使われるようになったのですが、
さすがにその状態でメートル単位のズレはまずいという話になったのか、
84とか銘打っていながら1984年以降にもしばしば改変されていますので、
細かく見ていくと「いつの段階のWGS84なのか」という問題が出たりします。
現在のWGS84は、JGD2000の元になったITRFと全く同じのようです。
2~3メートルの誤差が許容される程度のものであれば、
いつのWGS84でもJGD2000同じと考えてかまいません。

GoogleMercatorなどはWGS84を使用しています。

JGD2000は、世界測地系とか新測地系とか新日本測地系とか日本測地系2000とか、
さまざまな言い方をされます。
Tokyoとの区別が分かりにくいこともありますが、その辺は文脈を読んで判断してください。
前にも書いたとおり、ITRFを元にしています。
現在、日本が国として発行しているデータ等は、基本的にJGD2000を使用しています。
ただし、JGD2000を提供した上で平行してTokyoなどのデータも提供している場合があります。

Tokyoは、日本測地系とか旧測地系とか旧日本測地系とか色々言われますが、名称以外も色々と面倒な測地系です。
まず、測量精度が今ほどよくなかった明治時代に作られた規格なので、
現在必要とされる測量精度から考えるとかなり大雑把です。
欧米の技術や考え方を参考に日本独自のものを制定したので日本でしか使えず、
他国の地図とのつながりが分からなかったりします。
また、測量の基準点について、地面に杭を打って
「ここが原点!」「ここが基準点!」という決め方(天文測量してます)をしたのですが、
地殻変動などで地面が動くと原点や基準点が動くという悲しいことが起こり、
基準点同士の位置関係が変わってしまったりしました。
GPSを含む技術の進歩や国際化の影響もあり、いろいろと支障が出始めました。
そんなこんなで、世界標準であるITRFに合わせよう、ということで、
2002年からJGD2000が使われるようになりました。
メッシュデータだけでも、位置を変えずに位置情報だけ指定しなおしてくれれば話は簡単だったんですが、
メッシュもJGD2000で作り直したので、統計データなどの連続性が切れてしまっています。
この点は注意が必要です。

日本測地系と世界測地系については、国土地理院のサイトの「世界測地系移行の概要」が分かりやすいので、
興味のある人はそちらを見てください。


測地系とか座標系とか(3)~原点~

2012-05-30 20:41:04 | QGIS_その他
メートル単位の地図は、座標系によって原点が違います。
地図単位がメートルの座標系ではUTM座標や平面直角座標が代表的です。
日本周辺のUTM座標と平面直角座標の原点は、平面直角座標系とUTM図法による座標系の原点(地図センター)を参照してください。

GoogleMercatorも、単位はメートルです。
大まかに言ってグリニッジ天文台からまっすぐ南下して赤道に当ったところが原点になります。

「立体である地球を地図という平面に表す」と、原点から遠くなればなるほど歪みが大きくなります。
UTM座標は南北方向には歪みが出にくいようにしてありますが、
東西方向に原点から離れると歪みが大きくなりますし
平面直角座標は普通に原点から離れると歪みが増えます。

緯度経度の場合は、原点は、地図には現れない「地球の重心」になります。
これは回転体によって位置が変わります。
(詳しくは「回転体」のところで)

測地系とか座標系とか(2)~地図単位~

2012-05-30 20:31:14 | QGIS_その他
日本国内を表す地図であれば、単位はたいてい「十進緯度経度」か「メートル」です。
(まれにミリメートルとかの不思議なものもありますが)

緯度経度というのは、かつて義務教育時代に習った
「イギリスのグリニッジ天文台を経度0、赤道を緯度0として」
というあれのことです。
ただし、発達した測量技術にとってはその定義はあまりにもあいまいなので、
もっと厳密に定義されています。興味のある人は自分で調べてください。

義務教育時代に習った緯度経度の表記は、たとえば世界測地系では
東京駅は北緯35度40分53秒くらい、東経139度45分58秒くらい、ということになりますが、これは60進法での表記です。

普通の生活では10進法をつかうことが多く、緯度経度や時間の表記は60進法で、コンピュータの演算処理は2進法で行われます。
データがこのあたりを行き来すると「まるめ誤差」というものが発生します。
1/3は整数でパーセント表示をすると33%になります。
1/3を3倍すると1になりますが、33%を3倍すると99%になります。
これは小数点以下を四捨五入しているために起こることですが、これと同じことが
2進法と10進法を行き来するときにも発生します。
ここに60進法を加えると更に誤差が大きくなるので、GPSやGISでデータを扱うために
あらかじめ緯度経度を10進法で計測・表記したものを使うようにしました。
これが「十進」の意味です。

緯度経度の値は、X軸方向(経度)が-180~180、Y軸方向(緯度)が-90~90になります。
単位がメートルの場合は、100,000(100km)などの数字が普通に出てきます。
単位がメートルであれば地図単位1は1メートルですが、
度であれば地図単位1は100km以上になります。

測地系とか座標系とか(1)~大雑把な話~

2012-05-30 20:22:42 | QGIS_その他
ちょっと使ったことがある人なら「面倒な話を…」と思うかもしれませんが、
GISを使う上では避けられない話なのであきらめてください。

測地系・座標系というのは、GISに限らず、地図を描くときの前提となる決まりごとのことです。
立体である地球を地図という平面に表すためには、いろいろな無理をすることになります。
作る地図の使い道によって、無理のしわ寄せをどこに追いやるか、というのを決めていく作業というのが、
測地系・座標系を選択するということです。

日本全国を表示する場合は、
日本の形がそれらしく見え、大きなずれが生じることなく全体が表示されることなどが重要になりますが、
たとえば東京駅から1km圏内の人口密度などの話になれば、
半径1kmの円がある程度正確に書け、面積がある程度の精度で算出できることが重要になります。
 地図の範囲と使い道に最も適した測地系・座標系を使えば、誤差の少ないデータを作ることができます。

shapeファイルは、基本的には
「地図上の原点(0,0)からX軸方向・Y軸方向にそれぞれどれだけ移動したところに点があるか」という値の集合体(shpファイル)と、
「それぞれの点の集合体にどのような情報を持たせるか」というデータの集合体(dbfファイル)と、
「shpファイルのどのデータとdbfのどのデータを繋ぐか」ということを指定したファイル(shxファイル)からなります。

【値の集合体】なので、単位の指定はshpファイル自体にはありません。
これを指定するのはprjファイルなのですが、prjファイルはオプション扱いなので、
必ずしも全てのshpデータについているわけではありません。
また、自分でデータを作るときには、正しいprjファイルを作らなければ、
他の人が読めなかったり、意味のあるデータにならなかったりします。

prjファイルで指定してあるのは、単位、原点、測地系等です。
他にもいろいろあるのですが、とりあえずこの3つを把握していれば大幅にずれたものにはなりません。

QGISは、デフォルトではこの辺を自動で処理してくれないので
最初はとっつきにくいですが、考え方の基本さえ理解してしまえば
変換等は大変分かりやすい作りになっていると個人的には思います。

GISで使用するCRS(測地系・座標系等の定義)は万単位の種類があります。
当然ですが日本国内のデータを使うのにそんなにたくさんは使わないので、
必要なものだけを説明していきます。

QGISでできること

2012-05-23 23:47:15 | QGIS_その他
QGISは、ローカルに保存したGISデータを読み込んだり加工したり、
データベースサーバに置いてあるGISデータを参照したりできます。

元々はビューアとして開発されたものらしく、やや非力なので
インターセクト(データの交差)などの計算量の多いものは不安定ですが、
shpを重ねたり、バッファをかけたり、クラス分けをしたり、画像に書き出したりといった
基本的なことは普通にできますし、
ポリゴンを書いたり測地系や座標系を変換したりするのは
商用GISソフトよりも使いやすいと個人的には思います。
画像に標高などのデータが付与されたラスタデータも
読み込んだりクラス分けしたり解析したりできます。

仕事でArcGISを使っていた知人にQGISを勧めてみたところ、
座標系とかの変換が何をやっているのかやっとわかったと言われました。
ArcGISが自動でやってくれることを
QGISはいちいち設定してやらなければならないので
面倒ではあるのですが、
自分が何の作業をしているのか把握しやすいように思います。

また、ジオメトリエラーのあるポリゴンにインターセクトなどの演算をかけると
ArcGISでは問答無用で「エラーです♪」と言われて完全にスルーされますが
QGISはできるところまでやろうとしてくれるので、
どの辺にエラーがあるのかという当たりをつけるのにも役に立ちます。
このおかげで、よそからもらったエラー満載のデータを
なんとか解析まで持っていくことができました。ありがたや…。

QGISはフリーです

2012-05-23 22:26:53 | QGIS_その他
QGISはオープンソースのフリーウェアです。ライセンスはGPLです。
このへんのことについてはWikipedia等を参照してください。

と言ってしまうと不親切な気もしますし、
長すぎて読みたくないという人もいるかもしれないので簡単に。


営利目的だろうがなんだろうが好きに使ってください。

著作権は放棄しませんが、プログラムの中身(ソースコード)を公開しておきますから
勝手に改変してもOKです。

ソフトを販売することも可能です。
(ただしフリーで入手できるので買う人がいるかどうかは知りません)

そのソフトを使ったサービスを有償で提供することも可能です。

改変したものを公開(販売含む)する時には
そのソースコードを公開し、更なる改変と公開を認めなければなりません。
(個人や社内等で使用するだけであればオープンにする必要はありません)


といった感じです。
ライセンスがGPLの有名なものとしてはLinux等があります。

備忘録というか

2012-05-03 00:29:10 | QGIS_その他
ずいぶん前にスペースだけ取って、そのままなんの投稿もしてなかったんですが。

QGIS等について質問されたこととかをブログかなんかに書くと言ってしまったので、ちょうどいいからこのスペースを使うことにしました。
QGISだけでなく、便利な別ソフトの話とか、オンライン上のデータの話とかもしていこうかと。

大したことは知りませんけどね。
それにあくまでも私がやってみて、これがいいんじゃないかという経験に基づいたものなので
ホントにあってるかどうかは分かりませんよ?

ちなみにWindows XP sp3でQGISの1.7.3を使ってます。
私がまだupdateしてないのと、私からインストーラを受け取った人は1.7.3なのでフォローも兼ねて。
気が向いたらUbuntuとかMEPISの方でもやりますけど、多分需要がないだろうからホントに気が向いたらということで。