Встраивание облака слова / тега в географические границы

15

Существуют ли доступные инструменты или рекомендуемые методы отображения облака тегов или слов (также известного как wordle ) на карте мира, как в этом примере: Карта: Соединенные Штаты фамилий ? (Могут быть и другие примеры на NY Times.)

Обратите внимание, что в приведенном выше примере слова расположены по фиксированным координатам, тогда как помехи в тексте могут быть реализованы с помощью алгоритма wordle (как описано в SO ) в автоматическом режиме. Итак, есть ли программное обеспечение, которое позволяет вам произвольно размещать слова в определенной стране, или вы думаете, что лучше настроить оригинальный алгоритм слова (например, путем добавления ограничений на основе предопределенных границ)?

хл
источник
@underdark Спасибо за указание на эту тему. Однако мне кажется, что это больше связано с геотеггингом, тогда как я ищу решение, в котором нам не нужно связывать известные пространственные координаты (например, город или округа) с каждым словом. Другими словами, позвольте расположению слов в стране быть свободным от ограничений кроме ее фактических границ. Если другие считают, что это действительно дубликат, я могу удалить его без каких-либо проблем.
ЧЛ
@chl: То есть расположение слов внутри границ не имеет значения? Тогда это не дубликат.
Подземье
@underdark Да, именно так. Основная идея wordle - попытаться найти красивый пространственный макет со словами, размер которых определяется их относительной частотой. Тогда я просто хочу ограничить выбор возможных (x, y) координат на «границах».
ЧЛ
В GSE есть несколько тем для тегов / облачных вычислений. gis.stackexchange.com/search?q=tag+cloud Похоже, что необходимо предпринять некоторые усилия (возможно, инициированные сообществом обмена стека), чтобы отличить облако от тега / облака. Даже с тегом в моем поиске я получил "похоже", что все облачные потоки возвращены. Может быть, мы могли бы начать обсуждение мета-темы. Или, может быть, это никого не беспокоит. ???
Брэд Несом

Ответы:

4

Это займет совсем немного времени: приблизьте границу многоугольника изотетическими линиями (то есть горизонтальными и вертикальными сегментами) и, в качестве начальных условий, разместите прямоугольники (с пустым содержимым), выровненные по этим линиям снаружи многоугольника и внутри. ограничительной рамки многоугольника. В этот момент конфигурация выглядела бы точно так, как если бы алгоритм Wordle работал некоторое время и случайно разместил первые слова по периметру ограничивающего прямоугольника. Пусть алгоритм вступит во владение оттуда.

По сути, это равносильно представлению многоугольника с помощью квадродерева с самого начала и, в противном случае, точному воспроизведению алгоритма Wordle.

Если вы не помещаете тысячи слов в многоугольник, и если у вас есть немного свободного вычислительного времени, вам вообще не нужно кодировать пространственный индекс: вы можете выполнить обнаружение столкновений, используя сравнения всех пар методом грубой силы ограничивающие рамки. Приложив немного больше работы, вы можете поддерживать списки местоположений слов, отсортированных по x- и y-координатам, и использовать эти списки для оптимизации алгоритма обнаружения столкновений.

Whuber
источник
6

Очень хитрость. Я сам пытаюсь сделать что-то подобное, но создать типографские карты, подобные этой, из Axis Maps.

введите описание изображения здесь

Вы можете попробовать что-то с помощью qgis или mapnik, основы будут следующими:
1) Подсчитайте слова и сгенерируйте вес по количеству вхождений.
2) генерировать случайные точки внутри полигона.
3) для каждого пункта загрузить слово и его вес в таблицу.
4) Нарисуйте текст с размером шрифта в зависимости от веса.

Вы также можете добавить случайное вращение и цвета к таблице.

Pablo
источник
(+1) Спасибо за указание типографских карт. Это напоминает мне, что я столкнулся с классными вещами несколько месяцев назад. Я попробую, но мне было интересно, не будет ли полезен доступный код Python, предоставленный @aeby для SO, при условии, что я добавлю ограничения на границы страны. Я недостаточно знаком с QGis, но я постараюсь изучить его.
хл
Размещение слов в равномерно случайных точках обычно приводит к множеству совпадений. Если слова равномерно масштабируются, чтобы почти заполнить многоугольник - что в большинстве случаев является желательной ситуацией - тогда использование случайных точек наверняка не сработает. Это было бы хорошим началом для алгоритма пространственного отжига, однако :-).
whuber
Они не будут перекрываться, потому что qgis и mapnik имеют детекторы столкновений. Но некоторые слова будут подавлены. Есть много других проблем, например, сколько слов вам нужно в зависимости от размера многоугольника?
Пабло
@whuber, следуя вашей идее, возможно, вместо случайных точек, алгоритм может начать заполнять многоугольники другими многоугольниками с размером слова от левого верхнего до нижнего правого края. затем пометьте эти полигоны.
Пабло
5

Tagxedo выглядит хорошо. Жаль, что он использует Silverlight.

Подземье
источник
(+1) Выглядит хорошо, хотя было бы лучше не полагаться на Silverlight.
ЧЛ