矢印のDXFエキスポートについて

355 views
Skip to first unread message

megmeg

unread,
Dec 18, 2018, 9:15:54 PM12/18/18
to QGIS初心者質問グループ

いつもお世話になっております。

QGIS2.18で、shpファイルをDXFエキスポートする際、
矢印で表示させていたラインがエキスポート後は、直線のポリラインになってしまいます。
矢印表示のままエキスポートができないでしょうか?

どなたか教えていただければ嬉しいです。
よろしくお願い致します。


yajirushi.jpg

sakuya_izayoi

unread,
Dec 18, 2018, 11:10:22 PM12/18/18
to QGIS初心者質問グループ
megmegさま
こちらizayoiです。いつもお世話になっております。
スマートフォンからなので、現在分かっている事だけ。
上記内容ですが、検証したことがあるのですが無理でした。
QGIS3.4.2でも再度検証を行ってみたのですが、今のところ解決策が無い。

QGISで作成した後に画像のみをベクトルpdfなどのベクトル形式で出力して、
WinTopoというソフトでトレースをさせる。させたものをdxfで保存するといったことで対応しているのが第一候補に挙がります。
他にはGIMPという画像加工ソフトでパスを作り、パスをdxfで保存するといった力技で何とかしている次第です。
上記の私の記載部分がgimpでパスを作って保存する内容とinkscapeで作成する場合とが書いてあります。

わたしも簡単に出力できる方法があれば非常に知りたい。

他にも、ラベルや点群の安定したdxf出力方法を詳しく知りたいです。

すみませんが、応急対策法の投稿までで失礼します。

adachi

unread,
Dec 19, 2018, 2:27:01 AM12/19/18
to QGIS初心者質問グループ
megmeg様

たいがいな力技でかつ、あまり融通がききませんが

・「ジオメトリジェネレーター」で描画しているラインシンボルはどうやらDXFでエクスポートされるらしい

というのを利用してみました。


1.ラインを描く

 

2. プロパティ > シンボロジー 画面で「+」ボタンでシンボロジーを追加、「ジオメトリジェネレータ」を選択(タイプは「ラインストリング」に)
 →「ε」マークをクリック


3. 関数部分に以下の式をペースト

boundary(make_triangle(end_point($geometry), make_point( $x_at(1)-10000*cos(pi()/3-azimuth(start_point($geometry),end_point($geometry))) , $y_at(1)-10000*sin(pi()/3-azimuth(start_point($geometry),end_point($geometry)))), make_point( $x_at(1)-10000*sin(azimuth(start_point($geometry),end_point($geometry))-pi()/6) , $y_at(1)-10000*cos(azimuth(start_point($geometry),end_point($geometry))-pi()/6))))

※式の意味は「ラインの終点を1つの頂点として一辺の長さが10000の正三角形を描く」というものです
※ジオメトリタイプを「ポリゴン」にして「make_triangle(~)」でもいけるのかと思いましたが、無理でした
※この「10000」の部分が、今回のデータではたまたまこの長さがいい感じになった、というだけなので、ここをデータスケールによって試行錯誤する必要があります。



4. CADソフトで表示したとき用のために色を変えておきます



5. こんな感じになりました



6. プロジェクト > インポート/エクスポート > プロジェクトをDXFにエクスポート からエクスポートします(レイヤ右クリック > エクスポート ではうまくいかない



7. 設定はこんな感じにします(「地物シンボロジ」ではうまくいかない)



8. エクスポートされました


adachi

unread,
Dec 19, 2018, 2:38:25 AM12/19/18
to QGIS初心者質問グループ
追記: 
すみません、使われているバージョンが2.18というのに今気づきました…
「make_triangle」という関数が3.Xしかないようなので、この手法は3.X以降限定になります…

2.Xの場合は、手順3で貼り付ける式を以下にしてください(三角形ではなく単純にラインを引く式)。

make_line(end_point($geometry), make_point( $x_at(1)-10000*cos(pi()/3-azimuth(start_point($geometry),end_point($geometry))) , $y_at(1)-10000*sin(pi()/3-azimuth(start_point($geometry),end_point($geometry)))), make_point( $x_at(1)-10000*sin(azimuth(start_point($geometry),end_point($geometry))-pi()/6) , $y_at(1)-10000*cos(azimuth(start_point($geometry),end_point($geometry))-pi()/6)),end_point($geometry))

長さ10000の部分で試行錯誤が必要、というのは同じです。

kazukaz...@gmail.com

unread,
Dec 19, 2018, 10:12:16 AM12/19/18
to QGIS初心者質問グループ
sakuya_izayoi様
adachi様

お二方とも、大変分かりやすい解説、ありがとうございます!
感謝感謝です。
明日早速実践してみようと思います。
毎回、DXF変換後に、CAD上で矢印を追加・・・という作業をしていましたので(かなり手間です( ;∀;))
色々手順があるようですが、今より確実に効率は上がると思います。

大変助かりました!
ありがとうございました。

いつもこのサイトで助けていただいています。
ありがたいです。
Reply all
Reply to author
Forward
0 new messages