Retomo este hilo para notificar que he comenzado la importación de códigos postales de CDMX por la alcaldía Cuauhtémoc, antes practiqué en un municipio de San Luis Potosí. La idea es importar los códigos por municipio por estado, pero empezaré donde contribuyo más (precisamente con estas dos entidades federativas), aunque depende del tiempo que tenga a mi disposición. Por ahora, el changeset de Cuauhtémoc está disponible en https://www.openstreetmap.org/changeset/107337068 y si hay algún dato que haya modificado accidentalmente como consecuencia de esta importación, estaré por aquí y en OSM.
La única regla que seguí fue subordinar estas relaciones de código postal a los límites administrativos nivel 6 (municipios). Cuando fue necesario se crearon nuevos nodos en este nivel, pero no se modificaron (o si se hizo se modificó de forma mínima) las ubicaciones de nodos preexistentes.
ACTUALIZACIÓN: Le dediqué la semana (tiempo libre, donado) y pude completar Cuauhtémoc, Coyoacán, Benito Juárez, Azcapotzalco, Iztapalapa, Iztacalco, Miguel Hidalgo y Venustiano Carranza. Juntas son la mayoría de la parte urbana de la Ciudad de México, si incluyo Gustavo A. Madero, que espero completar antes de que la semana acabe, y restan delegaciones más rurales. Las partes urbanas son las más tediosas ya que están más densamente pobladas y en consecuencia más divididas… mención especial a Iztapalapa, con multipolígonos disyuntos. En fin, aparte de la Ciudad de México, me imagino que el resto de la región del Valle Metropolitano será la parte más dura de terminar. Sin embargo, ya con la experiencia me sostengo en que no es una labor imposible, incluso para una sola persona con algo de paciencia.
ACTUALIZACIÓN 2: Le dediqué menos tiempo esta semana, aunque aún no termina. Restan La Magdalena Contreras, Tláhuac, Xochimilco y Milpa Alta. Tlalpan fue particularmente laboriosa, mucho más que Iztapalapa. Más que la densidad poblacional, la combinación de ésta con la orografía pueden complicar mucho la delimitación de los códigos postales; encima de esto los límites administrativos como en el Sur de Tlalpan-Xochimilco, no se corresponden tan bien con los códigos postales.
ACTUALIZACIÓN 3: Hace un par de horas subí las últimas dos alcaldías, con lo que se completa la importación para CDMX. Ahora casi cualquier ubicación debería dar el código postal en esta entidad. El “casi” se debe a que hay pequeñas áreas en la periferia en las que probablemente el CP corresponde a estados vecinos. Mi plan es continuar con áreas metropolitanas y luego moverme a áreas rurales, pero no sé cuando ni estoy seguro de ello. Varios aspectos se presentaron en cuanto a la sobreposición de límites de colonias y municipios… quizá un día podamos discutirlo.
||||||||||||||||||||||||||||||||||||||||||
A grandes rasgos el proceso que sigo está basado en el de la importación del MGN de límites estatales y municipales. Afortunadamente no hay mucho que combinar de OSM con lo de Correos de México, así que no he requerido de una herramienta “interna” como la tal mxsplit. Como pasos, en un área de interés (ADI):
EN UN SOFTWARE SIG GENÉRICO:
- Reproyectar los datos del ADI desde la proyección local con la que cuentan.
- Convertir los polígonos en líneas.
- Unir las líneas convertidas consigo mismas para pasar de líneas a multilíneas.
- Calcular las geometrías (longitud) de las líneas (servirá como ID propenso a fallar, pero efectivo para identificar las líneas que se solapan).
- Disolver las líneas usando su longitud como campo para disolución.
- Extraer líneas que solapan con un búfer de los límites municipales del ADI, de esta forma se extraen líneas que van hacia límites municipales, pero no que solapen con éstos. Así se evitan conflictos con los datos preexistentes en OSM.
- Guardar las geometrías restantes para cargar en JOSM (se queda el campo de longitud).
EN JOSM:
8) Cargar el archivo en JOSM.
9) Cargar el kml/shape de correos de México y enviarlo al fondo. Ayuda etiquetar convenientemente “postal_code” como “name” y los polígonos como áreas o edificios para que desplieguen su nombre.
10) Cargar el archivo trabajado de 1-6.
11) Descargar los límites administrativos de nivel 6 y sus relacionados con una consulta de Overpass como:
(
wr["boundary"="administrative"]({{bbox}});
wr["admin_level"=6]({{bbox}});
);
(._;>;);
out meta;
Pueden usarse también regexp para incluir en boundary “postal_code”.
- Unir la capa trabajada de 1-6 con la descargada mediante Overpass.
- Partir los límites administrativos municipales donde terminan los nodos de códigos postales. Es importante checar que hagan snap los nuevos datos con los preexistentes.
- Construir las relaciones de código postal, una por una, para garantizar que las relaciones cierren y utilicen las mismas vías de los límites administrativos.
- Los keytags para las relaciones son type=boundary, boundary=postal_code y postal_code=12345 (el código postal). Los roles de cada vía son en general “outer” (se pueden establecer usando un editor de texto en stream o Notepad++ para no quedarse mucho rato en eso, sustituyendo “role=‘’” con “role=‘outer’”).
- Al final, en JOSM se pueden buscar todas las ways con key “longitud” y cambiar esta por boundary=postal_code.
- Subir y verificar la validez de los datos para encontrar posibles errores.
CONTRAS: No es un procedimiento automático, pero es suficientemente rápido.
PROS: Se suben datos que encajan con los preexistentes en OSM. Hay un buen control de calidad.
Bueno, a grandes rasgos ese es el procedimiento que uso. En CDMX mis ADI son alcaldías, pero podría ser estados completos en casos menos complejos como Baja California Sur. En fin… ojalá esto sirva de algo o pueda acelerarse de alguna otra forma.