ES:Key:ref:ine

From OpenStreetMap Wiki
Jump to navigation Jump to search
ref:ine
Descripción
Código asignado a las entidades de población por el Instituto Nacional de Estadística de España. Show/edit corresponding data item.
Grupo: referencias
Usado en estos elementos
puede ser usado en nodosno puede ser usado en víasno puede ser usado en áreaspuede ser usado en relaciones
Combinaciones útiles
Estado: de facto

Es una subclave de ref=* y sus valores son números utilizados como identificadores de las unidades de población españolas por el Instituto Nacional de Estadística ([W] INE), [W]P772.

Subdivisión Cifras Formación de la referencia Notas
Provincia PP -- No existe clave ref:ine=* para provincias admin_level=6
Municipio MMM ine:municipio=* (PP + MMM) + "000000" Sólo para relaciones boundary=administrative y admin_level=8
Entidad colectiva CC ine:municipio=* (PP + MMM) + CC + "0000" Sólo para relaciones boundary=administrative y admin_level=9
Entidad singular SS ine:municipio=* (PP + MMM) + CC + SS + "00" Si la entidad es un nodo, no usar este código, es preferible el código del núcleo
Núcleo/diseminado NN ine:municipio=* (PP + MMM) + CC + SS + NN Sólo para nodos: en núcleos NN es 01, 02, 03, 04, etc... y en diseminados NN es igual a 99

Mapa interactivo

Puede consultar el estado actual de las referencias faltantes y sobrantes a través de la siguiente visualización: https://osm-es.github.io/validador-ine/

Consultas de validación

Nodos

El código de las localidades españolas (es decir, place=*) ref:ine=* reside en el valor de ine:municipio=* más 6 dígitos, por lo que podemos comprobarlo usando matemáticas.

La siguiente consulta de overpass verifica si los nodos contienen el valor adecuado, es decir ine:municipio * 1e6 < ref:ine < ine:municipio * 1e6 + 1e6. Si la siguiente consulta no devuelve nada, significa que todo está bien.

Aviso: la siguiente consulta tarda varios minutos en ejecutarse.

try it yourself in overpass-turbo
try it yourself in overpass-turbo
[out:xml][timeout:900];
area["ISO3166-1"="ES"]->.searchArea;
relation["admin_level"="8"]["ine:municipio"]["boundary"="administrative"](area.searchArea);
map_to_area;
foreach->.mun(
  (
    // como no existe un operador de substring, convertimos ambas etiquetas a números
    // (debido a un error de parseo de variables que empiezan en cero, se añade y luego se resta, un número superior a los códigos)
    // como el ref:ine tiene 6 cifras añadidas a su ine:municipio, multiplicamos por 1 millón
    // de tal modo que los ref:ine deberá pertenecer al rango: 
    // ine:municipio * 1e6 < ref:ine < ine:municipio * 1e6 + 1e6
    //
    // ejemplo:
    // ine:municipio=47140
    // ref:ine=47140000100
    //
    // 47140 * 1e6 < 47140000100 < 47140 * 1e6 + 1e6
    node(area.mun)["ref:ine"](if: (number(1e12 + t["ref:ine"]) - 1e12) < ((number(1e12 + mun.u(t["ine:municipio"])) - 1e12) * 1e6));
    node(area.mun)["ref:ine"](if: (number(1e12 + t["ref:ine"]) - 1e12) > ((number(1e12 + mun.u(t["ine:municipio"])) - 1e12) * 1e6 + 1e6));
  );
  out;
);

De igual manera, podemos afinar todavía más la validación de entidades, si en vez de consultar por municipio lo hacemos por una unidad inferior, como por ejemplo, las parroquias para Galicia (ES-GA) y Asturias (ES-AS), o las diputaciones/pedanías en Región de Murcia (ES-MU). Una referencia será correcta siempre que: ref:ine parroquia < ref:ine localidad < ref:ine parroquia + 1e4. Si la siguiente consulta no devuelve nada, significa que todo está bien.

Aviso: para que esta consulta tenga sentido, los municipios deben contener relaciones boundary=administrative y admin_level=9.

try it yourself in overpass-turbo
try it yourself in overpass-turbo
[out:xml][timeout:900];
area["ISO3166-2"="ES-GA"]->.searchArea;
relation["admin_level"="9"]["boundary"="administrative"](area.searchArea);
map_to_area;
foreach->.mun(
  (
    node(area.mun)["ref:ine"](if: (number(1e12 + t["ref:ine"]) - 1e12) < (number(1e12 + mun.u(t["ref:ine"])) - 1e12));
    node(area.mun)["ref:ine"](if: (number(1e12 + t["ref:ine"]) - 1e12) > (number(1e12 + mun.u(t["ref:ine"])) - 1e12 + 1e4));
  );
  out;
);

Relaciones

El código de los municipios españoles (es decir, admin_level=8) ref:ine=* está en el valor de ine:municipio=* más 6 ceros, por lo que podemos comprobarlo usando matemáticas.

La siguiente consulta overpass comprueba si las relaciones contienen el valor adecuado, es decir ine:municipio * 1e6 = ref:ine. Si la siguiente consulta no devuelve nada, significa que todo está bien.

try it yourself in overpass-turbo
try it yourself in overpass-turbo
[out:xml][timeout:900];
area["ISO3166-1"="ES"]->.searchArea;
relation["admin_level"="8"]["ine:municipio"]["boundary"="administrative"](area.searchArea)->.all;
relation.all["ref:ine"]->.ok;
// relaciones cuyo código ref:ine difiere del ine:municipio
// (debido a un error de parseo de variables que empiezan en cero, se añade y luego se resta, un número superior a los códigos)
//
// ejemplo:
// ine:municipio=47140
// ref:ine=47140000000
//
// 47140 * 1e6 = 47140000000
relation.ok(if: ((number(1e12 + _.set(t["ine:municipio"])) - 1e12) * 1e6) != (number(1e12 + _.set(t["ref:ine"])) - 1e12))->.wrong;
// relaciones sin código ref:ine
(.all; - .ok;)->.missing;
(.missing;.wrong;);
out geom;