森林計画図の属性データでスギ・ヒノキだけをフィルター抽出したい

375 views
Skip to first unread message

honchan

unread,
Jun 20, 2019, 1:06:01 AM6/20/19
to QGIS初心者質問グループ
QGIS初心者のhonchanです。

表題のとおり、フィルターのクエリビルダを使って森林計画図の属性データからスギ・ヒノキを抽出することを試みています。

式入力後にテストボタンを押すと「where節は〇行を返しました」と表示されるのですが、マップキャンバス上の小班図面が
まったく消えてしまいます。

以前使っていたQGIS2.18で同じ操作をするとちゃんと抽出されるのですが、バージョン3になったことで操作方法が変わった
のでしょうか?

ご教示いただきたく存じます。
よろしくお願いいたします。


QGIS3.4.png
QGIS3.4の操作結果(マップキャンバスに出てこない)

QGIS2.18.png

QGIS2.18の操作結果(正常)


kou35...@gmail.com

unread,
Jun 20, 2019, 5:30:11 AM6/20/19
to QGIS初心者質問グループ
バージョン3.4のエラーで、シェープファイルの場合は、shift-jisの日本語だとダメなようです。
フィールド名を半角英数に変更するか、utf-8で保存し直すとフィルタできるようになります。

キタ

honchan

unread,
Jun 20, 2019, 8:34:23 PM6/20/19
to QGIS初心者質問グループ
キタさま

いつもありがとうございます。

バージョン3.4固有のエラーなのですね。

スギやヒノキといった「樹種」フィールドではなく、数字の「樹種コード」フィールドで試してみても結果は同じでした。

「utf-8で保存し直す」作業がわかりません。
よろしくお願いいたします。

福岡

unread,
Jun 20, 2019, 10:09:18 PM6/20/19
to QGIS初心者質問グループ
honchan 様

こんにちは

「utf-8で保存し直す」というのは、文字のエンコードをUTF-8とした新しいShapeファイルを作成するということだと思います。
おそらく現在は、Shift_JISになっているのでしょう。

そういうことなので、対象とするレイヤの上で右クリックして「エクスポート - 地物の保存」をクリックします。

export.png


出てきたダイアログで、エンコーディングをUTF-8として保存すると新しいShapeファイルが作成されます。

encode.png


なお、このファイルをQGISで読み込んだ後には、属性テーブルを開いて文字化けしていないかをチェックすると良いと思います。
もし文字化けが生じていましたら、レイヤプロパティのソースタブで、データソースエンコーディングをUTF-8にしてください。

honchan

unread,
Jun 20, 2019, 10:49:37 PM6/20/19
to QGIS初心者質問グループ
福岡様

ありがとうございます。
確認したところ、エンコーディングはUTF-8でした。
また、上記のように新しいファイルを作成したら属性データのフィールドが文字化けしてしまいました。
データソースエンコーディングはUTF-8です。

どのように対処すればよいでしょうか?
よろしくお願いいたします。

図99.png

図100.png


sakuya_izayoi

unread,
Jun 20, 2019, 11:56:16 PM6/20/19
to QGIS初心者質問グループ
こちらizayoiです。
shp以外はダメ、という状況でなければ、元のファイルをジオパッケージ(geopackage)やgeojsonなどで保存するのも良いと思います。
方法は、福岡さまが投稿して下さっております画面で、一番上の形式の部分をジオパッケージやgeojsonにしてやるだけです。

これで試してみて下さい

福岡

unread,
Jun 21, 2019, 1:04:07 AM6/21/19
to QGIS初心者質問グループ
honchan 様

こんにちは

結果について考えてみましたが、「文字のエンコードを同一にしてエクスポートしたものが文字化けする」という現象の原因がよくわかりませんでした。

あと私から提案できるのは、プロセッシングツールの「ベクタテーブル - フィールドのリファクタリング」を使って、フィールド名を英数文字に変えるくらいです。
お力になれず大変申し訳ありません。m(__)m

Yoichi Kayama

unread,
Jun 21, 2019, 1:37:57 AM6/21/19
to QGIS初心者質問グループ
嘉山と申します

この文字化けはShapeファイルのフィールド名のバイト数の制限の問題です。
フィールド名が日本語になっていますがShiftJISコードの場合日本語のバイト数が1文字2バイトです。
UTF-8にすると日本語の1文字が3バイトぐらいになるのでShifJISの日本語より同じ文字列でも
バイト数が多くなります。

Shapeファイルのフィール名の長さは10バイトなので日本語のフィールド名がUTF8に変換した
時に10バイトを超えた場合は文字化けします。

これはレコード内の日本語についても同様のことがあるのでShiftJISのShapeファイルをUTF8に
エンコーディング変えることは実用的ではないと思います。

UTF8でデータをあつかいたい場合は他の形式を利用したほうが無難です。


sakuya_izayoi

unread,
Jun 21, 2019, 1:46:35 AM6/21/19
to QGIS初心者質問グループ
福岡様
これはUFF-8で日本語が1文字が3バイト(だったかな)になるため、Shift-JISの2バイトより長くなるために起きるものです。shpは1フィールドに10バイトまでしか格納できないため、文字化けを起こしてしまったからだと思います。
長い名前のフィールドを扱いたい場合にはジオパッケージやgeojsonなどが候補に挙がります。

福岡

unread,
Jun 21, 2019, 4:51:08 AM6/21/19
to QGIS初心者質問グループ
嘉山 様
izayoi 様

ご教示ありがとうございます。
フィールド名は英数文字を使うようにしていたので、この手のトラブル経験がありませんでした。
大変勉強になりました。m(__)m

honchan

unread,
Jun 22, 2019, 8:26:35 PM6/22/19
to QGIS初心者質問グループ
福岡 様
嘉山 様
izayoi 様
キタ 様

この度はアドバイスありがとうございます。
シェープファイルでいろいろ試しましたがうまくいかず、gpkgファイルに変換したらすんなりと抽出できました。

GISは日本語テキストに対応しない場合があると聞いてはいましたが今回初めて体験しました。
良い勉強になりました。

深謝

Reply all
Reply to author
Forward
0 new messages