Как нарисовать карту
Где рисовать?
В первых строках сей книги хочу заявить: говорить будем о рисовании электронных карт и немножко о оцифровке с фотографии.
Прежде чем говорить о том в какой программе рисовать оговорим пару важных терминов - векторная и растровая графика.
Векторная графика - это такая графика, которая легко масштабируется и хорошо подходит для рисунков с малой детализацией(Расширения файлов svg svgz cdr ai). Растровая графика - это такая графика, которая плохо масштабируется но множество мелочей в меньшей степени увеличивает размер результирующего файла(Расширения файлов jpg png gif).
Среди важных отличий между этими форматами можно выделить то, что векторная графика активно использует для отрисовки видеокарту и если нарисовать большую и очень подробную карту, то ваш компьютер может перегреться от натуги. Так что будьте умеренны в своих стараниях прорисовать каждый кустик. А рисовать исходно надо именно в редакторе векторной графики, ибо масштабировать нужно будет пусть и не часто, но обязательно. Результат же надо будет экспортировать в файл растровой графики. От того что АТ только её изображением и считает.
Итак для векторной графики я буду использовать Inkscape, а для растровой - Gimp. Оба этих редактора бесплатные, но если у кого есть можно так же использовать пары: CorelDRAW/CorelPHOTO, Adobe Illustrator/Adobe Photoshop. Правда альтернативы платные. Inkscape говорят часто падает, ну... у меня не часто, но да - падает, так что сохраняться периодически надо обязательно. А так, кроме стабильности, по функционалу данные пары программ отличаются слабо. Разве что платные аналоги по подписке предоставляют доступ к коллекциям (не помню точно чтобы не соврать) шаблонов, кистям всяким, текстурам, фильтрам. Короче полезных прибамбасов у платных вариантов ассортимент побольше, но для нашей задачи они не столь нужны.
Схема наших действий следующая:
1. Рисуем саму карту со всеми подробностями в Inkscape. Об этом в следующих "рассказах".
2. С помощью инструмента "Файл>Экспортировать в PNG" экспортируем в растровый рисунок формата png собственно.
Тут важно, чтобы разрешение не было мелким, поэтому играем с полем dpi(количество пикселей на дюйм) чтобы ширина и высота в пикселях была достаточной по вашим представлениям. Меньше 4096 по любому из измерений для карты целого мира лучше не ставить, я даже 8192 ставил для одного материка, но это зависит от количества деталей, что вы на карте разместили. Главное чтобы каждый элемент был виден. Первоначально в png даже желательно с небольшим запасом разрешение взять. После сохранения вы увидите довольно увесистый файл. Если не перестарались с разрешением то до 20 Мб примерно.
3. На предыдущем этапе мы сделали большой и без искажений результирующий файл нашей карты. Но у png с размерами не очень - jpg сжимает лучше. Поэтому мы открываем тот png-файл сейчас с помощью Gimp-а. Если очень надо можно что-нибудь поправить уже его инструментами, это если умеете. Потом в меню "Изображение>Размер изображения..." меняем размер на тот который нам нужен в пикселях, а так же dpi и изменяем размер изображения. 300 dpi - обычно нужно для печати, 100-200 dpi вполне хватает для интернета. Главное чтобы это число не было меньше dpi монитора, тогда никаких не заметных вам искажений не будет.
После изменения размера изображения остался последний штрих - "Файл>Экспортировать как...". Тут нам надо будет изменить расширение файла на jpg и нажать кнопочку "Экспортировать". Но ничего пока не произойдет. Вас могут спросить сначала: "Хотите заменить файл?", если такой файл уже существует, но потом появится окошко с настройками сохранения.
Тут можно поиграться с этими настройками и если карта без особых деталей то можно качество(это степень сжатия 100 - без сжатия, 1 - максимальное сжатие) можно и поменьше взять но меньше 70 для карты не стоит. Пункт оптимизировать, если не много текста можно хоть до упора(правда тогда увеличивать изображение будет нельзя одни пиксели квадратные будут видны). Субвыборка - зависит от количества цветов в карте если их мало, то можно и минимально, как на картинке изображено. Метод DCT это про точность цветов вроде, самое точное Целое, а с плавающей точкой - наоборот. Сохраняем.
Результат этих действий будет весить немного(если пооптимизировали при экспорте в jpg и не очень большое Качество). Если результат на глаз выглядит хорошо то всё - можно его публиковать, если нет - еще немного поиграйтесь с настройками оптимизации изображения и степени сжатия jpg.
Рисуем материки, реки и горы
Чтобы нарисовать материк достаточно любым инструментом создать замкнутый контур. Мы в основном будем это делать с помощью инструмента рисующего кривые Безье.
Для начала требуется нарисовать фигуру примерно необходимой формы. Прорисовывать все возможные детали нет необходимости. Главное для следующего этапа сделать маленькое расстояние между последним и первым узлом, перед замыканием контура.
Нарисовали, теперь используем одно из расширений "Расширения>Изменение контура>Фрактализация".
Фрактализация усложняет контур разбивая каждый отрезок между его узлами на указанное в параметрах число и смещает новые узлы в произвольном направлении. Это позволяет делать береговую линию более естественной. С количеством разделений и сглаженностью можно поиграть получая разные результаты, после чего применить изменения. После чего контур надо снова замкнуть с помощью кривой Безье.
Теперь материк готов. Почти. Частью "материка" считается сейчас и граница, которая выступает за рамки фигуры на половину своей ширины. Поэтому мы убираем заливку границы(меню "Объект>Заливка и обводка"):
И устанавливаем заливку с цветом "земли":
Последним штрихом будет упрощение контура "Контур>Упростить", чтобы убрать "лишние" узлы так как фрактализация добавляет их очень много, и если это не крупный материк получается слишком много узлов. Упрощение не изменяет вид контура, но значительно уменьшает количество узлов.
Аналогичным образом рисуем контур гор на материке, включая фрактализацию и упрощение, если это крупный горный массив. У получившегося горного массива устанавливается цвет или применяется один из фильтров.
Реки рисуются так же, но без замыкания контура и желательно все их узлы сделать сглаженными.
Можно сделать карту более художественной с помощью фильтров. Например к горам применить фильтр "Фильтры>Выпуклости>Convoluted Bump", или применить текстуру с изображением гор. К самому материку можно применить фильтр "Фильтры>Выпуклости>Thick Paint", который правда искажает контуры материка в сторону увеличения. Поэтому в этой версии возможно придется дорисовать реку.
Такой вид неплохо подойдёт для изображения общей карты с взаимным расположением материков без особых подробностей.
Масштаб, размеры, площадь и общая карта
Нарисован только один материк, но ещё не понятен его размер, будут ли другие материки и каково их взаимное расположение. Но прежде чем работать с масштабированием озаботимся группировкой уже нарисованного. Откроем "Объект>Объекты", и там в слое где расположено всё нарисованное выберем наш континент, реки и горы с зажатим Ctrl или Shift. После этого объединим их в одну группу, чтобы в дальнейшем работать с ними как с одним объектом.
Там же можно переименовать сами объекты и группу, чтобы названия не были обезличенными:
Все теперь можно произвольно изменять масштаб группы и будут меняться все включенные в него объекты. Правда пока преждевременно масштабировать, мы же не знаем размера континента. Для обозначения размера надо лишь нарисовать мерную горизонтальную риску с помощью инструмента кривых Безье и приравнять её размер к какому нибудь расстоянию. Расстояние может быть в километрах, лигах, вспашках... Всё теперь, зная длину мерной риски, и её пропорции к реальному расстоянию мы уже можем узнать длину любой кривой и площадь фигуры.
Для более удобного рисования мерной риски в настройках кривой Безье нужно включить режим рисования горизонтальных и вертикальных линий:
После того как нарисована линия её можно измерить инструментом "Расширения>Визуализация контура>Измерить контур". Устанавливаем измерение длины (по умолчанию) и пропорции по отношению 1 миллиметра к 1 километру, но подразумевая лиги, вспашки и пр. Для получения нужного числа пропорции нужно количество километров (лиг, вспашек) в мерной линии умножить на 1000000 и разделить на длину этой линии в миллиметрах, что показывает Inkscape в свойствах объекта.
Поиграв с размером линии, количеством километров в ней можно добиться нужного результата в площади континента или длине реки. Длину реки (незамкнутого контура) и континента (замкнутого) контура можно узнать тем же способом. Возможно есть и более удобный способ, чем добавление вычисленного значения на изображение, но я его не нашел, поэтому смотрю число на предпросмотре. Пример длины реки:
У замкнутого контура можно измерить ещё и площадь:
Закончив подгонку площади или линейных размеров одного из объектов под нужную величину оставляем в дальнейшем мерную линию без изменений и масштабируем уже только добавляемые материки\острова. При масштабировании, правда, изменяются ещё и ширина контуров (ширина границ - толщина реки), поэтому после завершения масштабирования надо не забыть исправить на нужную ширину рек окне "Объект>Заливка и обводка":
Непосредственно перед масштабированием группы материка необходимо убедиться в том, что зафиксировано соотношение сторон у объекта:
Ширину и высоту можно менять как непосредственно в полях для них, так и с помощью инструмента масштабирования "Объект>Трансформировать" вкладка Масштаб, где можно указать величину изменения в процентах. Там же есть и вкладка Вращение, позволяющее на точно определенный угол вращать объекты, если расположение как нарисовалось не нравиться:
Добавляем все континенты, размещаем их, подбираем площади масштабированием и вуаля - общая карта готова.
Технические подробности они же трудности
Если у нас карта плоского мира то всё хорошо и дальше можно не читать. Но если нет - мы в жо...
Если карта нарисована в проекции Меркатора, которая нужна в основном мореплавателям и воздухоплавателям, то внезапно окажется, что почти все наши точно вычисленные расстояния и площади неверны потому что в этой проекции не искажаются только углы. Поэтому по такой карте мерить расстояния нельзя.
Я предпочитаю считать, что карта нарисована в азимутной равнодистантной проекции, которая сохраняет расстояния вдоль больших окружностей, исходящих из центра. Центр тут является касательная точка плоскости к сфере, с которой на ту плоскость проецируется карта. С помощью инструмента "Расширения>Отрисовка>Сетки>Полярная сетка" можно для наглядности нарисовать сетку такой проекции:
При такой проекции в определённом радиусе всё нарисовано без особых искажений. При длине экватора Земли примерно 40000 километров, в подобной проекции карта в радиусе 10000 километров имеет минимальные искажения. В радиусе от 10 до 15 тысяч километров - средние искажения, а дальше вообще можно не смотреть. Радиус Земли - 6371 километр. Из этих цифр можно посчитать какие максимально материки можно рисовать в придуманном мире. Главное определиться с радиусом планеты. Если параллельный мир на планете размером с Землю то цифры уже есть. Варианты построения проекций карты:
Таким образом мы имеем изображения всех материков и нам известны их размеры. Можно проверить не больше ли они площади планеты. Площадь сферы рассчитывается по формуле:
Проверили? Место на моря, хотя бы треть, осталось? Но мы еще не разместили материки относительно друг друга, чтобы можно было расстояния между ними мерить. Если действия книги не выходят за рамки одного материка, то ну его, а если выходят... То смотрим картинку:
Для добавления на карту материка, нарисованного на зелёной плоскости, материка, нарисованного на жёлтой плоскости требуется совместить центры их сеток после чего растянуть по вертикали и сжать по горизонтали пропорционально расстоянию от центра координатной сетки первого материка до центра координатной сетки второго материка, после чего сместить на разницу в широте вверх, на разницу в долготе вправо после чего повернуть получившуюся кляксу на угол равный радиусу долготы против часовой стрелки. В результате получим примерно то что и должно быть у нас на карте по науке. Хотя искажать по высоте и ширине совсем не обязательно. Если ширина второй карты достаточна чтобы другой кончик материка был виден с другой стороны, то этот материк нужно добавить на карту еще раз. И так проделываем для всех материков и групп островов, которые нарисовали.
Впечатлились? Никогда не пишите книги с действием по всему миру. Всё хорошо в меру. Ну, или пусть мир будет плоским.
Можно, конечно, обойтись картой с проекцией Меркатора и мерять все расстояния на глазок, но всеми заклёпочниками будете тогда прокляты.
Хотя есть еще вариант нарисовать карту без искажений площадей и расстояний с пропорциями, но углы там будут искажены примерно ка на этой картинке:
Политическая карта
Итак у нас есть материки, острова всякие теперь нам надо придумать государства. Названия как нибудь сами, а вот как по быстрому нарезать земли можно и рассказать.
Тут у нас идёт работа в основном с контурами и все команды находятся в соответствующем меню. Контур каждой страны, пока мы будем их формировать, не должен иметь обводки, чтобы при масштабировании не появлялись не нужные промежутки.
Алгоритм добавления страны:
1. Масштабируем окно, чтобы вся будущая страна помещалась на экране. Это не обязательно, но для удобства.
2. Рисуем примерную форму будущей страны захватывая с запасом море, территорию за рекой если граница по реке и территории уже нарисованных стран, с которыми новая страна будет соседствовать. Все это делается на дополнительном верхнем слое.
3. Применяем "Расширения>Изменение контура>Фрактализация", после чего проверяем содержит ли контур весь нужный океанский берег, участок реки или часть границы соседа и если надо поправляем. Чтобы не было слишком много узлов не забываем упростить контур.
4. Если страна морская то выделяем контур континента, дублируем его с помощью команды "Правка>Продублировать(Ctrl+D)". После чего для удобства перемещаем на слой с контуром новой страны. Выделяем контур новой страны и континента и выполняем операцию "Контур>Пересечение".
5. Если страна имеет границу по реке, то дублируем контур реки с перемещением на верхний слой. Выделяем контур страны и реки после чего выполняем операцию "Контур>Разность". При этой операции копия реки должна быть над контуром страны. Если нам надо половина страны с другой стороны реки то дублируем страну. Выделяем верхнюю копию и реку и выполняем "Контур>Исключающее ИЛИ", после чего выделяем результат и контур страны ниже и выполняем Разность. Если часть границы по реке а часть нет, то разделяем с контур страны на части где по границе реки, а где нет и после объединяем контуры обратно. Но это если контуры простые сработает. Лучше всего после дублирования реки и переноса на слой, удалить узлы реки входящие в страну, а остальные замкнуть контур с противоположной от страны стороны. После чего установить заливку, убрать границы и вычесть получившийся объект.
6. Дублируем уже нарисованную страну соседа в верхний слой, чтобы дубль был выше, после чего выделяем оба контура и применяем Разность. И так для каждого соседа.
7. Если страна еще имеет острова или состоит из них можно просто обвести их контуром, дублировать каждый остров, выделить дубли и этот контур и применить Пересечение. После чего получившийся контур прибавить к материковой части.
8. Даем более удобоваримое латинское название контуру и можно еще обозвать страну на русском в "Объект>Свойства объекта" в поле Название. После чего перемещаем получившийся результат на слой к другим уже готовым странам.
Когда на материке не останеться ни одного свободного места можно выделить все контуры стран и применить "Расширения>Цвет>Случайные значения". Получится политическая карта материка. Так же можно все реки и озёра перенести на слой выше слоя со странами чтобы были видны водоёмы и реки. Или можно просто установить границы стран, но убрать заливку.
На слой выше политической можно добавить обозначения городов. Подписи как стран так и городов лучше размещать на отдельных слоях выше, для удобства выделения однотипных объектов.
Контур страны с соседями можно копировать в отдельный файл (лучше всего с мерной линией, чтобы не нужно было долго высчитывать масштаб), там все вместе увеличить (точность у программы не абсолютная, так что лучше общий размер карты определять в сантиметрах хотя бы), после чего можно рисовать отдельно подробные карты стран и регионов. Контуры гор и рек с озёрами прихватывать нужно тоже обязательно, чтобы их взаимное расположение потом не подбирать. Для этого всё необходимое выделяем в окне Объекты на разных слоях удерживая Ctrl.
Оцифровка растровой карты
Если понимать под оцифровкой перевод в svg для дальнейшей обработки, то тут надо упомянуть и другие векторные форматы, которые для этого надо просто экспортировать/сохранить как... в svg. Это файлы PowerPoint или рисунки и презентации Open/Libre Office. Так что там всё просто.
Но иногда уже есть готовая карта нарисованная на листке и есть возможность её сфотографировать(отсканировать). Наша же задача сделать векторный вариант данной карты. Я очень надеюсь, что карта сфотографирована ровно, потому как иначе будут искажения пропорций в результате.
Запускаем Inkscape и создаем новый файл для карты. Дальше нам нужно импортировать растровое изображения с помощью "Файл>Импортировать". Можно просто связывать файл, а не встраивать, всё равно он нам внутри нужен не надолго и потом мы его удалим. Импортированный файл масштабируем в сторону увеличения в случае необходимости, после чего фиксируем его на месте в окне Объекты (закрываем замочек), чтобы случайно не сместить изображение.
Далее обводим береговые границы материков и островов. Я предпочитаю как и раньше кривыми Безье. Стараемся чтобы линии точнее повторяли изображённое на растре. После континентов и островов обводим озёра и реки, помещая для удобства их на отдельный слой. Ещё на один слой контуры горных массивов.
Техникой как в рассказе про отрисовку политической карты создаём контуры стран. Последними в отдельном слое отмечаем города.
Теперь можно разместить подписи всего этого на ещё одном слое.
После подбора заливок, границ, цветов и прочего карта готова к дальнейшей обработке или публикации. В целом лёгкая, но кропотливая работа. Чтобы с ней не возиться лучше сразу рисовать карты в векторном редакторе.
Бонус. Рисуем обложку
Некоторые (не будем показывать пальцем) добавляют в качестве обложки просто картинку без текста. Но мы так делать не будем, мы её ещё и подпишем.
Итак создаём новый файл в Inkscape и в "Файл>Свойства документа" устанавливаем размеры 265 мм ширины и 400 мм высоты. Эти размеры с большим запасом, на самом деле можно и поменьше в два три раза, но главное пропорции сохранить какие хочет видеть АТ.
На нижний слой помещаем фоновую картинку, если её нет, то просто прямоугольник с определённым цветом, а можно и фильтр применить. Например кору. У меня так получилось:
Кора берётся с тем оттенком, что был у заливки. Если фоновой картинки которую вам нарисовали(стырили из интернета) не хватает по пропорциям на всю обложку можно недостающие части прикрыть такими же "панельками".
Итак фон готов, хотя я туда добавил нарисованный материк, с применёнными фильтрами. Теперь можно приступать к нанесению надписей. Выбираем шрифт покрасивше (на свой вкус и цвет) и пишем название книги. Можно одним объектом, а можно как я - каждое слово в отдельный объект.
Чем хорош векторный редактор: тем что в нём можно как угодно издеваться над формами букв и делать это удобно. Первоначально надо оконтурить каждый объект текста, потом объединить все буквы в один контур и для удобства разгруппировать оставшийся path. Оконтуренный текст изменять легко. Например можно к последней к "как" подвести вопрос, наложить на неё и объединить два контура.
Объединять можно не обязательно с вопросом, а с любым контуром. После "поправок" в вид букв и слов их можно как вам хочется разместить на обложке и раскрасить в любые нужные цвета или(и) применить фильтры.
Текст так же можно расположить вдоль контура(не по прямой). Вариантов масса, аж глаза разбегаются. Но выбрав окончательный вариант экспортируем в PNG, а в Gimp изменяем размер изображения на скажем 480 на 724 и сохраняем для веб. Получившуюся картинку можно ставить в качестве обложки.
Спасибо за чтение
Вернуться к книге
