excelでのデジタル標高データ作成について

739 views
Skip to first unread message

ヨシナカタ

unread,
Sep 5, 2023, 3:53:46 AM9/5/23
to QGIS初心者質問グループ
こんにちは。
国土地理院の5mメッシュ標高データを、デジタル標高データとしてexcelで表示しようとしているのですが、その際にQGISを使用するとよいと聞きました。
現在、国土地理院にて数値標高モデルをダウンロード(5mメッシュ)
基盤地図情報ビューアでshpファイル(xyzファイル)化
まで行っています。
最終的に下記のような作図をエクセルで表示したいのですが、そのやり方をご回答いただきたいです。よろしくお願いします。
・一枚目 エクセルでのデジタル標高
・二枚目 拡大図
図3.jpg図2.jpg
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

futoshi kidani

unread,
Sep 6, 2023, 7:38:48 AM9/6/23
to QGIS初心者質問グループ
ほぼExcelの説明になりますが…

 

XYZのデータにまでなっているなら、以下のように整形加工して取り出せば可能です。

というか、ExcelでやるよりQGISで図を作る方が良いよ、という話ではなくて?と疑問に思いました。
 関数.jpg



2023年9月5日火曜日 16:53:46 UTC+9 ヨシナカタ:

水工学研究室

unread,
Sep 11, 2023, 1:55:36 AM9/11/23
to QGIS初心者質問グループ
返信が遅れて申し訳ありません。ご回答ありがとうございます。
ある地形の標高データをマトリクス図で表示し、その標高数値を変換し多様な地形を作成しようとしているのですが、その工程にはExcelが適していると伺いました。
ただ、標高データをマトリクス図で表示する方法が分からず、調べていたところQGISでのやり方があることを知ったので質問させていただきました。
上記の方法で試してみます。ありがとうございました。

2023年9月6日水曜日 20:38:48 UTC+9 futoshi kidani:

futoshi kidani

unread,
Sep 11, 2023, 3:06:10 AM9/11/23
to QGIS初心者質問グループ
ちなみに、上記の方法でセルに色付けするには条件付き書式などを使ったりしますがその辺大丈夫でしょうか?と思ったり、
Excelで作成したマトリクス図を加工して、他の要素を加えたマトリクス図などを作成するにはちょっと一手間要りそうですが
QGISはそもそもそういう機能を持ったツールですよ、と書き加えておきます。
(例で書いたExcelの数式も、最初のコメントで添付してあった量のデータを処理しようとすると、
かなり重くなるのでマクロで処理する必要があるかもです)

例えばこれに近年隆起したエリアのような不定形なものを範囲指定して変化量のヒートマップを作るとか
こういうのをExcelでやろうとすると、セルの指定だけで結構大変ですが、QGISだと空間演算でできます。

若い学生さんが手探りで何かしようとしているように見受けられるので、
周りにまだ聞ける人のいるExcelで大変な思いして作業するのと、
これを機にQGISを覚えてここで聞きながらやるのとどっちがいいかは個人の環境によるでしょうが、
今後こういう分野で同じことをやっていくなら、QGIS覚える方がいいと思いますし、
ここで聞くならQGISでやる方法をいろいろ教えてもらえると思いますよ。
2023年9月11日月曜日 14:55:36 UTC+9 水工学研究室:

ヨシナカタ

unread,
Sep 11, 2023, 3:30:45 AM9/11/23
to QGIS初心者質問グループ
futoshi kidani様、ご連絡いただきありがとうございます。
色付けする条件書式にいついてもまだ分からないので調べてみます。
地形の変換を行う範囲としては、約20km×10kmの範囲となり、かなり膨大な量となりますので、いつかはマクロで処理することになるとは思います。(マクロについては全く分からないですが・・・)
仰る通り、標高数値のヒートマップ作成を行おうとしているのですが、手探り状態のため何が適切な方法か分からない状態です。
調べていると、QGISでできることの方がもっと幅広くあるみたいなので、色々とQGISで試してみようかと思います。
素人質問に丁寧にご回答頂きありがとうございました。
また、分からないことがあれば質問させていただきます。
2023年9月11日月曜日 16:06:10 UTC+9 kidani...@gmail.com:

mooya

unread,
Sep 11, 2023, 9:16:06 AM9/11/23
to QGIS初心者質問グループ
こんにちは。
 形式変換(gdal_tanslate)を使って、対象ラスタを.ascに出力すると下記のようなテキスト形式の出力が得られます。
ncols        10
nrows        10
xllcorner    6408.503900000000
yllcorner    72123.134000000005
cellsize     1.000000000000
NODATA_value -2147483647
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9
 0 1 2 3 4 5 6 7 8 9

上記の0~の数値の部分をエクセルにペーストして、データ→区切り位置で、コンマやタブなど区切り文字~→区切り文字にスペースをチェック で文字列を区切れば、良いと思います。

