-
-
Notifications
You must be signed in to change notification settings - Fork 8
2019_09 Actualización a Divipola 2018
Describimos a nivel técnico como se realizó la actualización de datos de SIP a los del DIVIPOLA 2018, mediante la creación de una migración (db/migrate/20190331111015_actualiza_divipola_2018).
Puede consultar un resumen ejecutivo menos técnico en https://github.com/pasosdeJesus/sivel2/wiki/Resumen-ejecutivo-de-la-actualizaci%C3%B3n-a-DIVIPOLA-2018
Se descargó de https://geoportal.dane.gov.co/metadatos/historicos/archivos/Listado_2018.xls
Se hizo copia de lo descargado en: https://danzadoresdejesucristo.onlyoffice.com/products/files/doceditor.aspx?fileid=6068570&action=view&doc=WWNOSk1PeXpYVVpOUWhNaVMxUUJsUk9WTzkwV0NUMWpxWjV1VFpCUlpqUT0_IjYwNjg1NzAi0
Se trata de 8016 centros poblados organizados en columnas:
- Código del departamento
- Código del municipio
- Código del centro poblado
- Nombre del Departamento (mayúsculas y minúsculas)
- Nombre del municipio (mayúsculas)
- Nombre del centro poblado (mayúsculas)
- Sigla del tipo de centro poblado
Nos preguntamos diferencia entre el uso de paréntesis y guiones en los nombres de municipios y de centros poblados. Asumimos que paréntesis se usan para añadir nombres anteriores de un municipio/centro poblado y que se usan guiones cuando una de estas ubicaciones se conoce con varios nombres.
Se convirtieron a CSV
Se buscaron algunos patrones que revelaron lo que consideramos 138 errores de digitación que detallamos en http://bit.ly/2OwFi9M dividos así:
- Espacios faltantes o sobrantes antes y después de paréntesis
- Espacios faltantes o sobrantes antes y después de guion
- Consistencia plural
- Punto final sobrante
- Confundir letras (N con M y Ñ con N).
- Tildes (incluyendo departamento Quindío sin tilde).
Algunos se modificaron en el CSV y otros en la migración.
El CSV se importó a una base de datos de sip así:
CREATE TABLE divipola_oficial_2018_corregido (
coddep VARCHAR(2),
codmun VARCHAR(5),
codcp VARCHAR(8),
departamento VARCHAR(512) COLLATE es_co_utf_8,
municipio VARCHAR(512) COLLATE es_co_utf_8,
centropoblado VARCHAR(512) COLLATE es_co_utf_8,
tipocp VARCHAR(6)
);
COPY divipola_oficial_2018_corregido FROM 'Listado_2018_corregido.csv' DELIMITER ',' CSV HEADER;
Que da una cuenta de 8016 registros.
Se hizo la vista:
CREATE OR REPLACE VIEW divipola_sip AS (SELECT
SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) AS coddep,
sip_departamento.nombre AS departamento,
SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) AS codmun,
sip_municipio.nombre AS municipio,
SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||
SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
sip_clase.nombre AS centropoblado,
sip_clase.id_tclase AS tipocp,
sip_clase.id AS sip_idcp
FROM
sip_departamento
JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
WHERE
sip_departamento.id_pais=170
AND sip_clase.fechadeshabilitacion IS NULL
ORDER BY 2, 4, 6 );
Esta daba una cuenta de 9191 registros.
En ambos se contaron 33 departamentos:
SELECT COUNT(DISTINCT coddep) FROM divipola_oficial_2018_corregido ;
SELECT COUNT(DISTINCT coddep) FROM divipola_sip;
Se constató que los códigos eran iguales:
SELECT s.coddep FROM divipola_sip AS s
WHERE s.coddep NOT IN (SELECT DISTINCT coddep FROM divipola_oficial_2018_corregido as d);
SELECT d.coddep FROM divipola_oficial_2018_corregido AS d
WHERE d.coddep NOT IN (SELECT DISTINCT coddep FROM divipola_sip as s);
Se compararon nombres (pasando a mayúsculas):
SELECT DISTINCT s.coddep,s.departamento,d.departamento FROM divipola_sip AS s
JOIN divipola_oficial_2018_corregido as d
ON s.coddep=d.coddep
WHERE s.departamento<>UPPER(d.departamento)
;
La única diferencia con el DIVIPOLA oficial era falta de tilde en este en el departamento Quindío.
En ambos se contaron 1122 municipios:
SELECT COUNT(DISTINCT codmun) FROM divipola_oficial_2018_corregido ;
SELECT COUNT(DISTINCT codmun) FROM divipola_sip;
Se constató que no había diferencia entre los códigos de municipios:
SELECT s.codmun FROM divipola_sip AS s
WHERE s.codmun NOT IN (
SELECT DISTINCT codmun
FROM divipola_oficial_2018_corregido as d
);
SELECT d.codmun FROM divipola_oficial_2018_corregido AS d
WHERE d.codmun NOT IN (
SELECT DISTINCT codmun
FROM divipola_sip as s
);
Se encontraron diferencias en el nombre de 6 municipios:
SELECT DISTINCT s.codmun,s.municipio,d.municipio FROM divipola_sip AS s
JOIN divipola_oficial_2018_corregido as d
ON s.codmun=d.codmun
WHERE s.municipio<>d.municipio
;
Que eran
codmun | sip | divipola 2018 |
---|---|---|
73055 | ARMERO GUAYABAL | ARMERO |
97777 | PAPUNAUA | PAPUNAHUA |
52203 | COLON (GENOVA) | COLÓN |
13468 | MOMPÓS | SANTA CRUZ DE MOMPÓX |
19548 | PIENDAMÓ | PIENDAMÓ - TUNÍA |
54001 | CÚCUTA | SAN JOSÉ DE CÚCUTA |
Se preparó corrección en sip (que dejó 2 diferencias en todo caso pero preferimos mantenerlas para ubicar a usuarios) y se añadió a la migración para quedar:
codmun | sip | divipola 2018 | sip 2019 |
---|---|---|---|
73055 | ARMERO GUAYABAL | ARMERO | ARMERO (ARMERO GUAYABAL) |
97777 | PAPUNAUA | PAPUNAHUA | PAPUNAHUA |
52203 | COLON (GENOVA) | COLÓN | COLÓN |
13468 | MOMPÓS | SANTA CRUZ DE MOMPÓX | SANTA CRUZ DE MOMPÓX (MOMPÓS) |
19548 | PIENDAMÓ | PIENDAMÓ - TUNÍA | PIENDAMÓ - TUNÍA |
54001 | CÚCUTA | SAN JOSÉ DE CÚCUTA | SAN JOSÉ DE CÚCUTA |
- En sip se cuentan 9191
SELECT COUNT(DISTINCT codcp) FROM divipola_sip;
- Divipola cuenta 8016
SELECT COUNT(DISTINCT codcp) FROM divipola_oficial_2018_corregido ;
Ubicamos los que están en sip pero no en DIVIPOLA 2018:
SELECT s.codcp, s.centropoblado FROM divipola_sip AS s
WHERE s.codcp NOT IN (
SELECT DISTINCT codcp
FROM divipola_oficial_2018_corregido as d
) ORDER BY 1;
Dan 2584 registros comenzando con 05001005 PEDREGAL ALTO y terminando con 99773023 WERIMA. Estos dos centros poblados se encuentean en el DIVIPOLA 2012 (disponible en https://geoportal.dane.gov.co/metadatos/historicos/archivos/Listado_2012.xls o en la copia que se hizo del mismo http://bit.ly/2FNDqac ).
Para actualizar información se realiza la consulta:
SELECT 'UPDATE sip_clase SET observaciones=observaciones || '' No está en DIVIPOLA 2018.'',' ||
' fechadeshabilitacion=''2019-03-31'' ' ||
' WHERE id=''' || sip_idcp || '''; -- ' || s.codcp || ' ' || s.centropoblado
FROM divipola_sip AS s
WHERE s.codcp NOT IN (
SELECT DISTINCT codcp
FROM divipola_oficial_2018_corregido as d
) ORDER BY s.codcp;
la cual comienza con:
UPDATE sip_clase SET observaciones=observaciones || ' No está en DIVIPOLA 2018.', fechadeshabilitacion='2019-03-31' WHERE id='6480'; -- 05001005 PEDREGAL ALTO
y termina con
UPDATE sip_clase SET observaciones=observaciones || ' No está en DIVIPOLA 2018.', fechadeshabilitacion='2019-03-31' WHERE id='13167'; -- 99773023 WERIMA
Con \copy este resultado se envía a un archivo en el sistema de archivo para posteriormente agregarlo a la migración.
Son 1409 nuevos o que se volvieron a habilitar
SELECT d.codcp, d.centropoblado FROM divipola_oficial_2018_corregido AS d
WHERE d.codcp NOT IN (
SELECT DISTINCT codcp
FROM divipola_sip as s
) ORDER BY codcp;
De estos identificamos 200 códigos que estaban deshabilitados en sip y volvieron a habilitarse en DIVIPOLA 2018:
SELECT d.codcp, d.centropoblado, cd.centropoblado FROM divipola_oficial_2018_corregido AS d
JOIN (
SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||
SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
sip_clase.nombre AS centropoblado
FROM sip_departamento
JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
WHERE
sip_departamento.id_pais=170
AND sip_clase.fechadeshabilitacion IS NOT NULL
) AS cd ON d.codcp=cd.codcp ORDER BY d.codcp;
De esos 200 tenían el mismo nombre 131:
SELECT d.codcp, d.centropoblado, cd.centropoblado FROM divipola_oficial_2018_corregido AS d
JOIN (
SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||
SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
sip_clase.nombre AS centropoblado
FROM sip_departamento
JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
WHERE
sip_departamento.id_pais=170
AND sip_clase.fechadeshabilitacion IS NOT NULL
) AS cd ON d.codcp=cd.codcp
WHERE d.centropoblado=cd.centropoblado
ORDER BY d.codcp;
comenzando por
05030004 | LA FERREIRA | LA FERREIRA
y terminando en
99001006 | GUARIPA | GUARIPA
que se preparan para habilitar con:
SELECT 'UPDATE sip_clase SET fechadeshabilitacion=NULL,' ||
' observaciones=observaciones || '' Rehabilitado por DIVIPOLA 2018 el 2019-03-31.''' ||
' WHERE id=''' || cd.sip_idcp || '''; -- ' || d.codcp || ' ' || d.centropoblado
FROM divipola_oficial_2018_corregido AS d
JOIN (
SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||
SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
sip_clase.nombre AS centropoblado,
sip_clase.id AS sip_idcp
FROM sip_departamento
JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
WHERE
sip_departamento.id_pais=170
AND sip_clase.fechadeshabilitacion IS NOT NULL
) AS cd ON d.codcp=cd.codcp
WHERE d.centropoblado=cd.centropoblado
ORDER BY d.codcp;
Los otros 69 se habilitan y se les actualiza nombre después de verificar:
SELECT 'UPDATE sip_clase SET fechadeshabilitacion=NULL, nombre=''' || d.centropoblado || ''', ' ||
' observaciones=observaciones || '' Rehabilitado por DIVIPOLA 2018 el 2019-03-31, nombre anterior: ' ||
cd.centropoblado || '.''' ||
' WHERE id=''' || cd.sip_idcp || '''; -- ' || d.codcp
FROM divipola_oficial_2018_corregido AS d
JOIN (
SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||
SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp,
sip_clase.nombre AS centropoblado,
sip_clase.id AS sip_idcp
FROM sip_departamento
JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
WHERE
sip_departamento.id_pais=170
AND sip_clase.fechadeshabilitacion IS NOT NULL
) AS cd ON d.codcp=cd.codcp
WHERE d.centropoblado<>cd.centropoblado
ORDER BY d.codcp;
Finalmente los 1209 restantes deben insertarse:
SELECT 'INSERT INTO sip_clase (id, id_municipio, id_clalocal, ' ||
'nombre, id_tclase, observaciones, ' ||
'fechacreacion, created_at, updated_at) ' ||
'VALUES (' || 14000+row_number() over (order by d.codcp) || ', ' || m.id::TEXT || ', ''' || d.codcp || ''', ''' ||
d.centropoblado || ''', ''' || UPPER(d.tipocp) || ''', ' || '''Aparece en DIVIPOLA 2018.'', ' ||
'''2019-03-31'', ''2019-03-31'', ''2019-03-31'');'
FROM divipola_oficial_2018_corregido AS d
JOIN sip_departamento AS dep ON
d.coddep::numeric = dep.id_deplocal
AND id_pais = 170
JOIN sip_municipio AS m ON
dep.id = m.id_departamento AND (d.coddep ||
SUBSTRING(TO_CHAR(m.id_munlocal,'000') FROM 2)) = d.codmun
WHERE d.codcp NOT IN (SELECT codcp FROM divipola_sip UNION
SELECT DISTINCT SUBSTRING(TO_CHAR(sip_departamento.id_deplocal,'00') FROM 2) ||
SUBSTRING(TO_CHAR(sip_municipio.id_munlocal,'000') FROM 2) ||
SUBSTRING(TO_CHAR(sip_clase.id_clalocal,'000') FROM 2) AS codcp
FROM sip_departamento
JOIN sip_municipio ON sip_municipio.id_departamento=sip_departamento.id
JOIN sip_clase ON sip_clase.id_municipio=sip_municipio.id
WHERE
sip_departamento.id_pais=170
AND sip_clase.fechadeshabilitacion IS NOT NULL
)
ORDER BY d.codcp;
Se encuentran 370 diferencias que se revisaron y en general se actualizan.
SELECT s.sip_idcp, s.codcp, s.centropoblado, d.centropoblado FROM
divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d
ON s.codcp=d.codcp
WHERE s.centropoblado != d.centropoblado
ORDER BY s.codcp
;
Las excepciones siguientes se dejan teniendo en cuenta:
- Si hay error ortográfico evidente
- Si el nombre cambia de manera sustancial, pusimos le nombre antiguo entre paréntesis:
Código | Nombre DIVIPOLA | Nuevo nombre SIP |
---|---|---|
05042002 | LAURELES | LAURELES (GUASABRA) |
05129001 | EL CANO | EL CAÑO |
05376005 | SAN NICOLÁS | SAN NICOLÁS (VUELTECITAS) |
05615017 | LA MOSCA | LA MOSCA (LA PLAYA) |
05837009 | BOCAS DEL RIO ATRATO | BOCAS DEL RíO ATRATO |
05893000 | YONDÓ | YONDÓ (CASABE) |
13468000 | SANTA CRUZ DE MOMPÓX, DISTRITO ESPECIAL, TURÍSTICO, CULTURAL E HISTÓRICO | SANTA CRUZ DE MOMPÓX, DISTRITO ESPECIAL, TURÍSTICO, CULTURAL E HISTÓRICO (MOMPÓS) |
91001026 | COMUNIDAD IMDIGENA PUERTO TRIUNFO | |
05040002 | LIBERIA | LIBERIA (CHARCON) |
05120010 | PIAMONTE | PIAMONTE (SAN RAFAEL) |
05234004 | SAN JOSÉ DE URAMA | SAN JOSÉ DE URAMA (URAMAGRANDE) |
05376005 | SAN NICOLÁS | SAN NICOLÁS (VUELTECITAS) |
05483001 | PUERTO VENUS | PUERTO VENUS (SAMANÁ) |
15232000 | SAN PEDRO DE IGUAQUE | SAN PEDRO DE IGUAQUE (CHÍQUIZA) |
15232001 | CHÍQUIZA | CHÍQUIZA (SAN PEDRO DE IGUAQUE) |
17013010 | EDEN | EDÉN |
19256029 | FONDAS | FONDAS (VILLA AL MAR) |
20570003 | NUEVO COLON | NUEVO COLÓN (PALMARITO) |
25126004 | RIO GRANDE | RÍO GRANDE (BARRO BLANCO) |
25126006 | LOS SERENEOS | LOS SERENEOS (CHUNTAME) |
25817008 | ANTONIA SANTOS | ANTONIA SATNOS (LA ESTACIÓN) |
27025031 | PUERTO MARTÍNEZ | PUERTO MARTÍNEZ (BAGRERA) |
41551005 | REGUEROS | REGUEROS (PRADOS DEL NORTE) |
47555021 | CINCO Y SEIS | CINCO y SEIS (EL BAJO) |
50150002 | PUEBLO VIEJO | PUEBLO VIEJO (ARENALES) |
52240003 | CANO ALTO | CAÑO ALTO |
52250003 | SAN PEDRO | SAN PEDRO (BOLÍVAR) |
54223004 | TIERRA GRATA | TIERRA GRATA (ROMÁN) |
54250001 | BELLA VISTA | BELLA VISTA (NUEVA GRANADA) |
54670004 | VISTA HERMOSA | VISTA HERMOSA (EL ESPEJO) |
70678006 | LOS ÁNGELES | LOS ÁNGELES (CORRAL VIEJO) |
76275024 | EL INGENIO | EL INGENIO (TARRAGONA PARTE ALTA) |
76823008 | LA QUIEBRA | LA QUIEBRA (VENTAQUEMADA) |
91001001 | COMUNIDAD INDIGENA SANTA SOFIA | COMUNIDAD INDÍGENA SANTA SOFIA |
91001002 | COMUNIDAD INDIGENA NAZARETH | COMUNIDAD INDÍGENA NAZARETH |
91001005 | COMUNIDAD INDIGENA TIKUNA DE ARARA | COMUNIDAD INDÍGENA TIKUNA DE ARARA |
91001007 | COMUNIDAD INDIGENA SAN MARTÍN DE AMACAYACÚ | COMUNIDAD INDÍGENA SAN MARTÍN DE AMACAYACÚ |
91001009 | COMUNIDAD INDIGENA ZARAGOZA | COMUNIDAD INDÍGENA ZARAGOZA |
91001011 | COMUNIDAD INDIGENA EL PROGRESO | COMUNIDAD INDíGENA EL PROGRESO |
91001012 | COMUNIDAD INDIGENA EL VERGEL | COMUNIDAD INDÍGENA EL VERGEL |
91001013 | COMUNIDAD INDIGENA PATIO DE CIENCIA DULCE KM 11 | COMUNIDAD INDIGENA PATIO DE CIENCIA DULCE KM 11 |
91001015 | COMUNIDAD INDIGENA LA LIBERTAD | COMUNIDAD INDÍGENA LA LIBERTAD |
91001016 | COMUNIDAD INDIGENA LA MILAGROSA | COMUNIDAD INDÍGENA LA MILAGROSA |
91001017 | COMUNIDAD INDIGENA SECTOR LA PLAYA | COMUNIDAD INDÍGENA SECTOR LA PLAYA |
91001018 | COMUNIDAD INDIGENA MALOKA YAGUAS | COMUNIDAD INDÍGENA MALOKA YAGUAS |
91001019 | COMUNIDAD INDIGENA LOMA LINDA | COMUNIDAD INDÍGENA LOMA LINDA |
91001020 | COMUNIDAD INDIGENA MACEDONIA | COMUNIDAD INDÍGENA MACEDONIA |
91001021 | COMUNIDAD INDIGENA MOCAGUA | COMUNIDAD INDÍGENA MOCAGUA |
91001022 | COMUNIDAD INDIGENA JUSSY MONILLA AMENA | COMUNIDAD INDÍGENA JUSSY MONILLA AMENA |
91001023 | ASENTAMIENTO HUMANO TAKANA KM 11 | ASENTAMIENTO HUMANO TAKANA KM 11 (MULTIÉTNICA) |
91001024 | COMUNIDAD INDIGENA NUEVO JARDIN | COMUNIDAD INDÍGENA NUEVO JARDIN 91001025 |
91001026 | COMUNIDAD IMDIGENA PUERTO TRIUNFO | COMUNIDAD INDÍGENA PUERTO TRIUNFO |
91001027 | COMUNIDAD INDIGENA ISLA DE RONDA | COMUNIDAD INDÍGENA ISLA DE RONDA |
91001028 | COMUNIDAD INDIGENA SAN ANTONIO DE LOS LAGOS | COMUNIDAD INDÍGENA SAN ANTONIO DE LOS LAGOS |
94001009 | RESGUARDO CACAHUAL RIO ATABAPO | RESGUARDO CACAHUAL RIO ATABAPO (CHAQUITA) |
94885000 | GALILEA | GALILEA (LA GUADALUPE) |
97777000 | PUERTO SOLANO (PAPUNAHUA) | PUERTO SOLANO (PAPUNAHUA; MORICHAL) |
SELECT 'UPDATE sip_clase SET nombre=''' || d.centropoblado || ''', observaciones=''Nombre cambiado por DIVIPOLA 2018. Antes era ' || s.centropoblado || '.'' WHERE id=''' || s.sip_idcp || '''; -- ' || s.codcp FROM
divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d
ON s.codcp=d.codcp
JOIN sip_clase AS sc ON sc.id=s.sip_idcp WHERE s.centropoblado != d.centropoblado
AND observaciones is null ORDER BY s.codcp
;
Se encuentran 1092 diferencias:
SELECT s.sip_idcp, s.codcp, s.tipocp, d.tipocp FROM
divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d
ON s.codcp=d.codcp
WHERE s.tipocp != UPPER(d.tipocp)
ORDER BY s.codcp
;
Que se actualizan en sip:
SELECT 'UPDATE sip_clase SET id_tclase=''' || UPPER(d.tipocp) || ''', ' ||
'observaciones=''Tipo de centro cambiado por DIVIPOLA 2018. Antes era ' || s.tipocp || '.'' ' ||
' WHERE id=''' || s.sip_idcp || '''; -- ' || s.codcp || ' ' || s.centropoblado
FROM divipola_sip AS s JOIN divipola_oficial_2018_corregido AS d
ON s.codcp=d.codcp
WHERE s.tipocp != UPPER(d.tipocp)
ORDER BY s.codcp
;
Se hizo por twitter en:
- https://twitter.com/pasosdeJesus/status/1112934788183310336
- https://twitter.com/pasosdeJesus/status/1112935093671268353
No hubo respuesta por Twitter pero el 18.Nov.2019 en un muestreo al DIVIPOLA más recientes se encontraron correjidos todos los errores reportados.
Desarrollado por Pasos de Jesús. Dominio público de acuerdo a legislación colombiana. Agradecemos financiación para personalizaciones de dominio público a diversas organizaciones, ver https://github.com/pasosdeJesus/sivel2/blob/master/CREDITOS.md
- Validación de etiquetas de Colombia y sus departamentos entre OSM de Sep.2022 y DIVIPOLA 2022
- Actualización a DIVIPOLA 2022-07 y Resumen ejecutivo de la actualización a DIVIPOLA 2022-07
- Actualización a DIVIPOLA 2021 y Resumen ejecutivo de la actualización a DIVIPOLA 2021
- Actualización a Rails 7
- Actualización a DIVIPOLA 2020 y Resumen ejecutivo de la actualización a DIVIPOLA 2020
- Extensiones para Chomium útiles para desarrollo
- Actualización de sip 2.0b11 a 2.0b12
- Actualización de sip 2.0b10 a 2.0b11
- Actualización de Rails 6.0 a Rails 6.1
- Resumen ejecutivo de la actualización a DIVIPOLA 2019
- Actualización a DIVIPOLA 2019
- Actualización-de-sip-2.0b6-a-sip-2.0b7
- Pasando de sprockets a webpacker con Rails 6
- Actualización a Rails 6 en 6 pasos
- Actualización a DIVIPOLA 2018
- Actualización de Rails 5.1 a Rails 5.2
- Actualizando a Rails 5
- Actualización a PostgreSQL posterior a 10.2