DarkDiver писал(а):Все эти данные есть в моей таблице, на которую я уже не раз ссылался, настоятельно рекомендую все-таки изучить ее внимательно.
Да изучил, внимательней некуда.
DarkDiver писал(а):И обратите внимание, что в МПЦ один и тот же шестнадцатиричный идентификатор иногда соответствует нескольким строковым константам.
Так в этом то и есть проблема. В наборе типов (классификаторе) нельзя иметь два и более одинаковых HEX идентификатора. Тоесть полигон с типом 0x48 (к примеру) должен быть только один. Соответственно типу 0x48 должен быть сопоставлен только один идентификатор MPC. То есть при экспорте в шейп, вместо типа 0x48, мы запишем в таблицу RIVER_100FT.
Можно объединять полигоны в один тип:
К примеру в cGpsMapper мы имеем 3 типа 0x29, 0x3b, 0x45 --- Blue-Unknown, в таблице соответствий мы можем прописать, что это всё, к примеру LAKE (для MPC). Тогда при экспорте в SHP - 3 типа объединятся в один - LAKE.
Но то что вы предлагаете в вашей таблице (GarminTypesTableFull-v05.xls), а именно:
полигон 0x48 = RIVER_100FT
полигон 0x48 = SMALL_RIVER
такого быть не может. Так как в карте мы создали полигон и назначили ему тип 0x48, больше в этом объекте никаких классификаторов не записывается. При перегоне карты в SHP, я должен этому типу сопоставить MPC тип, а это может быть или RIVER_100FT, или SMALL_RIVER.
Поэтому полигону SMALL_RIVER я и сопоставил свободный тип 0x55. Для того чтобы юзер, который создает карты под MPC имел возможность создать и SMALL_RIVER и RIVER_100FT.
DarkDiver писал(а):Данные в этой таблице я придумал не сам, в ней отображено реальное соответствие типов получаемое при компиляции карты в МПЦ (т.е. все данные получены мной экспериментально).
Вот я про этого и говорю. Что вы экспериментировали с какой-то сторонней программой и были заложником того, как это придумал програмист. Тоесть вы высказываетесь, что у вас получалось, при компиляции чемто. То есть то, как это сделала какая то программа. Отбросим эти программы в сторону.
Теперь у вас есть шанс - сделать всё правильно и самому назначить соответствия. Делаем как должно быть.
DarkDiver писал(а):Для точек ADDR_PNT, ARRV_PNT, необходимо выяснить какие именно идентификаторы назначаются при компиляции на самом деле, а не назначать их произвольно.
И что тут выяснять? Нет таких HEX идентификаторов. HEX идентификаторы мы берем из cGpsMapper. А в cGpsMapper таких типов нет. Соответственно и нет идентификатора.
Для cGpsMapper - идентификатором является некое HEX значение
Для MPC - идентификатором является например LARGE_CITY, SMALL_CITY, GOLF_COURSE и т.д.
А посему, мы при спокойно можем сопоставить ADDR_PNT, ARRV_PNT любое свободное значение HEX. При скармливании карты в cGpsMapper - он данные типы не поймет, так как он их не поддерживает.
А при переводе в SHP значения HEX заменятся на ADDR_PNT, ARRV_PNT. Так что не вижу здесь проблем.
DarkDiver писал(а):Полилиния 0x0 не воспринимается cGPSMapper-ом, данный тип отсутствует в МПЦ, данный тип не является роутинговым в Garmin, и назван дорогой этот тип был очень давно по какой-то ошибке, вероятно из-за слабой изученности формата. Пора эту ошибку иправить - предлагаю назвать его Unknown, как и нулевые типы точек и полигонов.
Назвать можно. Принимается. Выбрасывать не будем. Как я уже писал, чтобы не потерять совместимость ну и еще по одной причине. Ну раз 0x0 не воспринимается cGpsMapper, то тожно эту полилинию соотнести с DRIVEWAY в MPC. Посуди сам. Типа 0x0 в cGpsMapper - нет. Стало быть для cGpsMapper - значение 0x0 - свободно. Также в cGpsMapper - нет типа DRIVEWAY. Вот и пусть 0x0 будет DRIVEWAY.
Получится, что данный тип, только для MPC пользователей. Как такой вариант?
DarkDiver писал(а):Еще ошибки:
0x2c08 ARENA
0x2c09 HALL
Согласен. Исправил.
DarkDiver писал(а):И еще:
0x1f00 COUNTY
0x1f00 в cGpsMapper является не задействованным. Можно его обозначить для MPC как COUNTRY. Сделано.
Тогда вопрос, какому типу, сопоставить MPC тип - PROVINCE?
DarkDiver писал(а):0x14 NATIONAL_PARK_MAJOR
0x16 NATIONAL_PARK_OTHER
0x1e STATE_PARK_MAJOR
0x20 STATE_PARK_OTHER
Почему так, а не наоборот? Ведь в cGpsMapper сказано, что 0x14, 0x15, 0x16 - National park. А 0x1e, 0x1f - State park.
Я поменяю, нет проблем, но хотелось бы знать....
Прошу не воспринимать, высказанное выше как упрек или еще както. Это нормальный, рабочий процесс. Прежде чем это всё реализовывать, должно выполнится как минимум ряд условий:
- Мы должны убедиться, что это на 100% правильно и будет работать.
- Всё что мы делаем, должно опираться на документацию.
- После расширения классификатора, пользователь может без труда воспользоваться любым компилятором, буть то cGpsMapper или MPC. Правда для MPC компилятора, еще нужен экспорт в SHP. Но это уже другой вопрос. Сначала нужно разобраться с классификатором и атрибутикой объектов.
- Это нужно и будет востребовано, не только определенным кругом пользователей, но и для любого пользователя.
Продолжаем обсуждение. Где я не прав?