Я совершенно новичок в Postgres и PostGIS.
Я пытаюсь выполнить простое сопоставление карт (или, если хотите, с путями) некоторых точек GPS. Я использую postgres (postgis) .
В моей базе данных есть таблица, содержащая мои точки GPS: точки gps ( широта, долгота , время, скорость, азимут, геометрия, ...)
Я также импортировал шейп- файл дорожной сети в свою базу данных: маршруты (gid, idrte, version, nomrte, norte, clsrte, geom, ...) - У меня нет азимута ссылок, и я не уверен, как я могу рассчитать его с помощью функции postgis ST_azimuth. Все, что у меня есть, это шейп-файл дорожной сети, содержащий перечисленные выше столбцы.
Я хочу связать каждую точку GPS с ближайшей ссылкой (в 20-метровом буфере вокруг этой точки) только в том случае, если направление ссылки совпадает с азимутом точки GPS (+ или -15 градусов) и получить проецируемое положение. В противном случае я хочу, чтобы он искал СЛЕДУЮЩУЮ ближайшую ссылку в пределах 20-метрового буфера, который имеет приемлемый азимут! (Так же, как на картинке!)
Я хочу, чтобы новые координаты проецируемых точек GPS были добавлены в таблицу "gpspoints" как "projectedLat" и "projectedLong".
(На рисунке ниже фактические точки показаны с использованием направления, в то время как у проецируемых точек нет отметки направления)
ST_Azimuth
, но имейте в виду, что он скажет вам азимут относительно направления оцифровки .