さまざまなGPS精度で同様のパス(この場合は山道)を表す複数のラインフィーチャ(マルチポイントにもあります...)があり、多くのラインが互いに近接していますが、完全には重なりません。
このプロジェクトの目的のために、私はそれらすべてから「平均」線を計算し、トレイルの最も可能性の高い位置の結果の線を生成する方法を探しています。
QGISまたは他のツールを使用して、どのように進めますか(OGRについて考えました...)?
さまざまなGPS精度で同様のパス(この場合は山道)を表す複数のラインフィーチャ(マルチポイントにもあります...)があり、多くのラインが互いに近接していますが、完全には重なりません。
このプロジェクトの目的のために、私はそれらすべてから「平均」線を計算し、トレイルの最も可能性の高い位置の結果の線を生成する方法を探しています。
QGISまたは他のツールを使用して、どのように進めますか(OGRについて考えました...)?
回答:
テストデータ:
私。)
QGISプラグインLocate Points Along Lines
(https://plugins.qgis.org/plugins/LocatePoints/)を使用して、GPSトラックに沿ってポイントを作成します。例では5mの間隔を使用しました。
II。)
作成Concave Hull
とProcessing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull
。0.1
私の例ではのしきい値を使用しました。しきい値が低すぎる場合、出力ポリゴン内に穴がある可能性があります。
III。)
これで、スケルトンアルゴリズムを使用して「平均」ラインを計算できます。でスケルトンを検索しProcessing Toolbox
ます。のv.voronoi.skeleton
ツールを使用しますGRASS GIS 7 commands
。
ヒートマップアプローチ:
アプローチは、処理ステップの計算時間のため、より時間がかかります。より一般的な解決策に近づくためのアイデアと見ることもできます。
テストデータ:
私。)
QGISプラグインを使用してGPSのトラックに沿ってポイントを作成しますが線に沿ってポイント(探してhttps://plugins.qgis.org/plugins/LocatePoints/)を。ヒートマップアプローチでは、2mの間隔を使用しました。
II。)
QGISヒートマッププラグインを使用してヒートマップを作成します。半径40mを使用しました。出力ラスターに穴がなくなるまで半径を増やします。異なる半径値でこれを試してください。
III。)
編集済み正確なヒートマップラスター値を保持する必要はありません。
次に、ほとんどのポイントが集中している「白い」領域にラスターを細くしたいと思います。そのため、出力ラスターを再計算します。出力ラスターの最小/最大値は0
および 89.7935
です。上記の値のみを使用します44
。そのため、「経験則」を使用しました。最大値を切り捨てて、2で割ります。この値をもう一度切り捨てます。89/2 = 44,5
-> 44
。OSGeo4W Shell:を使用しましたgdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif
。
IV。)
編集済み
a)再計算されたヒートマップを Raster > Conversion > Polygonize ...
b)ポリゴンを単純化しVector > Geometry Tools > Simplify geometries
ます。の許容値を使用しました2
。ポリゴンが単純になると、スケルトンの処理時間が短縮されます。
c)スケルトンの計算:Processing Toolboxでスケルトンを検索します。v.voronoi.skeleton
GRASS GIS 7コマンドのツールを使用します。
結果の線は、最初の回答よりもトレイルの最も可能性の高い位置を表していることがわかります。特に北のベンドでは、平均線は3つのトラックに沿っており、これらのトラックはより近くにあります。東の曲がりについても同じです。
アプローチの利点:
短所:
誰かが処理手順を最適化できる場合は、大歓迎です!
use weight from field
。速度(トラバーススロー/クイック)またはその他の情報を何らかの方法でデータの重み付けに使用できますか?重みを使用して、ヒートマップを改善できます。