Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rMaps ichoropleth with custom map/shp using local json file... #94

Open
hmaeda opened this issue Apr 13, 2015 · 1 comment
Open

rMaps ichoropleth with custom map/shp using local json file... #94

hmaeda opened this issue Apr 13, 2015 · 1 comment

Comments

@hmaeda
Copy link

hmaeda commented Apr 13, 2015

This is a cross-post from SO

In R, I would like help in trying to replicate the tutorial here for my own custom shp file or map to be an interactive choropleth map...

The map is of the Small Areas of Northern Ireland. Which can be found here.

Below are the steps I have taken so far...

I think the issue is the setting of the geographyConfig data...

Any help would be much appreciated....

# 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 <- xx@data
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)

Loading rMaps.html does not produce the relevant map, as it only shows the cuts at the bottom but not the map.

@contradirony
Copy link

I'm experiencing the same problem when creating my own local topojson file.

In particular, when following the same example I further found that replacing:

dataUrl = "https://dl.dropboxusercontent.com/u/10794332/mx_states.json"

with a local version of mx_states.json file didn't work. No error messages, a blank map with year & colour scales.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants