GPSログの地理データベースを構築する方法は?


13

航空野生生物調査では、通常、数十のGPXファイルを生成し、通常、それらのほとんどをGISアプリケーションで表示するためのシェープファイルに変換します。GPXファイルは、GPSデータのすべて(またはほぼすべて)を1か所に保管する素晴らしい方法です。これらは、トラックログ、ウェイポイント、ルート情報を1つの便利な形式で保存するxmlファイルです。それらは複数のトラックを保存し、Garminから保存された古いトラックも保存します。

同じ追跡からのポイント観測データを持つ他のテーブルと並行して、このすべての追跡データを空間データベースに保存したいと思います。

ogr2ogrを使用すると、トラックを空間データベースに変換できます。

ogr2ogr -append -f "SQLite" -dsco SPATIALITE=yes # add to table with Spatialite filetype
  -dsco INIT_WITH_EPSG=yes -t_srs epsg:4326 # using WGS84
  SURVEYDATA.sqlite GPXFILE.gpx tracks -nln tracktable; # adding tracks to 'tracktable'

ただし、これにより、保存された各トラックが線としてインポートされ、各トラックポイントの時間/位置情報が失われます。

その情報を保存するトラックログデータベースを構築する賢い方法を知っている人はいますか?

編集

トラックログは単なる線ではなく、それぞれが標高と時間の属性を持つ連続したポイントのコレクションです。各ポイントは、特定のトラックに属するトラックセグメントに属し、各トラックセグメント内のポイントは中断することなく取得され、リンクされていると見なされます。例えば:

<trk><name>ACTIVE LOG</name>
<trkseg>
<trkpt lat="-13.471403" lon="31.382982"><ele>467.818725585938</ele><time>2009-09-09T03:53:38Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>468.780029296875</ele><time>2009-09-09T03:53:50Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>465.896118164063</ele><time>2009-09-09T03:54:43Z</time></trkpt>
</trkseg>

したがって、トラックログを保存するには、このポイントのコレクションを関連データとともに保存する必要があります。

1つの解決策は、これらのトラックをポイントとしてロードし、トラック名、セグメント、標高、および時間の列を追加することです。ただし、ogrはトラックをポイントとして変換するとは思わない。

解決

指摘誰@scrussのおかげgpx2spatialite私は(OS X 10.9)をインストールし、sudo easy_install gpx2spatialite。このツールセットは、「drawinglife」プロジェクト用に設計されています(したがって、ほとんどの人にとっておそらく不要な「都市」情報があります)。メインのgpx2spatialiteページではあまり説明されていませんが、drawinglife wikiの方が優れています。それでも、多くの文書化されていない機能-重複の削除など!

トラックセグメント、トラック、トラックポイント、およびウェイポイントを保持するGPXファイル用の空間データベースを作成します。また、さまざまなトラックにラベルを付けるように設計された「ユーザー」が設定されています(sqliteはユーザーアクセスシステムではないが、描画生活のためのものであるため、奇妙に思えます):

gpx2spatialite create_db MyGPXArchive.db

すべてのサブフォルダーを含むGPXファイルのフォルダー全体を読み込み、途中で重複を確認して削除します。

gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/ 

オプション:

  • -s=トラックポイントが都市データベースにあるかどうかをチェックしません(LOTを高速化します)
  • -d MyGPXArchive.db =使用するデータベース。
  • -u SL25 =ユーザーSL25を追加します(収集した一連のトラックに使用したラベルのみ)。
  • Selous2013 =興味のあるトラックがあるフォルダー(サブフォルダーを含む)。

バグ:

  • タイムスタンプ情報を破棄する古いGarminにトラックを保存した場合、インポートがクラッシュします(GPSUなどのユーティリティを使用して、保存したトラックを削除します)。gpsbabelがある場合は、最初に次のようなファイルでファイルをフィルタリングします。

    gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x track、start = 20000101 -o gpx -F [OUTPUT.gpx]


