私はPostgresとPostGISを初めて使います。
GPSポイントの単純なマップマッチング(または、必要に応じてパス推論)を試みています。私はpostgres(postgis)を使用しています。
データベースにGPSポイントを含むテーブルがあります: gpspoints(緯度、経度、時間、速度、方位角、ジオメトリ、...)
道路ネットワークのシェープファイルもデータベースにインポートしました: ルート(gid、idrte、version、nomrte、norte、clsrte、geomなど)-リンクの方位角がありません。 postgis関数ST_azimuthを使用してどのように計算できるかわかりません。私が持っているのは、上記の列を含む道路網のシェープファイルだけです。
リンクの方向がGPSポイントの方位角(+または-15度)と一致する場合にのみ、各GPSポイントを(ポイントの周りの20メートルのバッファー内の)最も近いリンクに関連付けて、投影された位置を取得します。それ以外の場合、許容可能な方位角を持つ20メートルのバッファー内で、NEXTの最も近いリンクを検索します。(写真のように!)
投影されたGPSポイントの新しい座標を、テーブル「gpspoints」に「projectedLat」および「projectedLong」として追加する必要があります。
(下の図では、実際のポイントは方向を使用して示されていますが、投影されたポイントには方向マークがありません)
ST_Azimuth
、使用できますが、デジタル化の方向に関する方位角を伝えることに注意してください。