Подтвердить что ты не робот

RMaps ichoropleth с пользовательской картой/shp

В R я хотел бы помочь в попытке воспроизвести учебник здесь для моего собственного файла SHP (Shapefile) или карты, чтобы быть интерактивной диаграммой choropleth..

Карта из малых районов Северной Ирландии. Который можно найти здесь.

Ниже приведены шаги, которые я сделал до сих пор...

Я думаю, что проблема заключается в настройке данных geographyConfig...

Любая помощь будет высоко оценена....

# Download and unzip the data
system('wget http://www.nisra.gov.uk/archive/geography/digital_products/SA2011_Esri_Shapefile.zip')
system('unzip SA2011_Esri_Shapefile.zip')

# Load libraries
library(rgdal)
library(rgeos)
library(rMaps)

shp.file <- 'SA2011.shp'

# Convert projection
system(paste0('ogr2ogr tmp.shp ',
               shp.file,
              ' -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0"'))

# Read in the data
xx <- readOGR(dsn=getwd(),layer='tmp')
mm <- [email protected]
head(mm)
n <- nrow(mm)
dat.val <- mm$Hectares

# Add extra year data
mm <- mm[rep(seq(n),3),]
mm$Hectares <- c(dat.val,rev(dat.val),dat.val/2)
mm$year <- rep(c(2000:2002),each=n)
colnames(mm)[1] <- 'ID'
id.var <- 'SA2011'


# Convert to json
system(paste0('topojson -o tmp.json -s 1e-7 -q 1e5 tmp.shp -p ID=',
              id.var,
              ' --id-property ',
              id.var))

d1 <- ichoropleth(Hectares ~ ID, data = mm, ncuts = 9, pal = 'YlOrRd', 
                  animate = 'year',  map = 'states'
)
d1$set(
  geographyConfig = list(
    dataUrl = "tmp.json"
  ),
  scope = 'states',
  setProjection = '#! function( element, options ) {
  var projection, path;
  projection = d3.geo.mercator()
  .center([-7, 55]).scale(element.offsetWidth)
  .translate([element.offsetWidth / 2, element.offsetHeight / 2]);

  path = d3.geo.path().projection( projection );
  return {path: path, projection: projection};
  } !#'
)
d1$save('rMaps.html', cdn = TRUE)

Загрузка rMaps.html не создает соответствующую карту, так как она показывает только разрезы внизу, но не карту.

4b9b3361

Ответ 1

Различные люди на recordnotfound.com попросили автора ответить на эту тему (на recordnotfound.com). Я связался с владельцем проекта rMaps, Рамнатхом. Он предположил, что есть новый проект, который обеспечивает расширенный набор функций: http://github.com/rstudio/leaflet

Подробнее о проекте рекламной прошивки: https://recordnotfound.com/leaflet-rstudio-35205

Ответ 2

Вы видели http://www.r-bloggers.com/rmaps-mexico-map/? У меня была аналогичная проблема, и я обнаружил, что для небольших областей вам нужно манипулировать аргументом масштаба в бит кода ниже. Он работает.

    d1$set(
  geographyConfig = list(
   dataUrl = "tmp.json"
  ),
 scope = 'tmp',
 setProjection = '#! function( element, options ) {
   var projection, path;
   projection = d3.geo.mercator()
    .center([-5.832087, 54.605035]).scale(element.offsetWidth)
    .translate([element.offsetWidth / 2, element.offsetHeight / 2]);

   path = d3.geo.path().projection( projection );
   return {path: path, projection: projection};
  } !#'
)
d1$save('rMaps.html', cdn = TRUE)