Алгоритм (и инструменты) для создания взвешенной картограммы из шейп-файла?

Какой алгоритм я могу использовать для создания взвешенной картограммы, такой как приведенная ниже: http://www.brainpickings.org/index.php/2010/04/15/cartograms?

Я могу создать шейп-файл, используя код из библиотек R, .NET, а также используя PostGIS. Однако я не могу найти условия поиска, чтобы использовать для реализации алгоритма, используемого для создания этих деформированных графиков шейп-файлов. Не обязательно смотреть на график только карты мира, поэтому должен уметь работать с произвольным шейп-файлом.

2 ответа

Решение

Таким образом, как упоминалось в комментариях ОП, они называются картограммами площадей. Самая лучшая из известных мне lil-реализаций - cartogram.js, использующая магическую библиотеку D3. Если эта страница когда-нибудь исчезнет, ​​вы сможете найти похожую страницу, используя Google "Картограммы области D3", и если это вас никуда не приведет, тогда оригинальной статьей по этой теме был Dougenik 1985.

Ответ D3.js от Andy превосходен, однако, для полноты, здесь есть реализация, алгоритм Cartogram, который поставляется из плагина Python для превосходного ГИС-приложения с открытым исходным кодом, QGIS. Оригинальная статья и алгоритм цитируются в комментариях. Полный каталог исходного кода для плагина QGIS: https://code.google.com/p/ftools-qgis/source/browse/trunk/cartogram/?r=115

Я понимаю, что вы запросили C#, и в коде есть несколько объектов геометрии QGIS, но метод TransformGeometry действительно иллюстрирует, как работает алгоритм, QGIS читает шейп-файлы, и в случае, если вы хотите выполнить любую другую обработку стиля ГИС, QGIS будет хороший вариант.

Другие вопросы по тегам