Сделайте подборку из карты не-highmap-collection - PullRequest
0 голосов
/ 18 июня 2019

Я пытался сделать карту со списком hcmap из пакета highcharter; Я получил полигоны из своего собственного шейп-файла, потому что это карта, которой нет в списке коллекции highmap.

Для этого сначала мне удалось преобразовать мой шейп-файл в файл GeoJson, как описано здесь: https://blog.exploratory.io/creating-geojson-out-of-shapefile-in-r-40bc0005857d

Позже мне удалось нарисовать карту, используя пакет geosonio, как описано здесь: http://jkunst.com/highcharter/highmaps.html#geojsonio-package

Однако я не могу понять, как объединить фрейм данных со значениями в многоугольники, нарисованные на моей карте. Все доступные примеры объединяются с mapdata в формате data.frame, который я теряю при преобразовании в GeoJson.

Вот мой код:

library(rgdal)
library(geojsonio)
library(highcharter)

#Get map from shapefile
Mymap <- readOGR(dsn="Mymap", "Mymap", verbose = FALSE) %>%  
                 spTransform(CRS("+proj=longlat +ellps=GRS80 +datum=WGS84"))

#Transform to geoJson
MymapJSON <- geojson_json(Mymap)

#Use geojsonio to make data compatible with hcmap
Myhcmap <- jsonlite::fromJSON(MymapJSON, simplifyVector = FALSE)
Myhcmap<- geojsonio::as.json(Myhcmap)

#Draw map:

highchart(type = "map") %>%
   hc_add_series(mapData = Myhcmap, showInLegend = T)

Результат:

enter image description here

¿Как я могу поместить дополнительные данные в GeoJson, чтобы я мог нарисовать хороплет?

1 Ответ

0 голосов
/ 15 июля 2019

Некоторое время назад я наконец-то нашел решение, оно было довольно простым, но поскольку не было хорошо документировано, как добавлять данные в GeoJSON, я покажу его здесь:

#Work with the map until this step: 
Myhcmap <- jsonlite::fromJSON(MymapJSON, simplifyVector = FALSE)

#This part was unnecessary:
#Myhcmap<- geojsonio::as.json(Myhcmap)

#Then, write your map like this:

highchart() %>%
hc_add_series_map(Myhcmap, df, value = "value", joinBy = "ID")

Где:

df - это кадр данных, который вы хотите добавить

value - это имя столбца данных, которые вы хотите раскрасить карту, на

joinBy - переменная присоединяющего ключа

...