a_hamada/ 2023年 4月 7日/ 技術

こんにちは!濱田です。

今回もQGISについて書いていこうと思います。

csvファイルの読込

まずはQGISでのcsvファイルの読込についてご紹介していこうと思います。
csvファイルもshpファイルと同様にドラッグアンドドロップで読込ができれば良いのですが、
csvファイルはそのままドラッグアンドドロップしても読込ができません。
ではどうやって読み込むかというと、
まず上部メニューから「レイヤ」→「データソースマネージャ」を選択します。
するとデータソースマネージャウィンドウが立ち上がるので、
左側のメニューから「CSVテキスト」を選択します。

データソースマネージャウィンドウ

メニュー内の「ファイル名」の「…」からファイルを参照するか、
「ファイル名」のテキストボックスにファイルをドラッグアンドドロップするとファイルが読み込まれます。
ここで一点注意なのがQGISに読み込むファイルなので、
読み込むcsvファイルは属性値として座標情報(緯度、経度)を持っていないと読み込むことができないのでそこだけ注意が必要です。
今回は私が作成した札幌にある「JR札幌駅」、「テレビ塔」、「時計台」の座標情報を記載したcsvファイルを読み込んでみます。

データソースマネージャ-csv読込後

ファイルを読み込んでジオメトリ定義メニューの「X属性」、「Y属性」が設定されていることを確認して「追加]をクリックします。

読み込めると画像のように「JR札幌駅」、「テレビ塔」、「時計台」を点情報として読み込めると思います。
(見やすさのために前回読み込んだ点情報は非表示にしています。)

csv読込後

読み込んだcsvファイルの属性値変更のためshpファイル形式でエクスポート

続いて先ほど読み込んだcsvファイルの属性値をQGIS側から編集する方法をご紹介します。
まず読み込んだcsvファイルはそのままのレイヤだと編集ができないので、
一旦読み込んだcsvファイルをshpファイルに変換します。
左下のレイヤメニューから読み込んだcsvファイルのレイヤを選択して、
右クリック→「エクスポート」→「新規ファイルに地物を保存」を選択。

新規ファイルに地物を保存_Toshp

するとベクタレイヤ保存ウィンドウが表示されます。

csvエクスポート

形式に「ESRI Shapefile」を選択して適当なファイル名を設定、保存先を指定(一時ファイルなのでなんでもOK)して「OK」ボタンクリック
(「保存されたファイルを地図に追加する」のチェックボックスにチェックを入れるとファイルを読み込ませる手間が省けるので便利です。)
するとcsvファイルと全く同じ情報を持ったshpファイルのレイヤが追加されます。

エクスポート後レイヤメニュー

ここまでできてようやく属性値変更の準備が完了です。

属性値を変更してcsvファイル出力

ここから本題の属性値の変更を行っていきます。
まず先程追加したshpファイルのレイヤを右クリック→「編集モード切替」をクリック。

編集モード切替

これで追加したshpファイルが編集可能になったので、続いて実際に値を変更していきます。
再度追加したshpファイルのレイヤを右クリック→「属性テーブルを開く」をクリック。

属性テーブル

すると画像のような属性テーブルウィンドウが表示されます。

属性テーブルウィンドウ

ここで編集したい属性値の箇所をダブルクリックして直接値を入力すれば値を編集できますし、
その他任意の複数行を選択して、その行の特定の属性値を一括で編集することもできます。
ひとまず今回は私が勝手に割り振った施設ごとのIDを手動で編集してみます。
作成時に初期値としてすべて99で設定しているのでわかりやすく上から1,2,3で設定していきます。
画像のようにIDを編集したら上部メニューの一番左側の「編集モード切替」をクリックして変更を保存するか、
上部メニューの左側から3番目の「編集内容を保存」をクリックして変更を確定します。

属性テーブルウィンドウ_id変更後

変更を保存したらウィンドウを閉じて再度編集したshpファイルをcsvファイルに戻します。
やり方はcsvファイルをshpファイルに変換したときと逆のことをするだけです。
編集したshpファイルのレイヤを右クリック→「エクスポート」→「新規ファイルに地物を保存」をクリック。
(ここで先ほど属性テーブルで「編集モード切替」を行っていない場合は先に行ってください。)

新規ファイルに地物を保存

今回はファイルの保存形式を、「カンマで区切られた値[CSV]」に設定して任意のファイル名を設定して「OK」をクリック。

csvエクスポート

※CSVファイルなので「保存されたファイルを地図に追加する」のチェックを外しています。
※保存するファイル名を読み込んだファイルとは別にしていますが、これには理由があります。
 とは言っても好みによるのですがいきなり同じファイル名にして保存しても良いのですが、
 同一ファイル名を設定して上書きする場合、上書きするかどうか確認するウィンドウが出てくるのですが、
 上書きの種類が二つあって、「上書き」と「レイヤを上書き」とあります。
 ここで「上書き」にすると良いのですが、誤って「レイヤを上書き」とすると
 最終的に保存されるファイルは編集されていないものになります。
 個人的にこの動きがあまり好きではないので私はいつも一旦別ファイル名で保存するようにしています。

これで保存されたファイルを確認すると編集したIDの修正が反映されていると思います。
念のためファイルを開いて確認してもちゃんと反映されていますね。
(属性テーブルで表示される順番がcsvファイルの順番通りじゃないのでごっちゃになってますね…)

編集後CSV

まとめ

今回はcsvファイルの属性値をQGISから編集する方法について書いていきました。
ちょっと小技っぽいところもあるので、困っている方の助けになれば幸いです。
次回ももう少しQGISについて書いていこうと思います。

それではまた!

About a_hamada

2020年9月からWebプログラマに転向した半人前 日々勉強することばかり。 最近使っている言語はもっぱらPython