Форум → Программирование → PHP для идиотов → Расширения PHP → Графика для ГИС
Графика для ГИС
-
Так, ввод в тему…
Я делаю векторную карту для нашего города. Использую С++, GD. Все это дело на платформе FreeBSD.
Обратился именно в форум PHP, т.к. думаю здесь наиболее быстрее получу ответ, да и проблемы переписать с php на с++ нету, функции GD для С++ и php почти не отличаются.
Теперь к делу..
Ниже я опишу свои предположения, если есть более оптимальный путь, или уже имеются какие-либо готовые библиотеки, скрипты, дайте пожалуйста ссылочки..
(скриншоты сделаны с сайта maps.google.ru)
1) отрисовка жд полосы. (См. 1 картинку, отметка 2)
При рисовании обычной пунктирной линии, получается чушь. Возможно нужно рисовать полигонами?
2) Отрисовка толстых линий с закруглением (См. 1 картинку, отметка 1, левый нижний угол). На конце линии, она закруглена. Я предполагаю так, что эти линии рисуются полигонами а в конце отрисовывается круг. Причем, сначала рисуется круг, потом окружность(цвета = цвету границы) потом рисуются полигоны с белой заливкой, а потом поверх всего, полигон без заливки цвета границ.
3) Подпись шрифтами. (См. 1 картинку, отметки 1 и 2 картинку, отметка 3)
Итак, на втором рисунке, отметка 3, текст рисуется белым цветом, потом применяем к нему blur и поверх рисуем нужным цветом. (буду признателен если еще дадите ссылочку на реализацию blur'a на php, ну или С/С++)
Судя по первому рисунку, дороги подписываются так: берется каждый символ и наклоняется под определенным углом. (да, и тут еще вопрос, как вычислить длину и ширину текста в пикселах, если используется ttf шрифт?)
Более, после того как я вкл. отрисовку текста, генерация картинки на сервере увеличивается разв 7-8. (простой текст с заданным углом на прозрачном фоне) Это самая проблемная точка. А если добавить и bblur, то вобще незнаю что будет..
Я предполагаю, что время генерации картинки увеличивается из-за того, что система пытается каждый раз загрузить шрифт в буфер. Хоть он и весит немного, 100кб, но др. вариантов не приходит в голову…
Прилагаемые файлы в архиве.
Пожалуйста, авторизуйтесь, чтобы написать комментарий!