ただ、処理によりますが、QGISでやった方がよいのではというのはkidani...さんに同意です。


2023年9月11日月曜日 16:30:45 UTC+9 keibur...@gmail.com:

ヨシナカタ

unread,
Sep 13, 2023, 3:31:08 AM9/13/23
to QGIS初心者質問グループ
mooya様、ご回答いただきありがとうございます。
回答通りのやり方で、無事Excelでの表示ができました。
ただ、このラスター形式の表示にX,Y座標は表示できないのでしょうか?
下の写真のようように一番上の行にX座標、左端の列にY座標を羅列したいです。
もし可能でしたらご教示お願い致します。

2023年9月11日月曜日 22:16:06 UTC+9 mooya:
図2.jpg

ヨシナカタ

unread,
Sep 13, 2023, 3:43:17 AM9/13/23
to QGIS初心者質問グループ
追加の質問となりすいません。
私が行いたい処理としては、例として、下図の写真の赤丸範囲の標高値を一括して3m上昇させて地形変換を行う、といったような処理を考えています。
その際には標高数値をラスター形式でQGISから抽出し、Excelで標高数値を直接変換入力しようと考えているのですが、この工程はQGISでも可能なのでしょうか?

2023年9月13日水曜日 16:31:08 UTC+9 ヨシナカタ:
図3.jpg

futoshi kidani

unread,
Sep 13, 2023, 9:25:32 PM9/13/23
to QGIS初心者質問グループ
mooyaさんの回答の.asc形式のヘッダ情報から

■列数と行数
ncols        10
nrows        10

■ラスタの左下原点座標
xllcorner    6408.503900000000
yllcorner    72123.134000000005

■セルサイズ(XY座標の増加量)
cellsize     1.000000000000

----
なので、A列をX座標用の列、行1をY座標用の行として、
標高の値をB2から書き込むこととして、

■A列には
=72123.134000000005-(10-(ROW()-1)*1)+0.5
=ラスタの左下Y座標値-(全体のセル数-(現在の行番号-行オフセット量)*セルサイズ)+セルサイズの半分(中心座標を求める場合、左上を求める場合はセルサイズ)

☆解説
座標値が左下からの為、上から求める場合は、全体の列数から現在の列番号を引いたものが下からセルを数えた場合の列番号となる。
それにセルの増加量を掛けてやると、左下からの現在のセル左下の座標が求まる。
ただ、通常は座標は左上か中心を求めるので、その値にセルサイズや半分を足して、欲しい座標値を求める

■行1には
=6408.503900000000+((column()-1)*1)+0.5
=ラスタの左下X座標値+(現在の列番号-列オフセット量)*セルサイズ)+セルサイズの半分(中心座標を求める場合、左上を求める場合は0)

☆解説
X座標の場合は、左側からなので原点座標にセル数分増加量を足していってやればOK
中心の座標を求めたい場合は、その値にセルサイズの半分を足して欲しい座標値を求める

----
面倒ならばYは一番下の標高値が入っているセルの一つ下にYの原点の数値を入れて、
次の行から上に
=(下のセルを参照)+セルの増加量
※中心座標が欲しい場合はセルの増加量をセルサイズの半分
の数式をコピー

Xは左上の最初の標高値が入っているセルの上にX座標の原点の数値を入れて、
(中心座標が欲しい場合はその初期値にセルサイズの半分を足しておく)
あとはその左から
=(左のセルを参照)+セルの増加量
※中心座標が欲しい場合はセルの増加量をセルサイズ+セルサイズの半分
の数式をコピー

とすれば求められます。

やはりExcelの解説になりますね…w

---
> 追加の質問となりすいません。

例の画像に赤丸範囲が無いので詳細は不明ですが、QGISで可能な作業ですよ。
2023年9月13日水曜日 16:31:08 UTC+9 keibur...@gmail.com:

futoshi kidani

unread,
Sep 13, 2023, 9:54:43 PM9/13/23
to QGIS初心者質問グループ
あ、ここ間違ってましたorz
----
面倒ならばYは一番下の標高値が入っているセルの一つ下にYの原点の数値を入れて、
次の行から上に
=(下のセルを参照)+セルの増加量
誤:※中心座標が欲しい場合はセルの増加量をセルサイズの半分
正:※中心座標が欲しい場合は最下部で原点座標を参照してセルサイズを加算する際にセルサイズの半分、以降はセルサイズを加算
の数式をコピー

----
このあたり、別シートに設定用セルを設けてうにゃらこにゃらするとか、やっぱりマクロの方がいいとかありますが
取り急ぎ…

とりあえずヘッダからどういう情報が読み取れるか分かれば、あとはExcelでどうにかはなりますね
2023年9月14日木曜日 10:25:32 UTC+9 futoshi kidani:

