Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

shpファイル(XY座標データ)をCSVファイル(緯度経度)で保存したい

5,883 views
Skip to first unread message

Satoshi Masuda

unread,
Jun 23, 2021, 7:59:55 AM6/23/21
to QGIS初心者質問グループ
XY座標で作成されたshpファイルを読み込んで、CSVにエクスポートする際に
緯度経度に変換して保存したいのですが、可能でしょうか?

福岡

unread,
Jun 23, 2021, 9:18:03 PM6/23/21
to QGIS初心者質問グループ
Satoshi Masuda 様

こんにちは

レイヤパネルの対象レイヤの上で右クリックして「エクスポート - 地物の保存」でご要望のことができると思います。
次の画像をご覧ください。

fig.png

「形式」を「カンマで区切られた値【CSV】」を選びます。
ファイル名は右端の「・・・」ボタンをクリックして、フルパスで設定します。
「座標参照系(CRS)」をWGS84、JGD2000、JGD2011などの地理座標にします。
そして地物はポイントという想定なのですが、「レイヤオプション」の「GEOMETRY」を「AS_XY」にします。
※ポリゴンやラインの場合は「GEOMETRY」を「AS_WKT」、「SEPARATOR」を「TAB」にします。

これで「OK」ボタンを押すと、右端のX列、Y列にそれぞれ経度と緯度が書き込まれたCSVファイルが出力されるはずです。

2021年6月23日水曜日 20:59:55 UTC+9 Satoshi Masuda:
XY座標で作成されたshpファイルを読み込んで、CSVにエクスポートする際に
緯度経度に変換して保存したいのですが、可能でしょうか?

Satoshi Masuda

unread,
Jun 24, 2021, 12:01:42 AM6/24/21
to QGIS初心者質問グループ
福岡様

こんにちは。
ご丁寧にご説明頂きましてありがとうございます。

ご説明頂きました手順で試してみたのですが、うまくいきませんでした。

説明不足でしたので、もう一度ご説明いたします。

QGISで表示している状態が下記の画像です。

001.JPG

属性テーブルを開いていますが、ここのXYを緯度経度に変換したいのです。
教えていただいた手順で試した結果、XYがそのまま出力されている状態でした。

ちなみに使用しているデータは下記よりダウンロードしたものです。


手順を含めて検証可能でしたら、引き続きご教示いただけますと幸いです。
よろしくお願いいたします。


2021年6月24日木曜日 10:18:03 UTC+9 福岡:

adachi

unread,
Jun 24, 2021, 1:52:42 AM6/24/21
to QGIS初心者質問グループ
XY座標、といった場合通常はポイントデータを扱っているものと捉えられるかと思います(ポリゴンだと「どこの座標を取ればよいのか」という問題がまず出てくるので)。
ですので、福岡様の手順はポイントデータに対して正しく作用します。

出力がポイントデータでよければ(csvの出力、とおっしゃっているのでおそらくそれでOKかと思いますが)
「ベクタ」メニュー → ジオメトリツール → 重心
でそれぞれのセルの重心ポイントデータを作ってから福岡様が提示された手順を適用。

もとのポリゴンに緯度軽度を付加したい、というのであれば
・上記で作ったポイントデータから空間結合で緯度軽度データをポリゴンに再度付加するか
・もとのポリゴンを地理座標系に変換後、「フィールド計算機」で x($geometry), y($geometry) という数式を入力して付加するか
どちらかが手っ取り早いかと思います。
(座標系の変換やフィールド計算機の使い方などは基本的操作なので調べればたくさん出てくると思います)

2021年6月24日木曜日 13:01:42 UTC+9 Satoshi Masuda:

福岡

unread,
Jun 24, 2021, 1:54:12 AM6/24/21
to QGIS初心者質問グループ
Satoshi Masuda 様

こんにちは
先ほどはお役に立てず申し訳ありませんでした。m(__)m

変換するのであれば、ポリゴンの重心からポイントの地物を生成し、そのポイントのデータから先ほどの手順に進むことになると思います。
ただそうすると、中間生成物ができるので管理が大変かもしれません。

そこでフィールド計算機を使って、属性テーブルに書き込む方法を試してみました。
結果を確認ましたが、正しく数値が出力されていると思います。

まず「フィールド計算機」を立ち上げます。真ん中のそろばんの形をしたアイコンです。
fig01.PNG

以下は設定例です。フィールドの名前やフィールド長、精度は都合の良い設定にしてください。

出力するフィールドの名前:longitude
フィールド型:小数点付き数値(real)
フィールド長:12 精度:8
式:x( transform( make_point( "X" , "Y" ), 'EPSG:6670', 'EPSG:6668'))

fig02.png

式の意味を追いかけてみます。
まず属性テーブルのXとYを使って、ポイントのジオメトリを作ります(make_point)。
次にJGD2011平面直角座標2系(EPSG:6670)からJGD2011地理座標(EPSG:6668)へ変換します(transform)。
変換した地物からx座標の値を得ます(x)。

同様にして、y座標の値を属性テーブルに書き込みます。

出力するフィールドの名前:latitude
フィールド型:小数点付き数値(real)
フィールド長:12 精度:8
式:y( transform( make_point( "X" , "Y" ), 'EPSG:6670', 'EPSG:6668'))

フィールド計算機を実行すると、自動的に鉛筆マークのアイコンがアクティブになります(編集モード)。
アイコンをクリックして編集モードを終了し、shapeファイルを保存してください。

fig03.png

後は、属性テーブルのデータを表計算ソフトへ貼り付けるのが簡単かと思います。

属性テーブルを開いて「Ctrl + A」で全てのデータを選択し、「Ctrl + C」でコピー。
表計算ソフトのA1セルに「Ctrl + V」で貼り付け。
A列に空間情報がWKTで書き込まれるので、列ごと削除。

少し長くなりましたが、この方法が1番楽かと思います。よろしければお試しください。
2021年6月24日木曜日 13:01:42 UTC+9 Satoshi Masuda:
福岡様

福岡

unread,
Jun 24, 2021, 2:01:18 AM6/24/21
to QGIS初心者質問グループ
adachi 様

すみません。投稿がダブってしまいました。
また、足りなかった情報のフォローありがとうございます。m(__)m

2021年6月24日木曜日 14:54:12 UTC+9 福岡:

Satoshi Masuda

unread,
Jun 24, 2021, 2:46:11 AM6/24/21
to QGIS初心者質問グループ
adachi様

ご回答いただきましてありがとうございました。
福岡様の手順と併せて目的を満足するデータのエクスポートができました。
まったくの初心者なので質問が分かりにくかったと思いますが、ご丁寧に教えていただきありがとうございました。



2021年6月24日木曜日 14:52:42 UTC+9 adachi:

Satoshi Masuda

unread,
Jun 24, 2021, 2:49:25 AM6/24/21
to QGIS初心者質問グループ
福岡様

ご丁寧な説明本当にありがとうございました。
おかげさまでうまくいきました。
QGISは昨日初めて使い始めたので、質問の意味が分かりにくかったと思います。
画像付きの詳細な手順のおかげで、迷うことなく作業が出来ました。
本当にありがとうございました。

また初心者レベルの質問が出てくると思います。
よろしければ今後ともよろしくお願いいたします。
ありがとうございました。


2021年6月24日木曜日 14:54:12 UTC+9 福岡:
Reply all
Reply to author
Forward
0 new messages