Как стать автором
Обновить

Практика применения смекалки, или как превратить рутину в удовольствие

Чулан
Как известно, любая задача имеет минимум два варианта решения. И очень часто самое прямое решение, что называется, «в лоб», бывает не самым лучшим. Многие из нас, правда, особо не заморачиваются по этому поводу (что уж грех таить — сам во некоторых случаях поступаю точно так же, не смотря на все мотивации и гайки в голове «так нельзя») и решают поставленную задачи так, как это видно, а не так, как можно было бы. Вот и у меня, по роду моей деятельности, недавно привалило немного откровенно нудной рутины, которую я не особо почитаю и в большинстве случаев стараюсь избегать. Как же быть в таком случае?

Так получилось, что на одном из проектов попалась довольно занятная задача — сделать страничку с картой, разбитой по областям страны, в довесок ко всем прочим прелестям еще и при наведении мышки на определенную область она должна была визуально выделяться на фоне остальных регионов. В принципе, все довольно просто и никаких подводных камней быть не должно — берем обычный тег , заполняем его нужными полигонами, вешаем на полигоны обработчик, который будет показывать альтернативное изображение области… В общем и целом все довольно прозаично, за исключением одного «Но» — карта достаточно подробная, без какого либо намека на векторные форматы.

Выходит, чтобы получить заветные координаты каждой области (а их, к слову, было около 20) — нужно не одну и не две минуты просидеть в gimp'e/photoshop'e, скрупулезно собирая координаты границ каждого полигона для области на карте. Занятие, я вам скажу, не очень приятное. Одной мысли, в какое время это выльется, для меня было достаточно, чтобы начать искать обходные маневры и пытаться выискать какое-либо альтернативное решение. И именно в этот момент на глаза попалась иконка быстрого запуска векторного редактора Inkscape…

План созрел очень быстро. Сам по себе Inkscape сохраняет все свои творения в замечательном формате svg, получить данные из которого не составляет больших проблем — благо, библиотек для работы с ним достаточно как для Python'a, так и для остальных языков. Дальнейший алгоритм действий оказался до безумия прост — взять карту, сконвертировать при помощи Inkscape в svg, получить координаты полигонов и использовать их по назначению уже в карте полигонов.

Однако на руках есть только PNG, максимум — PSD. А это никак не вектор. Порывшись по форумам, я таки нашел замечательный сервис трассировки растровой графики в вектоную — http://vectormagic.com. Честно говоря, я был в восторге, когда нашел такую замечательную и полезную штуку. Думаю, в самое ближайшее время постараюсь сделать масштабный обзор, так как аналогов либо я не нашел, либо их нет вовсе. Единственное, что может огорчить — всего 2 бесплатные трассировки на 1 почтовый ящик. Но для моей задачи вполне хватило одной загрузки. Благо, параметры трассировки поддаются настройке и на выходе можно получить довольно качественный векторный рисунок все в том же svg.

В итоге быстренько нацарапав пяткой на Python'e парсер svg-файла и подрихтовав мелочи векторной карты в Inkscape я получил заветные координаты с достаточно большой точностью, которых было даже немного в избытке для каждого полигона.

Уже после завершения работы над картой, допивая свой утренний кофе, я постарался представить на пальцах, сколько бы времени у меня ушло на оба решения. В случае первого варианта — примерно 20-25 минут на каждую область, да умножив на 20 — выходит что-то около 8 часов. Целый рабочий день можно было провести, занимаясь полнейшим ужасом и непотребством. А так, получается, 15-20 минут мозгового штурма и примерно 2 часа работы на завершение всей задачи. Но самое важное, по моему скромному мнению, это то, что скучную и не интересную, рутинную и изматывающую работу удалось превратить в маленькое исследование svg и чистейшее удовольствие от программирования.

Вот так, всего-лишь отказавшись идти проторенной и известной дорогой удалось выиграть почти 6 часов собственной жизни у работы.

Бывали ли у вас примеры нестандартных решений для обыденных вещей? Расскажите, интересно узнать.

З.Ы. Поскольку в команде Inkscape при помощи астральной магии, шаманства и полуночных бубнов ребята изобретают «свой svg» с шахматами и поэтессами, у меня он скоропостижно скончался при попытке открыть загруженный с vectormagic svg-файл. Однако встроенный в Inkscape конвертер pdf2svg работает замечательно — именно так и удалось нормально импортировать изображение, полученное при трассировке.
Теги:смекалкарешение
Хабы: Чулан
Всего голосов 8: ↑8 и ↓0+8
Просмотры364

Похожие публикации

Лучшие публикации за сутки