Report Builder. Отображаем данные на карте России
При построении отчетов с помощью MS Report Builder'а можно использовать контрол Map для отображения данных с привязкой к географической карте.
Карта России
По умолчанию в Report Builder'е есть карты США в разных вариациях. Также Report Builder может брать географические данные из базы данных SQL Server или импортировать карты в формате ESRI (.shp). Скачать карты в этом формате для какой-нибудь страны или мира целиком можно с сайта www.gadm.org.
Карты России на этом сайте представлены в 3 видах:
- территория России целиком;
- территория России, разделенная на регионы;
- 2 карты с делением России на районы.
При этом карты с районами неполные и использовать их вряд ли будет целесообразно. Вот так выглядит одна из этих карт с подложенным под неё слоем Bing:
Добавление карт в Report Builder
Для того, чтобы карты России были доступны в мастере Report Builder'а, надо создать на их основе файлы отчета и сохранить их в папке MapGallery, которая в моем случае находится по адресу: C:\Program Files (x86)\Microsoft SQL Server\Report Builder 3.0.
После чего они будут доступны в мастере карт:
Чукотка
Есть у Report Builder'а ещё одна особенность в поведении: он не умеет отображать карту циклически, а только строго от -180° до 180° долготы. В России есть Чукотка, которая располагается в трех полушариях. Report Builder в результате нарисует карту России следующим образом:
Карта России получается "разрубленной". Придется либо перемещать полигоны, что приведет к неверным координатам, либо ограничивать координаты для отображения карты, что, в свою очередь, приведет к потере части территории.
Привязка данных
Для привязки данных к полигонам можно использовать любое из их свойств, но удобней всего использовать какой-нибудь идентификатор. В случае с картой России, разделенной на регионы это поле ID_1. Report Builder произведет агрегацию данных из Dataset'а в соответствии с указанным сопоставлением полей.
Можно ни использовать полигоны вовсе, а рисовать вместо этого "пузыри" в соответствии с указанными координатами, подложив ниже слой карт с сервиса Bing Maps. Можно совмещать эти подходы путем наложения нескольких слоев, настраивая их прозрачность.
SharePoint 2010
Так как я занимаюсь созданием решений на базе MS SharePoint, то и пример использования карт в отчетах будет соответствующий.
Привязку данных в списках SahrePoint к регионам России можно реализовать с помощью простого списка, содержащего два поля: название региона и идентификатор соответствующего ему полигона на карте:
Скачать шаблон этого списка с данными можно здесь. Все остальные данные связывать с этим списком через Lookup-поля.
Для демонстрации я создал список, в котором будет некая информация о продажах по регионам. Набор полей минимален: продажник, регион, сумма продаж. О том как создавать источники и наборы данных в Report Builder'е для извлечения данных из SharePoint я уже описывал (есть ещё пост про уникальные значения из списков SharePoint).
Данные для визуализации созданы и карта есть. Теперь связываем все это воедино.
Связывание данных с картой
- Указываем какими данными будет оперировать слой. В контекстном меню слоя выбираем Layer Data...:
Далее на вкладке Analytical Data указываем набор данных и поля, по которым данные будут сопоставляться с полигонами слоя:
- Задаем правила для раскрашивания полигонов. В контекстном меню слоя выбираем Polygon Color Rule...:
Раскрашивание может быть на основе своего шаблона (Apply template style), предустановленной палитры (color pallete), ранжирования по трем цветам (color ranges) или по своим условиям. Также важно количество градаций цветов, которое можно указать на вкладке Distribution.
Вот некоторые из возможных цветовых решений раскраски полигонов:
Описанные действия минимально необходимы для создания простого отчета. Также можно настраивать подсказки для полигонов, формируя их из данных по данному региону, указывать действия по клику на полигон (например, открытие другого отчета или веб-страницы с подробной информацией по региону), добавлять другие элементы и многое другое.
Report Builder позволяет создавать красивые и информативные отчеты за крайне малые сроки. При этом достаточно быть продвинутым пользователем. А в связке с SharePoint к тому же решается проблема с версионностью, разграничением прав доступа к отчетам и доставкой отчетов по подписке.
Вот такой отчет я сделал минут за 15: