Я хотел бы повернуть набор векторных точек в QGIS на произвольное количество градусов вокруг центральной точки (или произвольной точки).
Это похоже на недавний вопрос о создании регулярной сетки ; там было предложено использовать инструмент «Аффинная трансформация» (который, я полагаю, имел в виду плагин), чтобы вращать или сдвигать сетку точек на произвольный угол или расстояние. Я подозреваю, что не понимаю, как это работает, и не смог заставить его работать.
Я создаю регулярную сетку точек в QGIS и гарантирую, что зона UTM установлена правильно как для слоя, так и для проекта, включаю редактирование для слоя, затем открываю диалоговое окно плагина (qgsAffine):
Я выбираю «весь слой» и затем, желая повернуть все поле точек на 15 °, помещаю 15 в оба поля «вращения» (которые могут быть там, где что-то идет не так). Результатом операции является вращение точек где-то вне планеты!
Это правильный инструмент для работы? Я хотел бы повернуть набор точек относительно их общего центра, в идеале.
Обновление : qgsAffine - просто мысль; если мы сможем сделать это в любом инструменте QGIS, я буду счастлив!
Обновление 2 : qgsAffine можно использовать, если вы знаете правильные номера для подключения (см. Ответ ниже, спасибо, Майк!). Электронная таблица / калькулятор работает нормально, или вот функция R, чтобы получить числа напрямую:
## Compute correct affine numbers for qgsAffine plugin
affine <- function(originX, originY, rotAngle) {
A <- rotAngle * pi / 180
scaleX <- scaleY <- cos(A)
rotX <- sin(A)
rotY <- -sin(A)
transX <- originX - cos(A) * originX + sin(A) * originY
transY <- originY - sin(A) * originX - cos(A) * originY
aff <- data.frame(scaleX, scaleY, rotX, rotY, transX, transY)
return(aff)
}
Итак, чтобы повернуть сетку точек в северной части Уганды (UTM 36N), affine(578988, 419210, 30)
получим:
scaleX scaleY rotX rotY transX transY
1 0.8660254 0.8660254 0.5 -0.5 287174.7 -233330.5
... который, введенный в диалоге qgsAffine, корректно поворачивает точки.