gdalを用いたdxfファイルの作成について

472 views
Skip to first unread message

フリード・ティンクス

unread,
Mar 29, 2019, 7:48:43 AM3/29/19
to QGIS初心者質問グループ
こちらフリードです。
過去の質問を見ていて、shpやgeojsonをdxfに変換できるというのを知りました。
ポイントデータのshpがある時に、属性データに種別というフィールドにテキストデータがかかれています。
QGISでテキストを表示させているのですが、上手にQGISからdxfでテキストを出力することができません。
QGISをインストールするときについてきたshellで点群データをラスタに変換したように、点群shpの特定のフィールドにあるテキストを
dxfファイルにする方法はありませんでしょうか?
過去の投稿情報を元に、shp→dxfへの変換は出来たのですが、それでは点群がdxfとして出力されるだけで、テキストデータは表示されませんでした。
なんとか点群とテキストを同時に出力する方法はないものでしょうか?

sakuya_izayoi

unread,
Mar 29, 2019, 9:27:08 PM3/29/19
to QGIS初心者質問グループ
フリードさま
こちらizayoiです。お望みの事がらの確認をさせてください。
「属性フィールドに入力されている、任意の(自分がここだと指定した)フィールド列の数値やテキストをdxfに出力したい」
という事でしょうか?

このような事でしたら興味あるなと思いちょっとだけですが調べてみました。外からなのでスマートフォンから見ただけなので実施はできていないので情報提供にとどまっています。
上記に英語ページですが参考記事が載っています。

すみませんが、もっと詳しい方、もっと簡単な方法があれば教えてください。

sakuya

unread,
Mar 30, 2019, 8:49:35 AM3/30/19
to QGIS初心者質問グループ
こちらsakuyaです。あたしも興味があったので文章を読んでみました。
情報提供ではないですが、引っかかってしまったところがありますので教えてください。
最初の方に、gmlファイルをポイントデータ?に変換するコマンドがあります。
ogr2ogr -f DXF CartographicText.dxf os-mastermap-topography-layer-sample-data.gml CartographicText
サンプルデータをダウンロードして同じコマンドを入力したのですが
Unable to open datasource `os-mastermap-topography-layer-sample-data.gml' with the following drivers.
とogr2ogrドライバがgmlに対応していないという??な結果が表示されてしまいました。
QGISではしっかりと表示されるのでなんでという感じです。
最後の
CartographicText
の部分、なんであるのか分かりません。これは何で付けるコマンドなんでしょうか?

sakuya

unread,
Mar 30, 2019, 10:19:06 AM3/30/19
to QGIS初心者質問グループ
sakuyaです。izayoiから掲示板に投稿できないという事で、個人あてに返信されてきたので代わりに投稿します。
______________

こちらizayoiです。
sakuyaへ。最後の部分にだけ回答します。
ogr2ogr -f DXF CartographicText.dxf os-mastermap-topography-layer-sample-data.gml CartographicText
となっている部分ですが、
os-mastermap-topography-layer-sample-data.gml
というデータベース内にある
CartographicText
というレイヤテーブルを指定しています。という意味です。

ogr2ogrでgmlってよめない?geojosonとかにQGISで変換して実施してもダメっぽいでしょうか?
QGISでCartographicTextというレイヤをtest.geojsonにして保存してください。
ogr2ogr.exe -f dxf test.dxf test.geojson -sql "SELECT 'LABEL(f:""Arial"",s:""'||(height*800)||'"",t:""'||textString||'"",a:""'||(orientation/10)||'"",p:5)' AS OGR_STYLE, * FROM 'os-mastermap-topography-layer-sample-data'" -dialect SQLITE
参考ページの参照ファイル名を修正したぐらいですが、これでうまくいけば嬉しい。geojsonに変換しただけなので、レイヤ名はもとのままであると思うけど、
ogrinfo test.geojson
でレイヤネームを確認して、違っていたらfromのあとを修正してください。
(ちょっと今試せる環境に無いの、投げっぱなしでですみません)

最後の -dialect SQLITE
や途中にあるアスタリスクマーク(*)はなんでいるんだろう?

う~ん、この文章で流せたら、ずいぶん汎用性あるコードのような気がする。

______________

上記内容を実行した結果うまく流れました。フリードさま、参考になれば。

フリード・ティンクス

unread,
Mar 30, 2019, 9:26:19 PM3/30/19
to QGIS初心者質問グループ
十六夜先生 sakuyaさん
フリードです。お疲れ様です。
使い方の解説ありがとうございました。

ogr2ogr.exe  -f dxf test.dxf test.geojson -sql "SELECT 'LABEL(f:""Arial"",s:""'||(height*800)||'"",t:""'||textString||'"",a:""'||(orientation/10)||'"",p:5)' AS OGR_STYLE, * FROM 'os-mastermap-topography-layer-sample-data'"  -dialect SQLITE

の部分で height*800という部分は、heightフィールドから数字を貰ってきて800倍した数値にするという事でしょうか?それでCADに変換した後は文字の大きさが1/1000になっているところ見ると、dxfに変換するときには自動的に1/1000されているという事?
前後逆になりますが、
-sql "select
の部分でsqlというデータベース?の構文でテキストを作る構文を作って、最後の方のASでというのをOGR_STYLEというのにしているよという事と認識しました。

ありがとう。

フリード・ティンクス

unread,
Apr 3, 2019, 3:28:07 AM4/3/19
to QGIS初心者質問グループ
こちらフリードです。お疲れ様です。
ポリゴン形状のときにQGISでポリゴンの重心に文字を表示させて、これをdxf出力しようとしたのですが、うまく出力することができるときとできないときがあります。
そこで点群の時と同じようにポリゴンでもテキストを出力したいと思ったのですが、ポリゴンの時に上記のようなコマンドを入力してもハッチングしか表示されませんでした。
重心位置にテキストを出力してくれるようなコマンドもあるのでしょうか?

sakuya_izayoi

unread,
Apr 3, 2019, 3:38:03 AM4/3/19
to QGIS初心者質問グループ
こちらizayoiです。
そとからなので簡潔にですが、
geojsonの場合でしか確認していないのですが、

AS OGR_STYLE, st_centroid(geometry),* FROM

のように
st_centroid(geometry)
を付けてみて下さい。これで重心に表示されるはずです。

フリード・ティンクス

unread,
Apr 3, 2019, 7:39:15 AM4/3/19
to QGIS初心者質問グループ
十六夜先生
フリードです。st_centroid(geometry)でポイントを作る足をつくったという事でしょうか?
お礼が遅れて申し訳ないです。転勤前に、図面を仕上げてから行きたかったのでたすかりました。明日会社に帰ってきたら続きをやります。

フリード・ティンクス

unread,
Apr 3, 2019, 7:40:01 AM4/3/19
to QGIS初心者質問グループ
ごめんなさい。転勤じゃなくて出張でした。
Reply all
Reply to author
Forward
0 new messages