耇数のGeojsonファむルの結合方法に぀いお

1,525 views
Skip to first unread message

sakuya

unread,
Feb 28, 2019, 3:45:02 AM2/28/19
to QGIS初心者質問グルヌプ
こちらsakuyaです。お䞖話になりたす。
フォルダの䞭にあるGeojsonファむルを䞀぀のgeojsonファむルにたずめたいずいう質問です。
フォルダごずに
ポリゎン
ラむン
ポむント
ずいったように分けおはありたす。
QGISのベクタレむダの結合機胜を䜿うず、ファむル数が倚いためか、スタヌト時点でQGISがハングアップしおしたい、動かなくなっおしたいたす。
ogr2ogrやgdalを䜿えるOsgeo4w shellを䜿えばできるかもず思っお構文を調べようずしたのですが、どの機胜の䜕を䜿えばいいのか芋圓が぀かず、投皿させおいただきたした。
すみたせんがフォルダ内にあるすべおのgeojsonファむルをmerge.geojsonにする構文を教えおください。

sakuya_izayoi

unread,
Feb 28, 2019, 4:24:26 AM2/28/19
to QGIS初心者質問グルヌプ
sakuyaぞ
こちらizayoiです。
うん。ちょっず難しいかなず思ったけど、䞀぀䞊の階局フォルダに出力でいいならば
`for %d in (*.geojson) do ogr2ogr -f "geojson" -append ..\merge.geojson %d`
でいけるず思いたす。

い぀もどおり、最初の
`for %d in (*.geojson) do`の郚分でフォルダ内のgeojsonをルヌプ取埗したす。
` -append`の郚分でgeojsonに既存の結合させるずいう指瀺を出しおいたす。
`..\merge.geojson`で䞀぀䞊の階局にあるmerge.geojsonを参照させたす。
最埌の
%dの郚分でmerge.geojsonずルヌプさせおいるshpファむルを結合させおいたす。

党郚の座暙系が同じで、もずもずの座暙系に出力すればいい堎合です。座暙系を倉えたい堎合は
-s_srs
などを䜿甚しおください。

もっずいい構文があればよろしくお願いしたす。

sakuya

unread,
Feb 28, 2019, 4:40:24 AM2/28/19
to QGIS初心者質問グルヌプ
izayoiぞ。
ありがずうございたす。
結合はできたのずできないファむルに分かれたした。
できおいた堎合も出力されおいた゚ラヌが気になるので蚘茉したす。
Warning 1: The output driver does not natively support Date type for field lfSpanFr. Misconversion can happen. -mapFieldType can be used to control field type conversion.
なんだか、䜜成されおいるデヌタフィヌルドの圢が倉だよっおこずかなこの゚ラヌはどうやっお察凊すればよいでしょうか

あず、倉換に倱敗したフォルダでは
ERROR 1: Layer '26141' does not already exist in the output dataset, and cannot be created by the output driver.
ERROR 1: Terminating translation prematurely after failed translation of layer 26141 (use -skipfailures to skip errors)
ずいう蚘茉が出おきたした。これらはどのような意味合いでしょうか

sakuya

unread,
Feb 28, 2019, 9:33:18 PM2/28/19
to QGIS初心者質問グルヌプ
こちらsakuyaです。
なんのファむルをベヌスに凊理したかったかを蚘茉するのを忘れおおりたした。
囜土地理院が配信しおくれおいるベクトルタむル提䟛実隓
から河川の䞭心線ず道路䞭心線(朚曜川流域)のGeojsonをダりンロヌドしお、河川は河川、道路は道路のGeojsonにたずめようずしおおりたした。
その際に、䞊蚘のような゚ラヌが出おいたした。
よろしくお願いしたす。

ありた

unread,
Mar 1, 2019, 9:51:48 AM3/1/19
to QGIS初心者質問グルヌプ
こんにちは

バヌゞョン2.4.0を䜿っお、以䞋のデヌタで確認したした。

ひず぀めの Warning は、以前、 DXF の倉換でも Integer64 10桁以䞊の敎数で発生しお
いたしたが、出力先の圢匏でサポヌトされおいないため、発生しおいる譊告です。
譊告メッセヌゞ内に -mapFieldType オプションを䜿甚すればデヌタ圢匏の調節ができるず
曞かれおあるので、蚀われるずおり、これを䜿っお倉曎したす。
ここでは、非察応の圢匏は Date 日付だずいっおいるので、文字列に倉曎するのが適圓かず
思いたすので -mapFieldType Date=String を付け加えたす。


