Если кто помнит, какое-то время назад я писал о масштабнейшем грабеже серверов NASA на предмет геоинформационных данных, проведенном вашим покорной слугой. То была прихоть, хотя результаты этой прихоти мне не раз пригодились и наверняка еще будут пригождаться. А вот теперь поговорим о необходимостях, и как мы их бороли.
Итак, для одного небольшого проекта понадобилась мне сущая мелочь: высокодетальная политическая карта мира с обозначенными границами, крупными водоемами и хорошо нанесенной береговой линией. Вы, которые кричите из заднего ряда что-то про стандартный шейп ESRI, встаньте и покиньте аудиторию. Шейпы ESRI имеют качество достаточное разве что для рисования на заборах. А когда я говорю "высокодетальная", это означает разрешение не хуже 300 метров. И в векторе, ага. Причем вектор должен в итоге стать файлом AI/EPS пригодным для вставки в верстку на развороте примерно в А2.
Что-то искать мне было ужасно лениво. На проект выделены были какие-то финансы, так что карту я поначалу решил попросту купить. Первый экземпляр "векторной карты мира" стоил 199 убитых ежей, и предлагался для предпросмотра в формате PDF без возможности редактирования. Упоминание какого-то Print Size на ВЕКТОРНОЙ карте меня сразу насторожило. Скачав PDF, я его немедленно разлочил (наивность поставщиков не может не умилять: распечатка карты не запрещена, ну а напечатать PDF еще раз в тот же PDF... вы поняли) и глянул.
Феерия! Побережье Италии набито выраженными пиксельными квадратиками! Они, конечно, видны только на большом увеличении, но на что еще нужен вектор?.. Короче, 199 уёв не покинули карман, а поиски были продолжены. Следующий кандидат отличался тем, что границы стран не совпадали друг с другом. Между странами наблюдались бездонные ущелья неправильной формы, видимые невооруженным взглядом. Ясно дело, идут лесом.
3-й вариант тронул мою мещанскую душонку гарантией возврата денег и прочего удовлетворения. Клюнув, я попытался оплатить сию карту, тем более, что она на первый взгляд была лишена упомянутых глюков. Как бы не так! Русские кредитки за бугром не принимаются. По этому поводу я написал возмущенное письмо администрации, и они очень нежно поговорили со мной в ответ. Переписка продолжалась двое суток. Ребята лезли из кожи вон, чтобы доставить мне удовольствие. Поспособствовали в заведении аккаунта PayPal, прислали растризованные фрагменты для ознакомления (15 мегапикселов примерно, чепуха какая), и искренне пытались изыскать методы сотрудничества. Но фирма - одно, а банки - другое. Им не до сотрудничества, они русским не доверяют.
Уже в конце первого дня переписки у меня начало шевелиться подозрение, что дело пахнет керосином, и надежды на то, что кто-то сделает часть работы по подготовке векторной карты остается все меньше и меньше. Сроки, опять же. Пришлось засучить рукава.
Ну береговая линия - это не в счет, неинтересно даже. SWBD в высокодетальных шейпах мы награбили еще раньше, их и заюзали. Вот реки, озера и границы - это другое дело.
Что вы думаете? На все про все ушло минут 20. Добрые ребята из ЦРУ и Стэнфорда держат прекрасные векторы у себя на серверах. Бесплатно, заметьте. Только вот эти векторы имеют ну совершенно своеобразный формат. Своеобразие его в том, что это вообще-то ASCII-точки, но неправильные: повернутые на 90 градусов и с отсутствующим хэдером. Короче, утилиту для его чтения искать пришлось гораздо дольше. И еще намного дольше настраивать.
Но вот у нас есть загруженные вектора, подходим к самому интересному. Экспорт в Иллюстратор. Сначала пробуем SVG. Без шансов. Берем DXF. Машина с 4 Гб ОЗУ и столько же свопа озадаченно шуршит своими рэйдами на протяжении 30 минут, пока индикатор использования памяти не доползает до отметки 100% (обя процессорных ядра на пределе с самого начала операции). После этого выдается обнадеживающее сообщение Out of Memory. Если бы я не сидел на стуле, я бы упал. 7 гигов адресуемого пространства ей не хватает!
Но надо что-то делать. После еще некоторого времени бороздения интернета находим утилитку для прямой конверсии DXF в PDF. Конвертим. Получаем файлик мегов в 300. Тихо радуемся еще 10 минут, пока Иллюстратор не выдает "Not enough memory to complete operation". Почему? Да потому что в результирующем файле каждая линия - даже прямая - размечена многими-многими точками. И точек тех - мильон. Отрисовать это безобразие никаких мозгов не хватит.
Теперь это уже вопрос принципа. У меня есть вектор, который нельзя юзать? Абсурд! Сохраняем мир в растровом файле размером примерно 35000х19000. Таки оттрасируем, думаю. Не тут-то было! Фотошопу хоть бы хны, он прекрасно с этими файлами работает. Иллюстратор их тоже открывает. Пробует трассировать, и выдает нам девственно белый лист. Ибо линии толщиной в 1 пиксел - это не комильфо при таком разрешении.
Немного пободались. Попробовали Корел, несколько внешних утилит. Попробовали в Фотошопе увеличить толщину линий. На толщине в 3 пиксела трассировщики начали их замечать. Качество все равно оставалось совершенно неадекватным. На этом этапе я плюнул на все и пошел домой.
Но зудело. Опять же, сроки. Дома бук; это, конечно, не чета рабочему монстру, но хоть чего поищу в плане решений. Заход с другой стороны: найти утилиту для конвертирования шейпов или DXF в Иллюстратор с одновременной оптимизацией. Ну поискал. Ну нашел Mapublisher, скачал триал. Просто ради хохмы попробовал им скушать базовый шейп. И вот тут меня просто убило. Всего за 2 (!) минуты на слабеньком ноутбуке с гигом ОЗУ, интегрированным видео и кучей мусора в памяти Иллюстратор кушает ТОТ ЖЕ САМЫЙ шейп. Точно с тем же числом точек. Только он не требует докупить ему еще гигабайт 16 для завершения операции, а спокойненько его отрисовывает. И после этого так же спокойненько за минуту делает Simplify по всем линиям мира: рекам, береговой линии, границам, озерам, лужам, бессейнам... После чего преспокойно сохраняет результирующий вектор, который ни капли детальности не потерял, но число точек сошло на разумные 6-7 тысяч вместо запредельных миллионов. Но до этого он те миллионы ведь отобразил!
А чтобы прикончить меня алогичностью мира окончательно файл этот весит всего 2 мега с копейками. А исходный шейп весил больше 600. Детальность, заметьте, не потеряна ни в чем, она даже малость избыточна.
Выводы:
1. Деньги пока сныканы.
2. Мозги неплохо размялись.
3. Коммерческие векторные карты - полный отстой.
4. Платежные системы идут лесом.
5. Наконец-то у меня есть предельно детальный векторный мир, комплект геоинформатики теперь полон.
6. Мир нелогичен, непоследователен и стохастичен.
7. Система управления памятью в Виндах ни на что не годится.
Наверное есть еще много далеко идущих выводов, но спать тоже когда-то надо.