Marks.sml поле lonlatarr. Как закодировать координаты?

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Закрыто
mmxland
Новичок
Сообщения: 1
Зарегистрирован: 13 фев 2013, 03:24
Благодарил (а): 1 раз

Marks.sml поле lonlatarr. Как закодировать координаты?

Сообщение mmxland »

Здравствуйте!

Требуется заполнить поле lonlatarr в Marks.sml для полигона. Пусть координаты вершин будут, например, такие:
(x1: 44.68017200 y1:43.01867800)
(x2: 39.72227100 y2:43.58279500)
(x3: 40.68017200 y3:43.01867800)

Подскажите алгоритм превращения этих координат, в формат SAS.

Знаю, что темы по этому поводу были и не раз, но у меня не получается применить ту информацию ибо там нет конкретики, лишь фрагменты алгоритма...
1. Преобразование втупую из заполненного lonlatarr в Marks.sml по алгоритму BASE64 decode выводит нечитаемое нечто...
2. Фрагмент алгоритма на php выложенного на форуме в ветке http://sasgis.org/forum/viewtopic.php?f=2&t=319 также выводит нечто...

Буду очень признателен за помощь в данной ситуации.
Tolik
Гуру
Сообщения: 2604
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 283 раза
Поблагодарили: 587 раз

Re: Marks.sml поле lonlatarr. Как закодировать координаты?

Сообщение Tolik »

mmxland писал(а): 1. Преобразование втупую из заполненного lonlatarr в Marks.sml по алгоритму BASE64 decode выводит нечитаемое нечто...
Нечитаемое, потому что бинарный файл. Тем не менее видно, что каждая точка занимает 24 байта: 2 координаты по 10 байт и 4 байта непонятно что :)
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Marks.sml поле lonlatarr. Как закодировать координаты?

Сообщение zed »

Tolik писал(а):Тем не менее видно, что каждая точка занимает 24 байта: 2 координаты по 10 байт и 4 байта непонятно что :)
Не непонятно что, а просто мусор. Поскольку тип, в котором хранятся координаты объявлен как:

Код: Выделить всё

type
  TExtendedPoint = record
    X, Y: Extended;
  end;
т.е. без слова packed, а Extended равен 10-ти байтам, то Delphi производит выравнивание памяти до кратности 4-м байтам. Поэтому каждое поле становится по 12 байт, из которых 2 - мусор.
Закрыто

Вернуться в «SAS.Планета»