Декодирование бинарных координат

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
IgAlex
Новоприбывший
Сообщения: 4
Зарегистрирован: 14 авг 2022, 14:42
Репутация: 2
Откуда: Spb

Декодирование бинарных координат

Сообщение IgAlex » 14 авг 2022, 15:12

Буду признателен за любую помощь в преобразовании координат, я уже всю голову сломал. :shock:

Короткая предистория: Достался мне очень старый проект где есть очень много точек нужно перетащить все на карту OSM , файл с точками бинарный, исходников не сохранилось и т.д. все утрачено, известно что используется библиотека от известной компании и раньше они выдавали свою библиотеку через API. Название компания начинается на "2" чья библиотека была :D

Удалось добыть данные:

1. В файле описывается что он использует WGS_1984_UTM_Zone_43N
PROJCS_CODEShow

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

PROJCS["WGS_1984_UTM_Zone_43N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223562997]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]], PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",75],PARAMETER["Scale_Factor",0.9996],UNIT["Meter",1]]
2. Координаты хранятся в map_x, map_y, map_z. Узнал что map_z описывает высоту в сантиметрах.

3. Удалось руками собрать координаты нескольких точек через web сервисы, и достал адреса, название улиц lat,lon

4. Узнал что расстояние между домами:
"Таёжная,5" => X = 4294647729 , Y = 4294473251
"Таёжная,12" => X = 4294644156 , Y = 4294464982
равно по X=3573 по Y=8269, что соответствует 35 метрам и 82 метрам - что подтверждается измерением "линейкой" на карте в web, делаю вывод что X,Y - точно измеряются в сантиметрах. Что еще раз подтвердило что числа преобразовываются из x_hex правильно.

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

| x_hex    | y_hex    | x_long     | y_long     | ru_addr                   | lat       | lon       |
+----------+----------+------------+------------+---------------------------+-----------+-----------+
| A0F2FAFF | FC1AF7FF | 4294636192 | 4294384380 | Когалым,Спортивная,21     | 62.239146 | 74.535233 |
| 7321FBFF | B856F8FF | 4294648179 | 4294465208 | Когалым,Таёжная,11        | 62.246409 | 74.537428 |
| B11FFBFF | 2376F8FF | 4294647729 | 4294473251 | Когалым,Таёжная,5         | 62.247131 | 74.53733  |
| F620FBFF | 895FF8FF | 4294648054 | 4294467465 | Когалым,Таёжная,9         | 62.246612 | 74.537401 |
| A6F2FAFF | 6510F7FF | 4294636198 | 4294381669 | Когалым,Дорожников,4а     | 62.238903 | 74.535238 |
| FFBBFAFF | 4941F7FF | 4294622207 | 4294394185 | Когалым,Романтиков,2а     | 62.240017 | 74.532528 |
| E8BBFAFF | 194BF7FF | 4294622184 | 4294396697 | Когалым,Романтиков,2Б     | 62.240243 | 74.53252  |
| 1AC7FAFF | 354BF7FF | 4294625050 | 4294396725 | Когалым,Романтиков,1      | 62.240247 | 74.533071 |
| BC11FBFF | D655F8FF | 4294644156 | 4294464982 | Когалым,Таёжная,12        | 62.246386 | 74.536654 |
| 7B4E1000 | A7AA0D00 | 1068667    | 895655     | Ортъягун,Дружная,5        | 62.372505 | 74.8037   |
| C34E1000 | 13D50D00 | 1068739    | 906515     | Ортъягун,Дружная,15       | 62.37348  | 74.803737 |

z_long = у всех 330, или 3.3 метра высоты  

