#' Marco Geoestadistico Nacional
#'
#' Extrae los mapas del Marco Geoestadistico Nacional.
#'
#' El Marco Geoestadistico Nacional (MGN) es un proyecto geoestadistico que presenta informacion sobre la division política del territorio mexicano en sus diferentes niveles de gobierno (nacional, estatal y municipal), asi como otras formas de clasificacion del territorio nacional.
#'
#' @param year Año de referencia del mapa, en formato numerico. Años disponibles: 1995, 2000, 2005, 2007, 2009, 2010 y 2013.
#' @param mapa Mapa en formato alfanumerico. Las opciones son: entidades, municipios, ageb, urbano, y rural.
#' @param version Especificar, en formato alfanumerico, la version para los años 2010 (4.3, 5.0, 5.0.A), 2017 (2010.0 o dejar en blanco) y 2018 (2010.0 o dejar en blanco). Para el resto de los años, dejar en blanco.
#'
#' @examples
#'
#' # Consultar los metadatos del Marco Geoestadistico Nacional
#' \dontrun{sig_marcogeo()}
#'
#' # Descargar el mapa de munucipios para 2009
#' \dontrun{mapa09 = sig_marcogeo(year = 2009, mapa = "municipios")}
#' @return Data.frame
#' @export
sig_marcogeo <- function(year = NA, mapa = NA, version = NA){
# Get Help and More Information
if (is.na(year) & is.na(mapa) & is.na(version)) {
shell.exec("https://www.inegi.org.mx/temas/mg/")
message("\n Cargando pagina... \n")
# Halt the function without error message
opt <- options(show.error.messages=FALSE)
on.exit(options(opt))
stop()
}
else if (is.na(year)) {stop("Debes introducir el a\u00f1o del mapa")}
else if (is.na(mapa)) {stop("Debes introducir el nombre del mapa")}
else if (year == 2010 & is.na(version)) {stop("Para el a\u00f1o 2010, debes especificar la version. Las versiones disponibles son \"4.3\", \"5.0\" y \"5.0.A\" ")}
else if (year == 2017 & is.na(version)) {warning("El a\u00f1o 2017 contiene dos versiones: 2017 (deja la version en blanco) y \"2010.0\" ")}
else if (year == 2018 & is.na(version)) {warning("El a\u00f1o 2018 contiene dos versiones: 2018 (deja la version en blanco) y \"2010.0\" ")}
# Mapas no disponibles por a\u00f1o
else if (year == 1995 & (mapa == "ageb" | mapa == "urbano" | mapa == "rural")) {stop("Los mapas ageb, urbano o rural no estan disponibles para el a\u00f1o 1995.")}
else if (year == 2000 & (mapa == "urbano" | mapa == "rural")) {stop("Los mapas urbano o rural no estan disponibles para el a\u00f1o 2000.")}
else if (year == 2005 & (mapa == "urbano" | mapa == "rural")) {stop("Los mapas urbano o rural no estan disponibles para el a\u00f1o 2005.")}
else if (year == 2010 & mapa == "ageb" & version == "5.0.A") {stop("El mapa ageb no esta disponible para el a\u00f1o 2010 5.0.A")}
#else if (mapa != "entidades" | mapa != "municipios" | mapa != "ageb" | mapa != "urbano" | mapa != "rural") {stop(message("Nombre de mapa no reconocido."))}
# Inicio --------------------------------------------------------------------
# Links:
url_base = "http://internet.contenidos.inegi.org.mx/contenidos/Productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marc_geo/"
# URL por A\u00f1o - Estructura anterior
if (year == 1995) {url_marcogeo = paste0(url_base, "702825292836_s.zip")}
else if (year == 2000) {url_marcogeo = paste0(url_base, "702825292843_s.zip")}
else if (year == 2005) {url_marcogeo = paste0(url_base, "702825292850_s.zip")}
else if (year == 2007) {url_marcogeo = paste0(url_base, "702825292867_s.zip")}
else if (year == 2009) {url_marcogeo = paste0(url_base, "702825292782_s.zip")}
#else if (year == 2010 & version == "4.3") {url_marcogeo = "http://internet.contenidos.inegi.org.mx/contenidos/Productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marc_geo/702825296520_s.zip"}
else if (year == 2010 & version == "5.0") {url_marcogeo = paste0(url_base, "702825292812_s.zip")}
else if (year == 2010 & version == "5.0.A") {url_marcogeo = paste0(url_base, "702825292805_s.zip")}
else if (year == 2013) {url_marcogeo = paste0(url_base, "702825292829_s.zip")}
# URL por a\u00f1o - Estructura nueva
#else if (year == 2016) {url_marcogeo = "http://internet.contenidos.inegi.org.mx/contenidos/Productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marc_geo/702825217341_s.zip"}
#2.3 GB else if (year == 2017) {url_marcogeo = "http://internet.contenidos.inegi.org.mx/contenidos/Productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marcogeo/889463171829_s.zip"}
#else if (year == 2017 & version == "2010.0") {url_marcogeo = "http://internet.contenidos.inegi.org.mx/contenidos/Productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marcogeo/889463142683_s.zip"}
# 2.6GB else if (year == 2018) {url_marcogeo = "http://internet.contenidos.inegi.org.mx/contenidos/Productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marcogeo/889463674658_s.zip"}
# 2.4GB else if (year == 2018 & version == "2010.0") {url_marcogeo = "http://internet.contenidos.inegi.org.mx/contenidos/Productos/prod_serv/contenidos/espanol/bvinegi/productos/geografia/marcogeo/889463592587_s.zip"}
else {stop("El a\u00f1o elegido no esta disponible. Para ver los a\u00f1os disponibles usa teclea sig_marcogeo() en la consola")}
# Recodificar mapa AGEB
if (mapa == "ageb" & (year == 2000 | year == 2005 | year == 2009 | year == 2013 | year == 2010)){mapa = "ageb_urbana"}
else if (mapa == "ageb" & year == 2007) {mapa = "ageb_rural"}
# Codigos para mapa
if (mapa == "entidades"){
codigo_mapa = "mge"
nombre_mapa = "Entidades"
}
if (mapa == "municipios"){
codigo_mapa = "mgm"
nombre_mapa = "Municipios"
}
if (mapa == "ageb_urbana"){
codigo_mapa = "mgau"
nombre_mapa = "agebs_urb"
}
if (mapa == "urbano"){
codigo_mapa = "mglu"
nombre_mapa = "Localidades urbanas"
}
if (mapa == "rural"){
codigo_mapa = "mglr"
nombre_mapa = "Localidades rurales"
}
if (mapa == "ageb_rural"){
codigo_mapa = "mgar"
nombre_mapa = "AGEB_rural"
}
# Ediciones especiales
if (year == 2009 & mapa == "ageb_urbana") {nombre_mapa = "ageb_urb"}
else if (year == 2010 & mapa == "entidades" & version == "5.0.A") {nombre_mapa = "estados"}
else if (year == 2010 & mapa == "rural" & version == "5.0.A") {nombre_mapa = "localidades_rurales"}
else if (year == 2010 & mapa == "urbano" & version == "5.0.A") {nombre_mapa = "poligonos_urbanos"}
else if (year == 2010 & mapa == "municipios" & version == "5.0.A") {nombre_mapa = "municipios"}
else if (year == 2013 & mapa == "ageb_urbana") {nombre_mapa = "agebs_urbanos"}
else if (year == 2010 & mapa == "ageb_urbana" & version == "5.0") {nombre_mapa = "AGEB_urb"}
# Desgargas ------------------------------------------------------------------
# Download File
tempmarcogeo = tempfile()
utils::download.file(url_marcogeo, tempmarcogeo)
# Unzip and open
zipdir = tempdir()
zipdir_level = tempdir()
utils::unzip(tempmarcogeo, exdir = zipdir)
# 1995
if (year == 1995) {utils::unzip(paste0(zipdir, paste0("\\\\", codigo_mapa, year, ".zip")), exdir = zipdir_level)}
else {}
# 2000
# agebs_urb_2000
if (year == 2005) {utils::unzip(paste0(zipdir, paste0("\\\\", codigo_mapa, year, "v_1_0.zip")), exdir = zipdir_level)}
else if (year == 2009) {utils::unzip(paste0(zipdir, paste0("\\\\", codigo_mapa, year, "v4_3.zip")), exdir = zipdir_level)}
else if (year == 2010 & (version == "5.0" | version == "5.0.A")) {utils::unzip(paste0(zipdir, paste0("\\\\", codigo_mapa, year, "v5_0.zip")), exdir = zipdir_level)}
else if (year == 2013) {utils::unzip(paste0(zipdir, paste0("\\\\", codigo_mapa, year, "v6_0.zip")), exdir = zipdir_level)}
else {utils::unzip(paste0(zipdir, paste0("\\\\", codigo_mapa, year, ".zip")), exdir = zipdir_level)}
# Renombrar nombre_mapa
if (year == 2010 & version == "5.0" & mapa == "rural") {nombre_mapa = "Localidades_rurales"}
else if (year == 2010 & version == "5.0" & mapa == "urbano") {nombre_mapa = "Localidades_urbanas"}
else {}
# Extract Map
if (year == 2010 & version == "5.0") {map_output = sf::st_read(dsn = zipdir_level, layer = paste0(nombre_mapa, "_", year, "_5"))}
else if (year == 2010 & version == "5.0.A") {map_output = sf::st_read(dsn = zipdir_level, layer = nombre_mapa)}
else {map_output = sf::st_read(dsn = zipdir_level, layer = paste0(nombre_mapa, "_", year))}
return(map_output)
} # End of Function
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.