mooya

unread,
Sep 14, 2023, 10:42:53 AM9/14/23
to QGIS初心者質問グループ
こんにちは。
 QGISでできるか の方の回答でで、任意のポリゴン範囲のラスタ値を3増加させる方法を説明します。
 ラスターそのものは取り扱いしづらいので、ベクタで値を用意して書き込む手順をとります(いろいろやり方はあるともいます)
入出力データ
 R_in.tif 入力ラスター
 R_out.tif 出力用のラスターで、事前に R_in.tifをコピーして作成。レイヤとして読み込まない。
 Pg_in 値を3増加する範囲を示すポリゴンレイヤ

手順(書いていない設定項目はデフォルト値)
1.ラスタをベクタ化(pixels to points) ラスタレイヤ:R_in.tif 出力:Pt1
2.場所による抽出 抽出する地物のあるレイヤ:Pt1 比較対象の地物のあるレイヤ:Pg_in 出力:Pt2
3.Pt2を選択してフィールド計算機 既存のフィールドを更新にチェック フィールド:VALUE 式: "VALUE" + 3 →レイヤ編集内容を保存
4.ラスタ化(属性で上書き) 入力ベクタレイヤ:Pt2 入力ラスタレイヤ:R_out.tif 焼きこむ値の属性(フィールド):VALUE

  ラスタ化(属性で上書き)は、入力ラスタレイヤを上書きするすので、事前にコピーしておく必要があり、またレイヤとして読み込まず、ファイルを直接指定します。


2023年9月14日木曜日 10:54:43 UTC+9 kidani...@gmail.com:

futoshi kidani

unread,
Sep 14, 2023, 10:07:57 PM9/14/23
to QGIS初心者質問グループ
もし両方とも座標付きラスタでピクセルサイズが揃っているなら、比較的簡単にラスタ計算機で2枚のラスタのピクセルの値を加算減算乗算除算できますね。
2枚のラスタを読み込ませた状態でラスタ計算機を立ち上げると、「バンド」のところにラスタとそれが持っているバンドがリストされるので、それを式に入れて計算掛ければ可能ですかね。
ただ、if分でNoData(として扱う値)は元ラスタの値のまま、というのを書いてやらないと他の部分が変な値になるかもです。
例:if(足したいラスタ=NoDataの値,元データ,元データ+足したいラスタ)

元データがXYZの値を持っているASCデータやCSVなどでしたら、グリッド作ってそれに値持たせて作業する方が楽ですかね。

値を3増やす、という元データは、ラスタでしょうか?それともファジーに手書きでこの辺り、と囲む感じでしょうか?測量座標など座標値を持ったポリゴンでしょうか?

元データによって、最適な手順は変わってくると思います。

と、書きましたが、Excelベースで処理しようとしていたところに、正直いきなりGISの処理の話をされても用語からして???となっていると思います。
とりあえず「できます」ので、どんな元データを使って処理したいのか書いて下さると、それに適した回答も付くと思います。
2023年9月14日木曜日 23:42:53 UTC+9 mooya:

ヨシナカタ

unread,
Sep 20, 2023, 5:07:48 AM9/20/23
to QGIS初心者質問グループ
お世話になっております。
mooya様、 futoshi kidani様、ご回答ありがとうございます。
また返信が遅れて申し訳ありません。
お二人の意見を参考に、現在の進捗は
・Excel でのラスター形式で抽出したマトリクス図に座標値の入れ方
・mooya様の手順3まで
は抽出でき、理解できました。現在は調べながら進めている段階です。
使用しているデータは国土地理院データから5mメッシュデータを使用し、TIFファイルに置き換えてQGISでの作業をしております。
最終的には、例えば下の図のように青の塗りつぶし部分の標高数値を上げ下げして地形標高値を変換させたいと考えています。
地形変換したレイヤはshpファイルで抽出し、他のソフトを用いて使用します。
標高値の指定範囲の決め方は下の画像でいうと、手書きで青塗りつぶし部分を指定し、この辺りを上げる、という風にできるのが理想です。
まだQGISを勉強中のため、分からない用語が多いのですが、お二人のご回答のおかげで少しずつ進めれいる気がします、ありがとうございます。
2023年9月15日金曜日 11:07:57 UTC+9 kidani...@gmail.com:
sample.jpg
Message has been deleted

futoshi kidani

unread,
Sep 22, 2023, 8:31:14 AM9/22/23
to QGIS初心者質問グループ
頑張って下さいね

青塗部分をポリゴンで作成すれば、加算減算処理で目的の事が出来ますかね…

またその時にご質問ください~

2023年9月20日水曜日 18:07:48 UTC+9 keibur...@gmail.com:
Reply all
Reply to author
Forward
0 new messages