Как конвертировать расстояние, азимут, падение в XYZ?

10

У меня есть таблица Excel с данными заголовка и детализации. Данные заголовка содержат идентификатор скважины и координаты местоположения, а данные съемки содержат связанную скважинную съемку со значениями расстояния, азимута и угла наклона.

Поскольку я знаю местоположение скважины и высоту поверхности, я хотел бы также иметь возможность преобразовать таблицу съемки в координаты XYZ. У кого-нибудь есть функция / процедура / пример? (VB & ArcObjects)

Данные заголовка:

Данные заголовка

Данные опроса:

введите описание изображения здесь

Якуб Сисак География
источник
Не могли бы вы просто использовать их как координаты XYZ в любом случае? Я предполагаю, что dip имеет начало 0, не так ли?
Эмили
1
@Emily - Да, дан первый XYZ (X: 425990, Y: 5409010, Z: 350). Значение падения равно 0, а расстояние равно 0. Как рассчитать XYZ для расстояния: 41, азимута: 359, падения: -71? (В каждой точке съемки направление и наклон будут разными, что приведет к отклонениям и спиральным спускам). Вероятно, существует простая формула ...
Якуб Сисак Географическая графика

Ответы:

10

Вопрос требует преобразования между сферическими и декартовыми координатами . В этой таблице приведены формулы:

Снимок экрана электронной таблицы

Синие линии - это входные данные, черные - промежуточные вычисления, а красные - выходные данные. В формулах значения указываются именами в столбце [Параметр] (назначаются с помощью операции Вставка | Имя | Создать).

Они отличаются от таковых в большинстве справочных материалов по математике / физике, потому что в географии азимут обычно берется к востоку от севера, а не к северу от востока. Это делает географический азимут дополнением математического (они суммируются до 90 градусов). Замена угла его дополнением в любой функции триггера обменивает его со своим "со" партнером: синус и косинус взаимозаменяемы, касательная и котангенсная, секущая и косекансная. Кроме того, во многих математических системах «наклон» выражается как угол от истинной вертикали (широта), а не как угол от горизонтали (широта), снова вызывая взаимообмен синуса и косинуса.

Изменить 20.09.13

На забое скважины вы, вероятно, хотите отрицать dZ.

Whuber
источник
Спасибо. Выглядит хорошо! Придется подтвердить тип азимута. Как мне найти радианы в формуле?
Якуб Сисак GeoGraphics
Радианы = Градусы / 180 * Пи
whuber
Право на. Спасибо. Я смотрел на формулу в ссылке выше и чесал голову. Теперь ясно, как колокол.
Якуб Сисак GeoGraphics
@Jakub Вы знаете, что это рабочая, действительная таблица, верно? Вы можете ввести эти формулы в Excel, назвать ячейки в столбце [Значение], как указано в столбце [Параметр] слева, и он запустится. Синий текст вводится; черный - промежуточные вычисления; и красный выводится. Как только вы освоитесь с этим, вы можете изменить свою вторую электронную таблицу, чтобы выполнять вычисления для каждой записи. Единственная хитрость в том, чтобы соединить координаты (X0, Y0, Z0) с первого: сделать это с базой данных или с помощью VLOOKUP ().
whuber
Я не знал Даже лучше! Таким образом, RADIANS - это, очевидно, функция Excel, в которую я передаю либо Azimuth, либо dip.
Якуб Сисак GeoGraphics
3

Хотя это старый вопрос, другие ответы не подходят. Преобразование расстояния (измеренной глубины), угла наклона (наклона), азимута в 3D-координаты зависит от того, как вы интерпретируете происходящее между точками, где проводились измерения (станциями съемки). Сегодня стандартной практикой является «Минимальная кривизна», где предполагается, что круговая дуга соединяет каждую точку съемки.

http://www.drillingformulas.com/minimum-curvature-method/ дает полную информацию о том, как рассчитать координаты X, Y и Z. Соответствующие части:

dMD = Distance2 - Distance1
B = acos(cos(I2 - I1) - (sin(I1)*sin(I2)*(1-cos(A2-A1))))
RF = 2 / B * tan(B / 2)
dX = dMD/2 * (sin(I1)*sin(A1) + sin(I2)*sin(A2))*RF
dY = dMD/2 * (sin(I1)*cos(A1) + sin(I2)*cos(A2))*RF
dZ = dMD/2 * (cos(I1) + cos(I2))*RF

X2 = X1 + dX
Y2 = Y1 + dX
Z2 = Z1 + dX
Эрик
источник
Я обнаружил, что если есть прямой сегмент (I1 == I2 и A1 == A2), то B заканчивается 0, и поэтому RF производит ошибку деления на ноль. В случае, если B равно нулю, тогда я устанавливаю RF в 1 (поскольку предел RF, когда B переходит в 0, равен 1). В противном случае, это прекрасно работает, спасибо!
Саксонский друс