Вопрос

У меня есть x,y данные, поступающие из [coordinates1] база данных (ГИС – но это может быть любая база данных).У меня есть приложение с собственной системой координат, ссылающееся на ТУ ЖЕ КАРТУ.

Я установил, что между координатами1 (x,y) и coordinates2(x,y) поскольку я вычел две разные координаты1 и coordinates2 (разделение x1 с x2 и y1 с y2), и во всех случаях я получаю, что они оба показывают 0,724, 0,141 или 0,825 соответственно, т.е.координаты1 + координаты2.

Что мне теперь нужно выяснить (или вы поможете), так это то, что если coordinates1(100000,200000) и coordinates2(0.125,0.255) как мне рассчитать coordinates2(x,y) из данных в coordinates1(x,y)?

Это было полезно?

Решение

Для наглядности буду называть координаты в вашей базе(Иксн, йн) и координаты вашей цели (тын, вн).

Теперь, если мы предположим:

  1. Начало обеих систем координат одинаково.
  2. Ориентация двух систем координат одинакова (т.е.одно не повернуто относительно другого).

В этом случае вам понадобится только один набор точек {(Икс1, й1), (ты1, в1)}, чтобы определить местоположение (тын, вн):

  • тын = ты1/Икс1 * Иксн
  • вн = в1/й1 * йн

Примечание:мы должны иметь Икс1 ≠ 0, й1 ≠ 0


С другой стороны, если две системы координат имеют разное начало координат (но они еще не повернуты относительно друг друга), нам понадобятся два набора точек {(Икс1, й1), (ты1, в1)} и {(Икс2, й2), (ты2, в2)}:

  • тын = (ты2 - ты1)/(Икс2 - Икс1) * (Иксн - Икс1) + ты1
  • вн = (в2 - в1)/(й2 - й1) * (йн - й1) + в1

Примечание:мы должны иметь Икс1Икс2, й1й2


Теперь, если две системы координат повернуты относительно друг друга, вам понадобится (я полагаю) еще один набор совпадающих координат.Но похоже, что вам это не нужно (если только на одной из ваших карт север не указывает в другом направлении, а не прямо вверх), поэтому я не собираюсь сейчас заниматься математикой.:)

Другие советы

Чтобы выполнить преобразование, вам необходимо знать координаты одной точки. O в ваших двух системах координат.

Давайте предположим O имеет координаты x1O,y1O в системе координат 1 и x2O,y2O в системе координат 2.

Тогда точка с координатами x1,y1 в системе 1, и x2,y2 в системе 2 будет удовлетворять:

(x1O - x1) = Kx * (x2O - x2)
(y1O - y1) = Ky * (y2O - y2)

где Kx и Ky являются масштабным коэффициентом.Если вы знаете координаты другой точки M в обеих системах, то у вас будет Kx и Ky с

Kx = (x1O - x1M) / (x2O - x2M)
Ky = (y1O - y1M) / (y2O - y2M)

Затем вам просто нужно применить первое отношение для перехода от одной системы к другой, с

x1 = x1O - Kx * (x2O - x2)
y1 = y10 - Ky * (y2O - y2)

или

x2 = x2O - (x1O - x1) / Kx
y2 = y2O - (y1O - y1) / Ky

Вам тоже нужен код?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top