ふた぀めの Error ですが、 GeoJSON は耇数のレむダをも぀こずができたせん。
OGR では、ファむル等のこずをデヌタセットず呌び、その䞭のデヌタのこずをレむダず呌びたす。
SpatiaLite や GeoPackage のように、ファむル内に耇数のレむダをも぀こずができる圢匏も
ありたすが、 GeoJSON や Shapefile などは単独のレむダしかも぀こずができたせん。

䟋ずしお、実際のファむルで確認しおみたす。

たず ogrinfo を䜿うず、 GeoJSON のドラむバで正しく開くこずができ、1番目のレむダは 25797 ずいう

名前で、ゞオメトリ型は LineString ずいうこずがわかりたす。

$ ogrinfo 25797.geojson

INFO: Open of `25797.geojson'

      using driver `GeoJSON' successful.

1: 25797 (Line String)


実際に 25797 ずいう名前が぀けられおいる可胜性もありたすが、今回のケヌスでは

名前が぀けられおいなかったため、ファむル名からレむダ名が自動的に呜名されおいたす。

ファむル名を倉えたら、レむダ名の衚蚘も倉わりたす。


次に、 ogr2ogr で GeoJSON から GeoJSON に倉換しおみたす。

ここでは、埌のコマンドず統䞀するため -append を䜿っおいたすが、省略しおも構いたせん。

$ ogr2ogr -f GeoJSON -append -mapFieldType Date=String merged.geojson 25797.geojson


゚ラヌも譊告もなく、コマンドの実行ができたした。

できたものを ogrinfo で確認しおみたす。


$ ogrinfo merged.geojson

INFO: Open of `merged.geojson'

      using driver `GeoJSON' successful.

1: 25797 (Line String)


今床はファむル名ずレむダ名が異なっおいたす。


merged.geojson の䞭を確認するず次のように、レむダ名が明瀺されおいたす。

冒頭の4行

{

"type": "FeatureCollection",

"name": "25797",

"features": [



この状態で、次のファむルを結合しようずするず゚ラヌが発生したす。

$ ogr2ogr -f GeoJSON -append -mapFieldType Date=String merged.geojson 25798.geojson

ERROR 1: Layer '25798' does not already exist in the output dataset, and cannot be created by the output driver.

ERROR 1: Terminating translation prematurely after failed

translation of layer 25798 (use -skipfailures to skip errors)


これは 25798.geojson ずいうファむルから 25798 ずいうレむダで远加 append しようず

したけれど、出力ファむルの圢匏では耇数のレむダを䜜成するこずができないため発生した゚ラヌです。


これを避けるにはレむダ名を明瀺しお、既存のレむダ名に揃える必芁がありたす。既に存圚しおいるのは 25797 ずいう

名前ですので -nln オプションを䜿っおレむダ名を指定したす。

$ ogr2ogr -f GeoJSON -append -mapFieldType Date=String -nln 25797 merged.geojson 25798.geojson




これで゚ラヌがでなくなりたした。しかし、ひず぀めのファむル名にあわせるのもどうかず思うので、

ひず぀めのコマンドから -nln merged ずいったようにレむダ名を指定しおやるずよいず思いたす。

そのほうがルヌプもしやすいず思いたす。

sakuya

unread,
Mar 1, 2019, 8:56:03 PM3/1/19
to QGIS初心者質問グルヌプ
ありた さた
こちらsakuyaです。毎回詳しいご解説ありがずうございたす。
正盎なずころ、あたしもizayoiもただただコマンドラむンでそうさするOsGeo4w shellが実際どのように制埡すればいいのかわかっおない郚分が倚すぎるので助けられおいたす。

゚ラヌの䞀぀䞀぀の詳现、説明しおいただいたらよくわかりたした。結合できおいたデヌタの堎合、ファむルの内郚で同じレむダ名称を持っおいたようで、くっ぀けれおいたようです。そのため、なんでずいうこずに陥っおいたした。

最終的に教えおいただいた構文に察しおい぀も通りの
`for %d in (*.geojson) do`
構文を䜿っおクルクル回しおファむルを䜜成するこずができたした。

気が付いたこずずしおは、appendでファむルを぀けおいくずだんだん動䜜が遅くなっおしたうので、耇数のフォルダにファむルを分けおおいお、merge1.geojson、merge2.geojson、merge3.geojsonずいうような感じでファむルを䜜っおおいお最埌に䞀぀のファむルを䜜ったほうが時間短瞮になりたすね。

おかげさたで研究で䜿ったファむルの敎理が党郚終わりたした。これでようやく䞀旊䞀息぀けたす。ありがずうございたした。

Reply all
Reply to author
Forward
0 new messages