Неправильные результаты при использовании расширения геолокации Autodesk Forge Viewer - PullRequest
0 голосов
/ 30 января 2020

Это связано с моим предыдущим вопросом . Я отправляю новый вопрос, чтобы попытаться объяснить ситуацию лучше.

Я размещаю маркерные объекты на модели, используя данные, полученные из исследований дронов. У меня есть доступ к высокоточным данным GPS, а также к данным о вращении Омега / Фи / Каппа.

Я пытаюсь использовать расширение Autodesk.Geolocation для преобразования данных lon / lat / alt в пространство просмотра.

Все модели изначально были созданы в Revit.

Когда я использую расширение Geolocation, создается впечатление, что refPointLMV и GlobalOffset не учитываются правильно.

Вот пример:

enter image description here

Как вы можете видеть, выбранная точка [0] на модели находится далеко от реальной GPS координаты. Кроме того, refPointLMV имеет огромные значения.

Нечто подобное происходит, когда я беру некоторые данные lon / lat / alt с фотографии дрона. Данные GPS беспилотника будут близки к модели positionLL84, например (4.586577106, 51.626037158, 49.095). Однако, когда я делаю Geolocation.lonLatToLMV(4.586577106, 51.626037158, 49.095), я получаю результат за кадром.

У нас уже был открыт запрос в службу поддержки Autodesk, связанный с этим открытием более двух месяцев, но он не имел большого успеха там. Они сказали, что команда инженеров слишком занята, чтобы поработать над этим, и рекомендовали попытаться исправить ошибку на нашей стороне. Поддержка ref LMV-5261.

Мне удалось вывести результат Geolocation.lonLatToLMV в область просмотра с помощью следующего кода:

const gpsPosition = new THREE.Vector3(
  longitude,
  latitude,
  altitude,
);

const position = viewer
  .getExtension('Autodesk.Geolocation')
  .lonLatToLmv(gpsPosition);

const data = viewer.model.getData();

const globalOffset = data.globalOffset;
const refPointTransform = data.refPointTransform;

// applying the transform

position.add(globalOffset)
position.applyMatrix4(refPointTransform);

// HACK: after applying the above transforms, a final
// rotation of -45 degrees is required to move the points into position
// once this has been done, the locations match up exactly to photos. 
// Seems like a weird hack, but I've tested with over 20 drone photos, they all match up. 

const quaterion = new THREE.Quaternion().setFromEuler(
  new THREE.Euler(0, 0, -Math.PI / 4),
);

position.applyQuaternion(quaterion);

Проблема в том, что мы тестируем одну модель, и это явно не надежное решение, которое мы можем ожидать, чтобы работать со всеми будущими моделями и данными беспилотников, которые мы бросаем в него.

Сколько времени понадобится инженерной команде, чтобы это исправить? Или они могут это исправить?

1 Ответ

1 голос
/ 31 января 2020

Извините за задержку из-за китайского Нового года. После проверки с нашей командой инженеров, текущее решение состоит в следующем:

  1. Переместите базовую точку проекта в N0 E0, но оставьте угол к истинному северу
  2. Скопируйте LAT ДЛИНА до точки съемки

После этого следует ожидать результат преобразования GEO.

Вот снимки вышеупомянутой настройки и результат enter image description here enter image description here

...