フォーマット変換(gdal_translate)について

348 views
Skip to first unread message

k m

unread,
Apr 5, 2021, 2:47:31 AM4/5/21
to QGIS初心者質問グループ
別のソフトからエクスポートしたshpファイルをQGISに取り込んだところ、地物の数は有るのに表示されず、レイヤスタイルで色や大きさを変え、座標系を変更しても全く解決しませんでした。

そのため「プロセシングツールボックス→ベクタ変換→フォーマット変換(gdal_translate)」で変換を行ったところ、データが表示されるようになりました・・・が、17個あったフィールドが10個に減ってしまいました。。。
一部の要素が「<null>」だったことが原因かと思い、入力を行いましたが、同様に消されてしまいました。(表示されていないだけ・・?)

ご存知の方、似たような方がいらっしゃいましたら、アドバイス頂きたいです。。。

福岡

unread,
Apr 5, 2021, 7:43:52 PM4/5/21
to QGIS初心者質問グループ
k m 様

こんにちは

読んで思ったのですが、わからないことが多くて回答しづらいように思いました。

まずエクスポートしたShapeファイルですが、空間参照が定義されているのかどうかがわかりません。
拡張子が「prj」というファイルは付いているでしょうか?

次にフィールドが減ったということですが、属性テーブルの列が減ったということでしょうか?
言葉だけをみると列が減ったという意味になりますが、行の方が減った(地物の数が減った)ような現象を説明しているような印象があります。

以下はprjファイルが付いていないという仮定での投稿になります。

まず、正しい空間参照がどのようなものかを探るのが最初にやることだと思います。
いろいろな方法があると思いますが、属性テーブルの全てのデータを選択して、Excelに貼り付けるという方法があります。
一番左の列に、WKT形式で地物の座標の記述がされるはずです。
座標の数値から、正しい空間参照を推定することができる可能性が高いと思います。
また正しい記述となっているかを確認することで、変換で消える原因がわかるかもしれません。

WKTについては、こちらをご覧ください。

ウィキペディア -Well-known text-

正しい空間参照がわかりましたら、プロセシングツールボックスの「ベクタ一般 - シエープファイルの投影法の定義」で設定してみてください。

2021年4月5日月曜日 15:47:31 UTC+9 k m:

k m

unread,
Apr 5, 2021, 8:42:11 PM4/5/21
to QGIS初心者質問グループ
福岡様
お世話になります。
色々見づらくて申し訳ないです。。

・空間定義(.prj)は作成されています。
・フィールドですが、行が減っています。(項目にIDとして1~42まで作成していますが、gdal後には1~25まで減ってしまいました。)

また、ポイントやラインといった要素は「地物のハイライト表示」で正しい位置(欲しい場所)にあることは確認できましたが、白背景と同化しているような見た目になっています。

shpの変換が目的ではなく、正常に表示して使用(入力)が目的なので「プロセシング→ベクタ一般→シェープファイルを修復」も行いましたが、改善されませんでした。

わかりずらい表現ばかりで申し訳ないです。
2021年4月6日火曜日 8:43:52 UTC+9 福岡:

福岡

unread,
Apr 5, 2021, 11:01:56 PM4/5/21
to QGIS初心者質問グループ
km 様

こんにちは。ご返信ありがとうございます。

なるほど、処理を掛けると地物が消えるということですね?

それで申し訳ありませんが、もう1つ質問させてください。
ポイント、ライン、ポリゴンは本来別々のShapeファイルにならないといけないはずです。
もしかすると、1つのShapeのファイルセットにこれらが書き込まれているのでしょうか?

お手数をお掛けしますが、よろしくお願いします。

2021年4月6日火曜日 9:42:11 UTC+9 k m:

k m

unread,
Apr 6, 2021, 12:05:50 AM4/6/21
to QGIS初心者質問グループ
福岡様
返信ありがとうございます。

gdal処理をかけると、地物(線や点のベクタ?)はありますが、フィールドの行の一部が消えるということです。

ポイント、ラインはそれぞれ別のshpファイルとして存在しています。

よろしくお願いします・・・
2021年4月6日火曜日 12:01:56 UTC+9 福岡:

福岡

unread,
Apr 6, 2021, 2:21:50 AM4/6/21
to QGIS初心者質問グループ
k m 様

ご返信ありがとうございます。

見当違いで申し訳ありませんでした。
他の人も回答しやすいように、私の考えや推測も含めてですが問題を整理してみます。

まず要点としては、
1 地物にデザインが適用できないため真っ白になり、判別ができない状況である。
2 地物を選択状況にするとハイライトされ、地物があることは確認できる。また位置も正しい。
3 Shapeファイルはポリゴン、ライン、ポイント毎に別々のファイルセットになっている。

次に試してみたことですが、
1 プロセッシングツールの「ベクタ一般 - シェープファイルを修復」では効果が無かった。
2 プロセッシングツールの「GDAL - フォーマット変換(gdal_translate)では表示されるようになったが、地物のレコードが削除される。

2に関してですが、gdal_translateはラスタのフォーマット変換のツールです。
手持ちのベクタで試してみましたが、実際に動くのはogr2ogrによるフォーマット変換のようです。

さて推測ですが、shapeファイルに不具合があるように思います。
まず確かめてみたいのは、レイヤのプロパティの「情報タブ」で「プロバイダからの情報」の中の「ジオメトリ」がどのような記述になっているかです。
PointやLineのはずなのにPolygonになっていれば、これが原因だと推定できます(検討違いだったら、ごめんなさいm(__)m)。

試してみたいツールとしてはメニューの「ベクタ - ジオメトリツール」の中にある「ポリゴンを線に変換」と「頂点の抽出」だと思いました。
ラインのデータには「ポリゴンを線に変換」、ポイントのデータには「頂点の抽出」を私なら試してみたいと思います。

