用自定义地图/ shp制作地图

在R,我想帮助试图在这里复制我自己的自定义SHP(Shapefile)文件或地图的教程是一个交互式的等值线地图…

地图是北爱尔兰的小地区。 这可以在这里find。

以下是我迄今采取的步骤…

我认为问题是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 <- 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) 

加载rMaps.html不会生成相关的地图,因为它只显示底部的剪切,而不显示地图。

recordnotfound.com上的不同人员要求作者回复此主题(在recordnotfound.com上)。 我与RamMath的rMaps项目的所有者取得了联系。 他build议有一个新的项目提供了一个增强的function集: http : //github.com/rstudio/leaflet

以下是有关传单项目的更多详细信息: https : //recordnotfound.com/leaflet-rstudio-35205

你见过http://www.r-bloggers.com/rmaps-mexico-map/吗?; 我遇到了一个类似的问题,发现对于小规模领域,您需要在下面的代码中操纵scale参数。 它确实有效。

  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)