Forum

Author Topic: Координаты якоря модели при экспорте в локале  (Read 8037 times)

aldanstar

  • Full Member
  • ***
  • Posts: 137
    • View Profile
    • Александр Старовойтов
Здравствуйте, Алексей.
Появилась необходимость получать пространственные координаты якоря(ancor/proxy) заданной в программе системы координат, при экспорте модели в локальной системе, непосредственно через Photoscan, не прибегая к сторонним приложениям (т.е. манипуляции экспорта в системе координат проекции одновременно с локальной, и вытеснение координат якоря с импортом первой в c4d).
Это необходимо при импорте модели в ArcGIS Pro - новое приложение ESRI для Desctop. Да, свершилось, теперь ArcGIS ест модели более чем 80 тыс. полигонов ранее (проверено на 2,5 млн.). Но инструмент остался тот же, в котором нужно создать точечный объект, к которому будет привязоваться объект. По модели будет совершаться оцифровка кровли стенок раскопа с учетом картографии пласта в 3D. Метод оцифровки по ортосрезам не эффективен, так как он не дает учитывать плановую картографию и соответственно контуры объектов раскопа на пасте и на стенке расходятся.
заранее спасибо, Александр.
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 14851
    • View Profile
Добрый день, Александр,

Не очень понятно, что хочется получить на выходе - модель в локальной системе координат + данные о её пересчёте в географическую СК?
Best regards,
Alexey Pasumansky,
Agisoft LLC

aldanstar

  • Full Member
  • ***
  • Posts: 137
    • View Profile
    • Александр Старовойтов
Да, Алексей.
Модель мы и так получаем. У каждой модели есть так называемый якорь - координаты контейнера меша. Когда мы экспортируем модель в локальной системе, при наличии ГСК, то по сути происходит сдвиг контейнера с геометрией в (0;0;0). (А может и наоборот - работа ведется в локальной систем, а при экспорте в заданной ГСК происходит сдвиг контейнера) Нужно получить этот сдвиг (допустим в названии файла или в отдельном txt, или в консоли координаты этого якоря в заданной системе координат).
Заранее спасибо, Александр.
« Last Edit: August 06, 2014, 12:46:33 PM by aldanstar »
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет

aldanstar

  • Full Member
  • ***
  • Posts: 137
    • View Profile
    • Александр Старовойтов
Алексей. В итоге как получить координаты якоря модели?
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 14851
    • View Profile
Преобразование из внутренней СК во внешнюю (географическую или локальную) производится с помощью матрицы chunk.transform (4x4), состоящей из матрицы поворота и вектора трансляции.

Например, для центра Bounding Box это можно сделать следующим образом:
Code: [Select]
doc = PhotoScan.app.document
chunk = doc.activeChunk
region = chunk.region
center = region.center #координаты во внутренней СК чанка
T = chunk.transform

x = chunk.crs.project(T.mulp(center)) #координаты в географической СК
Best regards,
Alexey Pasumansky,
Agisoft LLC

aldanstar

  • Full Member
  • ***
  • Posts: 137
    • View Profile
    • Александр Старовойтов
Спасибо. Все отлично работает. Я скрипт немножко модернизировал. чтобы в консоли координаты появлялись для удобного копирования. Теперь подцеплю библиотеки ArcPy и в shp-файл сразу буду создавать точку.
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет

aldanstar

  • Full Member
  • ***
  • Posts: 137
    • View Profile
    • Александр Старовойтов
Преобразование из внутренней СК во внешнюю (географическую или локальную) производится с помощью матрицы chunk.transform (4x4), состоящей из матрицы поворота и вектора трансляции.

Например, для центра Bounding Box это можно сделать следующим образом:
Code: [Select]
doc = PhotoScan.app.document
chunk = doc.activeChunk
region = chunk.region
center = region.center #координаты во внутренней СК чанка
T = chunk.transform

x = chunk.crs.project(T.mulp(center)) #координаты в географической СК

В последней версии выдает ошибку:
Traceback (most recent call last):
  File "E:/centerofBoudingBox.py", line 5, in <module>
    chunk = doc.activeChunk
AttributeError: 'PhotoScan.Document' object has no attribute 'activeChunk'

Похоже API было изменено
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 14851
    • View Profile
Здравствуйте, Александр,

Да, в версии 1.1 были некоторые серьёзные изменения в Python API.

в данном скрипте, например, из важных изменений:
doc.activeChunk -> doc.chunk
chunk.transform -> chunk.transform.matrix
Best regards,
Alexey Pasumansky,
Agisoft LLC