2021年4月6日火曜日 13:05:50 UTC+9 k m:

k m

unread,
Apr 6, 2021, 3:23:59 AM4/6/21
to QGIS初心者質問グループ
福岡様
返信ありがとうございます。

要点ですが、1~3全て合っています。
また、試したことの1と2も合っています。

そしてジオメトリですが、ポリゴン(Polygon)はありませんでした・・
ツールも試しましたが、全くでした。

ただ「ジオメトリツール→頂点の抽出」を行ったところ、ポイント(Point)として頂点が作成され、表示されました。。。

現状の報告だけですいません。。

2021年4月6日火曜日 15:21:50 UTC+9 福岡:

ありた

unread,
Apr 6, 2021, 9:19:20 AM4/6/21
to QGIS初心者質問グループ
こんにちは

妙な挙動を示すおかしなデータについて、どのようなデータなのかまったくわかりません。
該当するファイルのレイヤを右クリックし、プロパティの一般情報タブ(一番上)に
記載されている情報について(画像キャプチャでよいので)示してください。
特に一番上にある「プロバイダからの情報」と下の方にある「属性」について
示してください。

次に、フィールド計算機を開き、以下を実行してください。
・新しいフィールドを作る
・仮想フィールド作成
・出力する属性の名前 : wkt
・フィールド型 : テキスト (string)
・式 : geom_to_wkt($geometry)

実行後、属性テーブルを開き、 gdal_translate 前の状況を画像キャプチャで
貼り付けてください。(業務上またはプライバシー上で支障がある場合は
適宜マスキング等を行ってもらっても構いませんが、可能な限り示してください)


gdal_translate を行ったあとについても、上記の作業を行い、同様に報告してください。
また、 gdal_translate を行ったときのログ欄の結果も併せて示してください。

k m

unread,
Apr 6, 2021, 8:13:51 PM4/6/21
to QGIS初心者質問グループ
ありた様
お世話になります。

最初の「プロパティ→一般情報タブ」ですが、下記の2枚になります。(パスは消しています。)
フィールドの「個数」は43です。
無題1.jpg
無題2.jpg

フィールド計算機で追加した物が下記の1枚になります。
無題3.jpg

gdal処理後のログが下記の1枚になります。(パスは消しています。)
無題4.jpg

gdal変換処理後、出力されたshpが下記になります。
本来44になるはずのフィールド「個数」は、26に減っています。
無題5.jpg

よろしくお願いします・・
2021年4月6日火曜日 22:19:20 UTC+9 ありた:

福岡

unread,
Apr 7, 2021, 12:49:06 AM4/7/21
to QGIS初心者質問グループ
皆様へ

こんにちは

前回までの投稿ですが、フィールドではなく地物が減ったのではないかという予想をしていました。
間違った予想をしていて、大変申し訳ありませんでした。m(__)m

解決策は持っていないのですが、気になった点がありましたので念のため報告いたします。

レイヤのプロパティの情報タブで、領域がXが0~2000、Yが0~1500となっています。
3枚目の画像(フィールド計算機で追加した物)の一番下にあるWKTの値が、この領域の範囲内にありません。

もしかすると、地物が正常に表示されない原因となっているかもしれないと感じました。
2021年4月7日水曜日 9:13:51 UTC+9 k m:

k m

unread,
Apr 7, 2021, 2:01:59 AM4/7/21
to QGIS初心者質問グループ
福岡様
お世話になります。

わかりにくい投稿のせいで申し訳ないです。。

別のshpファイルでも一部が同様に見えなくなることがあり、確認したところそのデータの「プロパティ→領域」に0,2000という表記が確認できました・・
ちなみにそちらの修正は可能なのでしょうか・・?
2021年4月7日水曜日 13:49:06 UTC+9 福岡:

yoichi...@gmail.com

unread,
Apr 7, 2021, 3:25:41 AM4/7/21
to QGIS初心者質問グループ
かやまと申します

gdal_translate で変換先の形式は何になさってますか?

フィールドが日本語の文字列で5文字までギリギリのとこもあるのでShapeファイルの
フィールド名の限界の関係の可能性はないでしょうか。

gdal_translate で変換したときにフィールド名がUTF-8に変換されて、Shapeファイルに
保存とかいうことになるとShiftJISで記述されたフィールド名はもっと長くなるのでShapeファイルの
フィールド名に格納されなくて文字化けするということはあります。データのほうもそういうのが
あります。

ためしにGeoPackageに変換してみたらうまくいかないですかね。



2021年4月7日水曜日 15:01:59 UTC+9 k m:

k m

unread,
Apr 7, 2021, 3:47:09 AM4/7/21
to QGIS初心者質問グループ
かやま様
お世話になります。

gdalの変換先は、shp形式です。
確かに文字数限界もありそうですが、福岡様にいただいた
>レイヤのプロパティの情報タブで、領域がXが0~2000、Yが0~1500となっています。
3枚目の画像(フィールド計算機で追加した物)の一番下にあるWKTの値が、この領域の範囲内にありません。

から、shp作成元データのPC-mappingというソフト上で図郭の範囲を確認したところ「領域の上下左右四隅の範囲を設定する値」が「0や2000という値」になっておりました。
そちらの値を今回の業務範囲の座標値に置き換え、shpでエクスポートしQGISに取り込みなおしたところ、ベクタ表示が確認され、無事に目的は達成しました。。。

ただ根本の解決というと語弊がありそうなので、また時間を作って確認したいと思います。

福岡様、ありた様、色々お聞きして申し訳ないです。
ありがとうございました。
2021年4月7日水曜日 16:25:41 UTC+9 yoichi...@gmail.com:
Reply all
Reply to author
Forward
0 new messages