|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Здравствуйте! Вопрос больше математический нежили программный. У меня имеется набор географических координат (WGS1984), в градусах: Код: plaintext 1. 2. 3. 4.
А мне нужно чтобы эти точки крупным планом позиционировались на весь контроле Casvas. Т.е. нужно как-то преобразовать эти координаты в границы контролла Casvas (x = 0 ... 500, y = 0 ... 250). Может кто нибудь подсказать как выполнить это математическое преобразование? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 09:40 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Нуууууу, порассуждал бы сам логически У тебя градусный масштаб 360 по горизонтали и 360 по вертикали. Соответственно, множитель для широты у тебя 500/360=1,389, а для долготы - 250/360=0,694. Только очевидно нужно еще для южной широты и западной долготы сделать числа отрицательными (ибо откладываются они в обе стороны от экватора и от нулевого меридиана и сдвинуть на +180 (чтобы из диапазона -180-180 получить диапазон 0-360) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 11:52 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Или ты хочешь, чтобы крайние точки во вполне конкретном наборе координат находились на краю канваса, а все остальные - расположились относительно них? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:01 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Shocker.ProИли ты хочешь, чтобы крайние точки во вполне конкретном наборе координат находились на краю канваса, а все остальные - расположились относительно них?если так, тогда алгоритм такой 1) найти максимум и минимум значений координат 2) вычислить между ними разницу 3) разделить на эту разницу 500 (или 250) - получишь коэффициент 4) вычесть из каждой координаты минимальную координату и результат умножить на коэффициент В случае, если нужно сохранить пропорции, нужно использовать единый коэффициент для x и y (минимальный) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:11 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Shocker.ProНуууууу, порассуждал бы сам логически У тебя градусный масштаб 360 по горизонтали и 360 по вертикали. Соответственно, множитель для широты у тебя 500/360=1,389, а для долготы - 250/360=0,694. Только очевидно нужно еще для южной широты и западной долготы сделать числа отрицательными (ибо откладываются они в обе стороны от экватора и от нулевого меридиана и сдвинуть на +180 (чтобы из диапазона -180-180 получить диапазон 0-360) при помощи этих коэффициентов задачу решить не вышло, в окне приложения они все равно будут в виде одной точки. А нужно чтобы масштабировалось расположение точек на весь контрол Casvas (Size 500x250) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:14 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
>Nechto, сегодня, 09:40 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1254957&msg=20339646] [20339646] >...Может кто нибудь подсказать ... А если пойти несколько другим путём - посмотрите на это и это . С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:15 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
ВМоисеев>Nechto, сегодня, 09:40 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1254957&msg=20339646] [20339646] >...Может кто нибудь подсказать ... А если пойти несколько другим путём - посмотрите на это и это . С уважением, Владимир Есть и такой вариант . Задача по сути простая, и навешивать кучу библиотек для её решения не целесообразно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:24 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Shocker.ProShocker.ProИли ты хочешь, чтобы крайние точки во вполне конкретном наборе координат находились на краю канваса, а все остальные - расположились относительно них?если так, тогда алгоритм такой 1) найти максимум и минимум значений координат 2) вычислить между ними разницу 3) разделить на эту разницу 500 (или 250) - получишь коэффициент 4) вычесть из каждой координаты минимальную координату и результат умножить на коэффициент В случае, если нужно сохранить пропорции, нужно использовать единый коэффициент для x и y (минимальный) Нужно чтобы эти точки масштабировались по границам контрола casvas (500x250). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:26 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
NechtoShocker.Proпропущено... если так, тогда алгоритм такой 1) найти максимум и минимум значений координат 2) вычислить между ними разницу 3) разделить на эту разницу 500 (или 250) - получишь коэффициент 4) вычесть из каждой координаты минимальную координату и результат умножить на коэффициент В случае, если нужно сохранить пропорции, нужно использовать единый коэффициент для x и y (минимальный) Нужно чтобы эти точки масштабировались по границам контрола casvas (500x250).ну вот, действуй по этому алгоритму. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:29 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Shocker.ProУ тебя градусный масштаб 360 по горизонтали и 360 по вертикали. Соответственно, множитель для широты у тебя 500/360=1,389, а для долготы - 250/360=0,694. Это только в очень грубом приближении. Для менее приближенных расчетов нужно еще учитывать форму геоида. А для относительно точных расчетов для WGS 84 нужно еще много чего учитывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:31 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Еще нужно не забыть про ориентацию координатной системы. Т.е. координатная система канваса будет соответствовать южной широте и восточной долготе, таким образом в других случаях ее надо "отзеркалить" (500-x и 250-y) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:33 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Alibek B.учитывать форму геоида.все зависит от типа проекции геоида на плоскость, тут вообще куча вариантов ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2017, 12:34 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Спасибо все получилось! Географические координаты перевел в нужную проекцию, и посчитал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2017, 09:13 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Оказывается я не полностью решил задачу. Пропорции объектов в canvas не соблюдаются. Вы упоминали, что нужно какой-то минимальный коэффициент для соблюдения пропорций, а вот какой? Да ещё хотелось бы понять как изменять масштаб объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2017, 14:38 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
NechtoПропорции объектов в canvas не соблюдаютсяну так понятно, вы же пытаетесь вписать координаты не в квадрат, а в прямоугольник, вот они и сплющиваются. Выберите ЕДИНЫЙ коэффициент для абсцисс и ординат (очевидно, наименьший из двух вычисленных) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2017, 14:44 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Shocker.ProNechtoПропорции объектов в canvas не соблюдаютсяну так понятно, вы же пытаетесь вписать координаты не в квадрат, а в прямоугольник, вот они и сплющиваются. Выберите ЕДИНЫЙ коэффициент для абсцисс и ординат (очевидно, наименьший из двух вычисленных) Покажите пожалуйста примером? А то я чё то не до понимаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2017, 15:31 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
koff = min(koffX, koffY) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2017, 15:48 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
NechtoДа ещё хотелось бы понять как изменять масштаб объектов.как раз-таки изменять этот полученный коэффициент ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2017, 15:54 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Alibek B.koff = min(koffX, koffY) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Нашел минимальный коэффициент. Не выходит, объекты выходят за рамки canvas. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2017, 07:11 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Получилось! Только вот нахождением не минимального а максимального коэффициента. Теперь объекты позиционируются правильно. Только вот единственное всегда с левой стороны Canvas. Как можно сдвинуть их к центру? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2017, 07:20 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2017, 09:18 |
|
c# конвертация гео координат в оконные x y
|
|||
---|---|---|---|
#18+
Nechtoминимального а максимального коэффициентада, конечно, он же в знаменателе... Nechtoя так понимаю нужно найти максимальную по X и как-то посчитать смещение.для коэффициента, который совпадает с максимальным, считать смещение смысла нет, он будет нулевой. для второй величины смещение будет пропорционально отношению коэффициентов. То есть например, для Y в формуле будут участвовать koffMax, koffY, heigthCanvas. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2017, 10:20 |
|
|
start [/forum/topic.php?fid=21&msg=39432064&tid=1440541]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 244ms |
total: | 388ms |
0 / 0 |