02 декабря 2011

Создание пользовательских карт Google при помощи R



Ранее я уже писал о пакете googleVis, в состав которого входит ряд функций, обеспечивающих взаимодействие R с интерфейсом программирования приложений Google Visualization API. Функции из этого пакета генерируют html код, который можно легко вставить на страницу веб-сайта. Среди прочих, имеется и функция для создания известных всем карт Google. В общем виде синтаксис этой функции выглядит следующим образом:
gvisMap(data, locationvar=" ", tipvar=" ", options = list(), chartid) ,
где
  • data - таблица данных (data.frame), которая должна содержать как минимум два столбца - c географическими координатами точек (locationvar) и с текстом всплывающих подсказок для каждой из этих точек.
  • locationvar - имя столбца, содержащего географические координаты точек. Координаты задаются в формате "широта:долгота" (см. пример ниже). Вместо географических координат можно также указывать [максимально полный] почтовый адрес, однако авторы пакета googleVis рекомендуют этот способ не применять.
  • tipvar - имя столбца, содержащего текст всплывающих подсказок для каждой точки.
  • options - список опций, определяющих внешний вид карты.
  • chartid - текстовая переменная, при помощи которой карте можно присвоить пользовательское имя. По умолчанию данная настройка отключена (в этом случае ID карты генерируется случайным образом автоматически).

Внешний вид карты настраивается при помощи следующих опций:
  • enableScrollWheel - логическая переменная, по умолчанию принимающая значение FALSE. При enableScrollWheel = TRUE появится возможность изменять масштаб карты, вращая колесо мышки.
  • showTip - логическая переменная, по умолчанию равная FALSE. Активация этой настройки (showTip = TRUE) позволит видеть описание точки при наведении на нее курсора.
  • ShowLine - позволяет включать (TRUE) или выключать (FALSE) линию, соединяющую точки на карте.
  • lineColor - текстовая переменная, задающая цвет вышеупомянутой линии ("red", "green", и т.п.; возможно также использование html-цветов, например "#800000").
  • lineWidth - ширина линии. По умолчанию составляет 10 пикселей. Очевидно, что эта настройка имеет смысл только при ShowLine = TRUE.
  • mapType - текстовая переменная, задающая тип карты. Возможные значения: "normal" (обычная схематичная карта), "terrain" (режим "Земля"), "satellite" ("спутник") или "hybrid" ("гибрид").
  • useMapTypeControl - логическая переменная, по умолчанию равная FALSE. Значение TRUE активизирует меню, позволяющее пользователю выбирать тип карты (см. предыдущий пункт).
  • zoomLevel - количественная переменная, принимающая целые значения от 0 (виден весь мир) до 19 (максимальное приближение).
Функция gvisMap() возвращает объект класса "gvis", который представляет собой список, состоящий, как минимум, из следующих трех элементов: type (тип Google-карты), chartid (см. выше) и html. Именно последний элемент интересует нас больше всего, поскольку он содержит html-код карты.

Работу функции gvisMap() я проиллюстрирую на примере данных из своей статьи (Mastitsky & Makarevich 2007), посвященной распространению в Беларуси чужеродных видов бокоплавов. В ходе выполненного обследования белорусской части реки Днепр были обнаружены четыре ранее не отмечавшихся в республике вида бокоплавов. Одним из наиболее распространенных видов оказался рачок Dikerogammarus haemobaphes (см. фото) - выходец из нижнего течения рек Понто-Каспийского бассейна. Этот вид был отмечен на трех из пяти обследованных створов реки. Отобразим координаты этих створов на Google-карте.

Для начала создадим таблицу (назовем ее Dikero - по названию вида), в которой будут храниться координаты створов и их названия:

Dikero <- data.frame(Coords = c("52.2:30.6", "53.1:30.1", "53.7:30.3"),
        Location = c("д. Холмеч", "г. Рогачев", "д. Стайки"))
Dikero
     Coords   Location
1 52.2:30.6  д. Холмеч
2 53.1:30.1 г. Рогачев
3 53.7:30.3  д. Стайки

Используя функцию gvisMap(), создадим объект с каким-либо произвольным именем (например, Map) в котором будет храниться html-код и другие элементы карты:

Map <- gvisMap(Dikero, "Coords", "Location",
            options=list(showTip=TRUE, mapType='normal',
            enableScrollWheel=TRUE),
            chartid = "Dikerogammarus")

Команда


приведет к открытию браузера, в котором появится созданная Google-карта (естественно, при этом компьютер должен быть подключен к Internet).

Для извлечения html-кода карты из объекта Map необходимо выполнить следующую команду:

print(Map, tag = "chart")

Код будет выведен непосредственно в консоль R, откуда его можно скопировать и вставить в веб-страницу - см. результат ниже.




В будущем я продолжу описание функциональных возможностей пакета googleVis. Рекомендую подписаться на рассылку сообщений!


--
Создано при помощи Pretty R на сайте inside-R.org

2 комментария :

SHYAM комментирует...

Hi, probably our entry may be off topic but anyways, I have been surfing around your blog and it looks very professional. It’s obvious you know your topic and you appear fervent about it. I’m developing a fresh blog plus I’m struggling to make it look good, as well as offer the best quality content. I have learned much at your web site and also I anticipate alot more articles and will be coming back soon. Thanks you.




пользовательские

Анонимный комментирует...

Всплывающие подсказки не показываются правильно

Отправить комментарий