FME safe.com/fme/fme-technology/fme-desktop/featuresを使用し、Oracleデータベースに必要なすべての属性を維持します
Mapperz

1
@Mapperz-FMEにはGPXファイルを保存するための特定の方法がありますか?私は本当にFOSSソリューションを求めています。
シンバマング

回答:


6

ptrv / gpx2spatialiteはこれを非常にうまく行い、すべてのポイントのタイムスタンプを保存し、トラックの速度と長さのデータを導き出します。また、重複したトラックはインポートされないため、GPXファイル用の巨大な山をフィードすることができ、適切に変更されます。

更新:要求された使用例:

新しいデータベースを初期化します。

gpx2spatialite_create_db db.sqlite

単一のgpxファイルを追加します。

gpx2spatialite -d db.sqlite -u user file.gpx

(ユーザー名userがデータベースに存在しない場合、作成するかどうかを問い合わせます。データベースは、1人以上のユーザーに割り当てられたトラック/ウェイポイント/ルートで構築されます。)

folder /にあるすべてのgpxファイルを追加します

gpx2spatialite -d db.sqlite -u user folder/

用法:それはテーブルと、空間データベースのtracklinesはポリラインとしてトラック保持トラックポイント(時間、標高などで)個々の点を含む、及びウェイポイント任意の定義されたウェイポイントのために。また、多数のインデックス、一部の世界都市の定義、およびおそらく私がまだ検討していない埋め込みSLDスタイリング情報もあります。ささいな例として、ここに私の故郷(トロント)が〜7年の追跡ログを通してどのように定義されているかの地図があります:

トロントのGPSログ

75%の透明度でラインを使用すると、最も頻繁に移動するルートが暗くなります。


ああ、easy_install gpx2spatialite実際にコマンドラインからアクセス可能なスクリプトとしてインストールすることに気付いていませんでした!また、このuserオプションは混乱を招き、メインページで説明していません。また、spatialiteはアクセス制限のないシステムです。
シンバマング14

このuserオプションは、複数の参加者が同じデータベースに自分のトラックを追加できるため、Drawinglifeプロジェクトにとって意味があります。Cityのタグ付けの除外に関するヒントと、クラッシュの理由を見つけてくれてありがとう。タイムスタンプのないGPXファイルがある場合は、GPSBabelのfaketimeオプションを使用して時間データを合成できます。
スクルース14

1
参考までに、gpx2spatialiteの構文が変更されました。典型的なインポートコマンドは現在gpx2spatialite import -u user -s -d db.spatialite file1.gpx …
17

3

コメントを進めるために-「FMEにはGPXファイルを保存するための特定の方法がありますか?」

はい、ルート、ウェイポイント、トラック、メタデータを完全に制御できます ここに画像の説明を入力してください

FMEは、GIデータと非空間データを一緒に操作するための非常に価値のある強力なツールです。

詳細については、http://evangelism.safe.com/fmeevangelist26/を参照して ください


2

いくつかのアイデアがあります。ここでは PythonやPerlでGPXデータを抽出する独自のプログラムを作成するため。ここからは、データを空間データベースに入れるのはそれほど難しくありません。spatialiteに格納するための適切なスキーマについて考える必要があります-どの属性を保持しますか?)。


1

OGRルートに行きたい場合、最良のアプローチは、まずシェイプファイルにエクスポートすることです。これは、ウェイポイント/トラックポイント/ウェイ/トラックの区別と関連するメタデータを表す複数のシェイプファイルをエクスポートし、各ファイルセットをメインのSQLiteにマージしますデータベース。


-1

追加してみてください

-lco GPS_USE_EXTENSIONS=YES

あなたのogr2ogrコマンド


新しいテーブルでこれを試しました-結果のフィールドやデータには影響しません。何を期待していますか?
シンバマング

拡張属性を取得することを期待していました。質問を読み直して、トラックをポイントとしてエクスポートする以外に、個々のトラックポイント時間を取得する方法はないと思います。
ミカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.