Эта инструкция пошагово объяснит, как правильно импортировать рельеф в симулятор.
Вам понадобятся программы:
Первое, что Вам необходимо, это знать координаты вашего участка местности, который вы хотите импортировать в игру.
Второе, вы должны знать, с какими файлами вам предстоит работать.
Третье, у вас должны быть эти файлы.
Начнем объяснение на конкретном примере. Вы хотите создать участок железной дороги от гор. Львова до гор. Тернополь. Мы должны знать, какие координаты имеет наш участок. Наш участок местности находится в таких пределах: 23.9° в.д. – 25.7° в.д., 49.5° с.ш. – 49.9° с.ш. С.ш.- это северная широта, в.д.- это восточная долгота.
Попробую дать представление о том, с какими файлами нам предстоит работать. В первую очередь, это файлы SRTM-3. Что это такое? Представьте себе, что поверхность земли покрыта плиткой, как стена в ванной. При этом, каждый угол этих плиток находится на определенной высоте. Территория размером 1 градус по широте и 1 градус по долготе разбита сеткой 1201 на 1201 линий по горизонтали и по вертикали. В пересечениях линий находятся точки высот, на которые дана высота в цифровом двоичном виде. Расстояние между линиями составляет 3 угловые секунды, или примерно 90м. Поэтому и называется формат SRTM-3. Высота задается двумя байтами в диапазоне от 32768м до -32768м с точностью 1м. Первый байт старший, второй байт младший. Сужение территории по широте не учитывается. В самом названии файла задано его местонахождение, оно имеет определенную форму. NxxWyyy, SxxWyyy, NxxEyyy, SxxEyyy, где хх-координата по широте, yyy-координата по долготе. Отсчет начинается с нижнего левого угла.
Существует также формат данных SRTM-1, где количество линий увеличено до 3601 на 3601, а расстояние между ними составляет 1 угловую секунду, или примерно 30м.
Далее нас интересует формат файлов .bil. Он бывает двухбайтный и четырехбайтный. Четырехбайтный - это представление числа в виде с плавающей точкой, с большой точностью. Двухбайтный - то же, что и SRTM, с той лишь разницей, что первый байт младший, а второй старший. Файл .bil может иметь произвольный размер по горизонтали и по вертикали, произвольное расстояние между линиями, которое задается или в угловых секундах, или в метрах. Для его правильного чтения должен присутствовать файл .hdr. В этом файле вся информация о нём сохраняется в текстовом виде. Отсчет в нём ведется с верхнего левого угла. Кроме этих форматов, есть также форматы .bin, почти то же, что и файл .bil, а также текстовый формат DEM DATA, которые я не рассматриваю, потому, что с ними почти не придется работать. Далее, если вас заинтересуют реальные железные дороги, необходимо обзавестись топографическими картами, достаточно и километровок.
Теперь наберитесь терпения и приступим к работе.
Зная нашу территорию, мы определяем, какие топографические карты нам необходимы.
Лучше всего работать с топографическими картамикилометровками, масштаб 1:100000. Нам необходимы карты М34-084, М35-073, 074, 075, М35-087, 088.
Небольшое представление о том, что значат номера карт. Весь земной мир разбит по долготе на 60 зон, через 6°, по широте на 44 сектора, через 4°. Сектора по широте нумеруются латинскими буквами, зоны по долготе цифрами, нумерация начинается от экватора по широте и от 180-го градуса по долготе. Например, сектор М34 занимает территорию от 48° до 52° северной широты и от 18° до 24° восточной долготы.
Далее, участок размером градус на градус дополнительно разбивается на шесть участков, два по горизонтали и три по вертикали. Участки нумеруются цифрами. Начало нумерации происходит слева направо и сверху вниз. Зона состоит из двенадцати полос, в каждой по двенадцать участков. Это касается только карт километровок.
Заранее оговорим, что картой будем считать информационное поле карты, а не весь лист. По углах на полях карты написаны ее координаты, а посредине полей написано, с какими картами она соседствует. Определяем, координаты углов карты, например, М34-084 c запада это 23.5° в.д., с востока 24° в.д., с севера 50° с.ш., с юга 49.666666° с.ш.
С этого момента наши действия таковы.
1. Создаем на диске папку, называем её Lviv-Ter, по названию нашего проекта.
2. Далее заходим в интернет по адресу ftp://e0srp01u.ecs.nasa.gov/srtm/, заходим в папку по древу version2/Srtm3/Evrasia, копируем в нашу папку файлы N49E023.hgt, N49E024.hgt, N49E025.hgt.
3. Запускаем программу Global Mapper. Она должна быть зарегистрирована.
4. Нажимаете File -> Open Data, далее в нашу папку, где вы сохранили файлы рельефа, открываете N49E023.hgt. Перед вами предстанет карта высот. В правом в верхнем угле есть окошко, в нем вы выбираете палитру, которая, по вашему мнению, наиболее лучше позволяет показать карту. Кстати, палитру вы можете создать свою собственную. Ещё правее есть кнопка, которая оттеняет склоны, еще правее - кнопка, позволяющая посмотреть карту в 3D проекции. В общем, поработайте с программой, пригодится.
Следующим шагом Вы нажимаете File -> Export Raster and Elevation Data -> Export Bil.
5. В появившемся окне, в области Format ставим переключатель на Elevation - 4 bytes, а ниже, в области Sample Spacing в ставим в поле X-axis значение 0.000833333, а в поле Y-axis ставим 0.000833333. Галочку Always Generate Square Pixels снимите, она делает файл квадратным, что нам не нужно. Далее ниже Vertical Units – метры, галочку Interpote to Fill Gaps in Elevation Data оставьте. Нажмите ОК.
В появившемся окне далее набираете название файла, который необходимо получить, 4923, нажмите ОК.
6. Global Mapper сгенерирует вам файл с именем 4923.bil.
7. Подобную работу проделайте с файлами N49E024.hgt, N49E025.hgt.
8. Далее нам необходимо увеличить точность этих файлов. При помощи Global Mapper можно проделать эту процедуру, но не рекомендую, так как Global Mapper делает это по линейному закону интерполяции. У нас есть утилита mashtab.exe, которая позволяет проделать масштабирование по квадратичному закону, что намного точнее линейного. В файле mashtab.ini есть такие строчки:
4923.bil - название исходного файла
4923.bil - название получаемого файла, может совпадать с исходным.
1201 - размер по Х
1201 - размер по Y
8 - коэффициент умножения по Х
11 - коэффициент умножения по Y, могут различаться, обязательно целые числа.
Вся информация о файле 4923.bil находится в 4923.hdr.
Содержание файла 4923.hdr такое:
BYTEORDER I
LAYOUT BIL - тип файла
NROWS 1201 - размер по вертикали
NCOLS 1201 - размер по горизонтали
NBANDS 1
NBITS 32 - четырехбайтный
ULXMAP 23.00000000 - долгота верхнего левого угла
ULYMAP 50.00000000 - широта верхнего левого угла
XDIM 0.0008333333333 - угловой размер между точками по Х
YDIM 0.0008333333333 - угловой размер между точками по Y
9. Запускаем утилиту mashtab.exe, получаем увеличенный в 88 раз файл 4923.bil, а файл с расширением .temp удаляем.
10. В файле 4923.hdr изменяем значения в строчках на следующие:
BYTEORDER I
LAYOUT BIL
NROWS 13201
NCOLS 9601
NBANDS 1
NBITS 32
ULXMAP 23.00000000
ULYMAP 50.00000000
XDIM 0.0001041666625 - значения меньше исходных в 8 раз
YDIM 0.000075757545 - значения меньше исходных в 11 раз
Значения по горизонтали и по вертикали увеличиваются по формуле An = (As-1)*К, где
11. Всё, что проделали с файлом 4923.bil, проделайте с остальными файлами 4924.bil, 4925.bil.
12. Запустите Global Mapper, прочитайте вместе ваши новые файлы. Теперь мы обрежем ненужный рельеф. Для этого нажмите File -> Export Raster and Elevation Data -> Export Bil. На вкладке Options ничего не меняете, переключитесь на вкладку Gridding.
В области Grid Layout ставим переключатель на пункт Specifi Number of Rows and Columns. Ставьте Rows: 3, а Columns: 6. Теперь наш записываемый файл будет поделен на 18 отдельных фрагментов. Нажмите ОК, и называйте файл именем L-T.bil, и снова ждмите ОК.
После этого заходим в нашу папку, файлы с именами L-T_А2, L-T_А3, L-T_А4, L-T_А5, L-T_В5, L-T_В6 оставляете, все остальные, включая 4923, 4924, 4925, удаляете.
13. Теперь подготовим наши карты. Если у вас есть файлы привязок с расширением .map, эти действия пропускаем. Если их у вас нет, для ваших карт создадим файлы привязок.
Запускайте Global Mapper. На примере я приведу разметку карты М-37-050, так как все остальные карты у меня преобразованы. Загрузите карту M-37-050. Появится такое окно:
Нажимаете Да, ваша карта загружается программой для привязки. На экране Вы наблюдаете такую картину:
Левое окно предназначено для визуализации карты и для выбора зоны масштабирования. В среднем окне мы наблюдаем увеличенное изображение зоны, которую мы выбрали в левом окне. Если у вас загружен рельеф, Вы его будете наблюдать в правом окне. Общему окну можете изменить размеры по вашему вкусу стандартной процедурой.
В среднем окне подойдите мышкой в верхний левый угол. Нажав и не отпуская левую кнопку, обведите небольшую зону вокруг левого верхнего угла. В среднем окне у вас появится увеличенное изображение этой зоны. Колесо мышки также масштабирует. Увеличивая таким образом несколько раз зону возле левого верхнего угла, мы должны добиться нормального изображения картины, которая на нижнем рисунке.
В самом углу карты, старайтесь как можно точнее, левой кнопкой мыши ставьте точку, она видна на рисунке, она красная.
Ниже в X/Easting/Lon и Y/Northing/Lat указываете, 36.50 и 50.666666 соответственно. На рисунке карты, цифры даны в часовой системе исчисления. Вам необходимо их выставлять в десятичной системе. Знак разделения целой и дробной частей обязательно точка.
В полях Pixel X и Pixel Y указаны координаты точки в пикселях. Если все верно, нажимаете Add GPS to List. Появится окно.
Нажимаете ОК, в списке появится новая запись, а точка превратится в крестик.
Таким образом нам нужно выбрать не меньше четырех точек на карте, например, в углах. Но желательно выбрать больше точек, лучше 9, для более точной привязки карты.
Как только Вы выбрали не меньше четырех точек, нажимаете кнопку ОК, и ваша карта загрузится программой. Теперь при движении мышки у Вас в нижнем правом углу изменяются координаты. Карта выглядит несколько растянутой по горизонтали, в дальнейшем мы это исправим.
14. Теперь необходимо сохранить вашу проделанную работу. Нажимаете File -> Save Workspace, в появившемся окне выбираете нашу папку проекта, название файла, желательно по имени карты - М-37-050, и нажмите ОК.
Создастся файл привязки этой карты. Проделайте подобную работу для всех карт в отдельности.
15. Теперь нам необходимо удалить поля этим картам, ведь если мы загрузим вместе несколько карт, поля карты, которая загрузилась позже, перекроют изображение первой.
Для этого запускаем Adobe Photoshop. Открываем наше изображение. На панели инструментов выбираем инструмент Инструмент "Прямолинейное лассо" (Polygonal Lasso Tool), и этим инструментом выделяем как можно точнее зону карты.
Далее нажимаем правую кнопку мыши, в появившемся меню нажимаем Инверсия выделенной зоны (Select Inverse). Станут выделенными поля карты.
Далее снова нажимаете правую кнопку мыши, выбираете Выполнить заливку... (Fill...), выполняете.
Поля карты стали одноцветными, цвет не имеет значения.
Далее на панели инструментов вы выбираете Инструмент "Волшебный ластик" (Magic Eraser Tool).
Нажимаете на выделенной зоне левой кнопкой мыши, зона станет прозрачной.
После этого сохраняете этот файл под тем же именем, но обязательно в формате PNG, М-37-050.png.
Эти действия проделайте со всеми картами.
16. Нужно поправить наши файлы привязок карт. Файл привязки M-37-050.gmw читается любым текстовым редактором, например, Блокнотом и содержит следующие данные:
GLOBAL_MAPPER_SCRIPT VERSION="1.00" FILENAME="F:Lviv-TerM-37-050.gmw"
UNLOAD_ALL
DEFINE_PROJ PROJ_NAME="GEO_WGS84"
Projection GEOGRAPHIC
Datum WGS84
Zunits NO
Units DD
Xshift 0.000000
Yshift 0.000000
Parameters
END_DEFINE_PROJ
IMPORT FILENAME="F:Lviv-TerM-37-050.jpg" TYPE="JPEG"
PROJ_NAME="GEO_WGS84" RECTIFY="Automatic"
GCP="Point 1,96.0555769,147.3899316,36.5000000,50.6666667"
GCP="Point 2,1141.7456005,145.1991151,36.7500000,50.6666667"
GCP="Point 3,2188.5280081,141.9135706,37.0000000,50.6666667"
GCP="Point 4,95.5926288,1243.5234966,36.5000000,50.5000000"
GCP="Point 5,1144.6312813,1241.4483237,36.7500000,50.5000000"
GCP="Point 6,2194.6262370,1237.4092340,37.0000000,50.5000000"
GCP="Point 7,95.9650900,2340.4277400,36.5000000,50.3333333"
GCP="Point 8,1147.6177926,2336.6107852,36.7500000,50.3333333"
GCP="Point 9,2201.1561902,2333.0597415,37.0000000,50.3333333"
LABEL_FIELD=""
ANTI_ALIAS="YES"
AUTO_CONTRAST="NO"
CONTRAST_SHARED="YES"
CONTRAST_MODE="NONE"
CLIP_COLLAR="NONE"
TEXTURE_MAP="NO"
SET_VIEW
GLOBAL_BOUNDS="36.4632797065,50.2925527278,37.0399050889,50.6992634207"
Расширения файлов jpg замените на png. Файлы в формате jpg теперь можете удалить.
16. Нам необходимо
создать файлы, назовем их Lviv.map и Lviv.bmp.
Lviv.map - это обычный текстовый файл, создаётся он
в обычном Блокноте.
Этот файл необходим нам по следующей причине. Программа Global Mapper читает практически все файлы в прямоугольной проекции, без учета геоэлипсоида Земли, за исключением нескольких типов файлов. Файл с расширением .map как раз исключение, он позволит получить нам и рельеф, и изображение поверхности в нормальном виде, с учетом широты местности. Если кто-то работал с программой OziExplorer, тогда Вам должен быть знаком этот файл. Файл Lviv.map должен иметь следующие строки:
OziExplorer Map Data
File Version 2.2
1111
Lviv.bmp
1, Map Code, Pulkovo 1942 (1), WGS 84, 0.0000, 0.0000, WGS 84
Reserved 1
Reserved 2
Magnetic Variation,,,E
Map Projection,Transverse
Mercator,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No
Point01,xy,0,0,in,deg,49,55.0000,N,23,55.0000,E,grid,,,,N
Point02,xy,100,0,in,deg,49,55.0000,N,24,0.0000,E,grid,,,,N
Point03,xy,100,100,in,deg,49,50.0000,N,24,0.0000,E,grid,,,N
Point04,xy,0,100,in,deg,49,50.0000,N,23,55.0000,E,grid,,,,N
Point05,xy,,,in,deg,,,N,,,E,grid,,,,N
Point06,xy,,,in,deg,,,N,,,E,grid,,,,N
Point07,xy,,,in,deg,,,N,,,E,grid,,,,N
Point08,xy,,,in,deg,,,N,,,E,grid,,,,N
Point09,xy,,,in,deg,,,N,,,E,grid,,,,N
Point10,xy,,,in,deg,,,N,,,E,grid,,,,N
Point11,xy,,,in,deg,,,N,,,E,grid,,,,N
Point12,xy,,,in,deg,,,N,,,E,grid,,,,N
Point13,xy,,,in,deg,,,N,,,E,grid,,,,N
Point14,xy,,,in,deg,,,N,,,E,grid,,,,N
Point15,xy,,,in,deg,,,N,,,E,grid,,,,N
Point16,xy,,,in,deg,,,N,,,E,grid,,,,N
Point17,xy,,,in,deg,,,N,,,E,grid,,,,N
Point18,xy,,,in,deg,,,N,,,E,grid,,,,N
Point19,xy,,,in,deg,,,N,,,E,grid,,,,N
Point20,xy,,,in,deg,,,N,,,E,grid,,,,N
Point21,xy,,,in,deg,,,N,,,E,grid,,,,N
Point22,xy,,,in,deg,,,N,,,E,grid,,,,N
Point23,xy,,,in,deg,,,N,,,E,grid,,,,N
Point24,xy,,,in,deg,,,N,,,E,grid,,,,N
Point25,xy,,,in,deg,,,N,,,E,grid,,,,N
Point26,xy,,,in,deg,,,N,,,E,grid,,,,N
Point27,xy,,,in,deg,,,N,,,E,grid,,,,N
Point28,xy,,,in,deg,,,N,,,E,grid,,,,N
Point29,xy,,,in,deg,,,N,,,E,grid,,,,N
Point30,xy,,,in,deg,,,N,,,E,grid,,,,N
Projection Setup,0.000000000,24.000000000,1.000000000,5500000.00,0.00,,,,,
Map Feature = MF ; Map Comment = MC These follow if they exist
Track File = TF These follow if they exist
Moving Map Parameters = MM? These follow if they exist
MM0,Yes
MMPNUM,4
MMPXY,1,0,0
MMPXY,2,100,0
MMPXY,3,100,100
MMPXY,4,0,100
MMPLL,1,23.000000,50.000000
MMPLL,2,23.500000,50.000000
MMPLL,3,24.500000,49.666667
MMPLL,4,24.000000,49.666667
MM1B,16.880183
Other Grid Setup
GRGRID,No,2 Km,No,16711680,255,No Labels,0,16777215,8,1,Yes,No,No,x
MOP,Map Open Position,0,0
IWH,Map Image Width/Height,2311,2560
Темно-красным цветом выделено название файла, который будет отражаться при чтении. Файлы map и bmp должны совпадать по названию.
Фиолетовым цветом выделены координаты точек рисунка Lviv.bmp, заданы в пикселях, всегда целые числа, их географические координаты выделены оранжевым цветом. Задаются в часовой системе исчисления, т.е. градусы, минуты и секунды.
Последний важный параметр, который надо знать, обозначен голубым цветом. Это долгота, относительно которой будет происходить склонение, всегда будет строго вертикальна.
Все, что обозначено разными цветами, кроме зеленого, необходимо менять в соответствии с координатами вашего проекта. Файл Lviv.bmp может быть любого размера, он в нашем проекте не будет отражаться. Координаты этого файла должны быть очень недалеко от координат вашего проекта.
Создайте в любом графическом редакторе файл Lviv.bmp размером 100х100 пикселей, пусть будет весь белый.
17. Нам необходимо с отдельных кусков рельефа создать один целый, чтобы избежать ошибок. В Global Mapper откройте все ваши файлы L-T.bil, и сохраните их одним единым файлом Lviv-Ter.bil. Удалите ненужные файлы и закройте Global Mapper.
18. Снова запустите Global Mapper, загрузите ваш файл Lviv.bmp, затем загрузите ваш файл рельефа Lviv-Ter.bil, именно в этой последовательности. Здесь очень важно, в какой последовательности Вы грузите файлы, при записи файлы будут записаны в той проекции, в какой был загружен первый файл.
Теперь Вы видите, насколько преобразился ваш файл рельефа, теперь он выглядит естественно, не растянут.
Загрузите ваши карты. Сейчас они ложатся в правильной проекции, сетка имеет правильный квадратный вид, поля карт прозрачны, все карты хорошо пристыкованы одна к другой.