TINテキストから傾斜区分図の作成

1,556 views
Skip to first unread message

takesh ishmoto

unread,
Nov 22, 2016, 2:16:43 AM11/22/16
to QGIS初心者質問グループ
お世話になります。

下記のようなTINテキスト(砂防基盤図)から傾斜区分図の作成を作成することは可能でしょうか?

X1    Y1    Z1   X2    Y2    Z2   X3    Y3  Z3
26020.030 -69566.720 538.670 26000.000 -69572.820 538.660 26000.000 -69588.630 538.660
26025.130 -69565.170 539.580 26020.030 -69566.720 538.670 26023.110 -69567.060 539.580
26065.490 -69552.880 539.580 26025.130 -69565.170 539.580 26063.410 -69562.700 539.580
26068.900 -69551.850 541.040 26065.490 -69552.880 539.580 26069.020 -69553.240 541.030
26076.760 -69549.450 541.590 26068.900 -69551.850 541.040 26074.020 -69554.500 541.300
26079.400 -69548.650 541.680 26076.760 -69549.450 541.590 26077.060 -69549.910 541.610
26089.400 -69547.950 542.000 26079.400 -69548.650 541.680 26082.890 -69553.700 541.780
26092.630 -69547.730 542.050 26089.400 -69547.950 542.000 26089.650 -69548.830 542.000
よろしくお願いいたします。




東雲

unread,
Nov 22, 2016, 9:44:49 AM11/22/16
to QGIS初心者質問グループ
ishmoto 

ちょっと考えてみましたが、砂防基盤図の頂点を全部ポイントにしてTINのラスタを作るのが一番手っ取り早い気がします。

数字の区切りをタブに置換しておくと、全選択して表計算ソフトに貼り付ければ表形式になります。
スペース→タブの置換ができるテキストエディタが便利です。(私はTeraPadを使っています。)
カラム名も忘れずにタブ区切りにしてください。

その状態にしてから、X1, Y1, Z1 の下にX2, Y2, Z2 とX3, Y3, Z3 を移動なりコピペなりして、
「デリミティッドテキストレイヤの追加」でポイントとして読み込みます。
そのポイントで、「ラスタ」→「データ補間」を使ってTINでZの値を補間し、そのラスタで傾斜区分図が作れます。

fukuoka....@gmail.com

unread,
Nov 24, 2016, 3:12:58 AM11/24/16
to QGIS初心者質問グループ
takesh ishmoto 様

関心がありましたので、実際のデータで試してみました。
まず、TINからラスタを作るという手順に関しては東雲さんのおっしゃるとおりだと思います。
TINをShapeにしたものDEMを生成する手順については、youtubeにもアップされていました。
https://www.youtube.com/watch?v=conNAabDA54

ただ、実際にやってみると住宅を貫通する大きな傾斜が現れたりして、しっくりときません。
そこで考えたのが、等高線からDEMを生成できれば自然な傾斜になるのではないかということでした。

1 基盤図のファイルの中から、拡張子がkihとなっているファイルを公共測量ビューアを使ってShapeに変換し、等高線を含んだファイルを得ます。
2 標高値がcm単位となっているので、ラスター計算機でm単位に計算します。フィールド名は英数字にしてください。
3 ファイル名とファイルへのパスを2バイト文字を含まないようにします。
4 プロセッシングツールのGRASS7から「v.to.rast.attribute」を使って、等高線を標高を値に持つラスタに変換します。
5 続いてプロセッシングトールのGRASS7から「r.surf.contour」を使って、DEMを生成します。

出力されたDEMで傾斜図を作ってみると、こちらの方が自然に感じました。
「r.surf.contour」の処理時間が少し長いですが、TINから生成したDEMに不満を感じたらお試しください。

takesh ishmoto

unread,
Nov 25, 2016, 6:34:45 AM11/25/16
to QGIS初心者質問グループ
東雲 様

上手くいきました。
ありがとうございます。

また部分的に選択できる、terapad、エクセルいらずで便利ですね。

fukuoka様

GRASS7での紹介ありがとうございます。

試している途中なのですが、たわいもない質問で恐縮ですが
フィールドの日本語名を変える場合、どうされていますか?

とりあえず、きた様の作成された、dbf編集のエクセルを使用しているのですが、
日本語の部分を、1,2、3みたいな感じでいれたところ、エラー(添付ファイル)が発生します。

あと、2のm単位ということで、フィールド計算がよくわからないので、等高線shpのフィールドの”属性_Z_”というフィールドの値をあらかじめ、m単位にしておけばいいのでしょうか?

お手数おかけしますがよろしくお願いいたします。












fukuoka....@gmail.com

unread,
Nov 25, 2016, 7:37:37 AM11/25/16
to QGIS初心者質問グループ
こんばんは

東雲さんの方法でうまくいって良かったです。
私の場合、試したデータ内に宅地が結構あって、宅地内に標高を持つ点がなかったので不自然な結果になったのだと思います。

さてフィールド名ですが、私は「Table Manager」というプラグインを使っています。
フィールド名の変更や順序を変更することができて重宝しています。
ただ最近(2.16以降)は、レイヤのプロパティでフィールド名をダブルクリックして編集できるようです。

属性Zについてですが、データテーブルの内容を見ると、等高線は2m単位ですからcm単位だと思います。
傾斜は「標高差/推計距離」で計算されていると思いますので、どこかで単位を揃えてやる必要があります。
タイミングとしては、ラスタで行うと新しいファイルを出力して煩雑なると思ったので、フィールドの追加で済むShapeファイルで行うこととしました。

フィールド計算機(前の投稿を見直したら、誤ってラスター計算機と書き込んでいました。すみません。)を使って単位を揃えるのですが、
新しいフィールドに「属性Z/100」の計算結果を出力すると良いと思います。
新しいフィールドに出力するのは、2バイト文字を含まないようにするためで、私は単に「z」としました。

フィールド計算機の使い方ですが、「新しいフィールドを作る」にチェックし、出力フィールド名に「z」と入力します。
下の真ん中にあるウィンドウの中にある「フィールドと値の左にある「+」をクリックして展開します。
その中に「属性Z」があると思いますので、これをダブルクリックします。そうすると式ウィンドウの中に「”属性Z”」が出てくると思います。
つぎに式ウィンドウの上にある「/」ボタンをクリックします。これで式ウィンドウは「”属性Z" / 」となります。
最後に式ウィンドウをクリックしてアクティブにし、直接「100」と入力します。式は「”属性Z" / 100」となっているとOKです。

「OK」ボタンを押すと新しいフィールド「z」に計算結果が出力されているはずです。
最後に鉛筆マークをクリックして編集モードを終了させ、変更結果を保存します。

takesh ishmoto

unread,
Nov 28, 2016, 8:19:49 PM11/28/16
to QGIS初心者質問グループ
fukuoka様

フィールド名とフィールド計算、
おかげさまで上手くいきました。

ありがとうございました。



Reply all
Reply to author
Forward
0 new messages