Как я эти числа не крутил [x_long,y_long,z_long] - так и не понял как через WGS_1984_UTM_Zone_43N, или что то другое преобразовать их во что то понятное в [lat,lon] :shock: :(

У меня точки стоят вообще в чистом поле, и там адресов вообще нет, только через преобразование этой рефернсной таблицы получится преобразовать их.

Через преобразование, получаю:
Таёжная,5 WGS84 : 62.247131 74.53733
Таёжная,5 1984UTM : 123168.28292354 8312597.1232759

И как привязать [ 123168 , 8312597] к [4294647729 , 4294473251] понять не могу (((

gamm
Гуру
Сообщения: 3745
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 971
Ваше звание: программист
Откуда: Казань

Re: Декодирование бинарных координат

Сообщение gamm » 14 авг 2022, 17:02

мало информации.
1. Откуда взялась таблица, в которой x_hex и прочее, и что в ней. В частности, почему нижние две строки так сильно отличаются
2. Добавьте в таблицу координаты ваших точек в проекции, которая указана, и выложите.

IgAlex
Новоприбывший
Сообщения: 4
Зарегистрирован: 14 авг 2022, 14:42
Репутация: 2
Откуда: Spb

Re: Декодирование бинарных координат

Сообщение IgAlex » 14 авг 2022, 21:52

Технические подробности: Изначально использовалась в виде plugins для 2gis, и имеющий отдельную базу данных - где лежат "мои точки", но координаты в формате 2GIS и служебная информация.

Мои точки и "моя база" - не представляют интереса так как это те же [x_hex, y_hex,z_hex] - пример такой точки [ BC12FBFF,D659F8FF,0] или [8D020000,9101AEFF,0] и служебная информация по точке ( прошивка, id-прибора, mac адресс и т/д и т/п), и находятся точки в поле. ( Z=0 т/к они на земле лежат)

Так как это был plug-in к 2GIS for Windows - то сам 2GIS через API занимался отрисовкой на карте "моих точек".

Мне пришлось разложить весь внутренний формат dgDat достать из него PROJCS, и достать оттуда [ x_hex,y_hex,z_hex ] привязать их к адресу и руками сопоставить [lat,lon] - чтобы построить эту таблицу.

Ощущение что точки могу быть положительными или отрицательными - это когда последние байты "FF" или "00". Других вариантов мне не попалось точке отличные от FF или 00 в конце.

Пример точке в файле dgdat

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

   X.    |  Y.      |   Z     
D030FAFF | F763F9FF | 58020000
74040000 | C10E1200 | 2C010000
F2110500 | 4884FEFF | 2C010000
EE75FBFF | F15AF3FF | 2C010000
AA4A0500 | FBBDFDFF | 2C010000
9F96FEFF | EE7E0400 | 72060000

Кажется что точки на карте - смещены одной центральной точки, и могут быть "+" или "-"

gamm
Гуру
Сообщения: 3745
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 971
Ваше звание: программист
Откуда: Казань

Re: Декодирование бинарных координат

Сообщение gamm » 15 авг 2022, 04:21

Ответов нет ... в частности, как получены в таблице большие координаты 42.... , кто и как породил координаты в первых столбцах, и т.д.

Если изначально грузились координаты всех точек, то вполне могли вычесть среднее, точки лежат в том же порядке. Кто грузил, и где исходные? Почему знака минус нет у столбцов, где 42..., и т.д.

Дополните таблицу, как я просил, и выложите

IgAlex
Новоприбывший
Сообщения: 4
Зарегистрирован: 14 авг 2022, 14:42
Репутация: 2
Откуда: Spb

Re: Декодирование бинарных координат

Сообщение IgAlex » 15 авг 2022, 16:12

Моя ошибка была что я сделал неправильный перевод X=A0F2FAFF Y=FC1AF7FF, преобразовывал в без знаковый Int32, а оказалось что он знаковый:

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

| x_hex    | y_hex    | x_int32 | y_int32 | ru_addr                     |
| A0F2FAFF | FC1AF7FF | -331104 | -582916 | Когалым,Спортивная,21       |
| 7321FBFF | B856F8FF | -319117 | -502088 | Когалым,Таёжная,11          |
| 7B4E1000 | A7AA0D00 | 1068667 | 895655  | Ортъягун,Дружная,5          |
| C34E1000 | 13D50D00 | 1068739 | 906515  | Ортъягун,Дружная,15


Далее, нашлось центральное смешение [ ∂X = -47915896 | ∂Y = -690673760 ] и после этого оказалось все очень просто:

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

X значение 7321FBFF, что равно -319117-(-47915896)   =  47 596 779
Y значение B856F8FF, что равно -502088-(-690673760)  =  690 171 672
Размерность в сантиметрах, делим на 100 => [ 475967.79 , 6901716.72 ]
Это точка в координатах WGS_1984_UTM_Zone_43N, которая преобразуется в WGS84 [74.537428105198, 62.246409171518]

IgAlex
Новоприбывший
Сообщения: 4
Зарегистрирован: 14 авг 2022, 14:42
Репутация: 2
Откуда: Spb

Re: Декодирование бинарных координат

Сообщение IgAlex » 15 авг 2022, 16:13

gamm писал(а):
15 авг 2022, 04:21
Дополните таблицу, как я просил, и выложите
Спасибо, ваши вопросы направили на путь истинный!

gamm
Гуру
Сообщения: 3745
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 971
Ваше звание: программист
Откуда: Казань

Re: Декодирование бинарных координат

Сообщение gamm » 15 авг 2022, 17:44

IgAlex писал(а):
15 авг 2022, 16:13
ваши вопросы направили на путь истинный!
о тож :-) Я сорок лет подобным занимался ...

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя