ES:Cat2Osm
IMPORTANTE:
YA NO SE SIGUE CON EL DESARROLLO DE CAT2OSM, SE HA PASADO A CAT2OSM2
DADA LA GRAN CANTIDAD DE RELACIONES QUE GENERA EL MÉTODO DE DIVISIÓN DE VÍAS COMPARTIDAS, ESTÁ PROHIBIDA LA IMPORTACIÓN A OSM DE ESTOS RESULTADOS Y SE HA CREADO CAT2OSM2 CON RESULTADOS MUCHO MÁS SIMPLIFICADOS. LOS RESULTADOS DE ESTE CAT2OSM, PUEDEN USARSE PARA IMPORTAR EN SIGS PARTICULARES AUNQUE EL RESULTADO DENTRO DEL SIG NO DISTARÁ MUCHO DEL QUE SE PUEDE OBTENER CON CAT2OSM2 UTILIZANDO EL PARÁMETRO CATASTRO3D=1
VERSIÓN ÚLTIMA DE CAT2OSM1 = 2012-11-06
Cat2Osm es una herramienta que permite relacionar los Shapefiles del Catastro español con sus Registros y transformarlos en ficheros con formato OSM para su edición mediante JOSM y posterior inclusión en la base de datos de OpenStreetMap.
Guía de Uso de cat2osm
IMPORTANTE: ESTOS RESULTADOS SON ÚNICAMENTE PARA USO PERSONAL YA QUE EL MÉTODO DE DIVISIÓN DE VÍAS COMPARTIDAS GENERA DEMASIADAS RELACIONES Y NO ESTÁ PERMITIDA SU IMPORTACIÓN A OSM
Comprobar que coincide con la versión más actual indicada arriba mediante el comando java -jar cat2osm.jar -v
Desde el 02-03-2012 el programa SOLO funciona con máquinas virtuales versión 1.7 (Oracle JDK). Podéis conseguirla aquí
Para descargar los ficheros de catastro es necesario tener DNI-e, obtener el certificado e instalar los drivers del lector y dni-e. También es posible sin DNI-e mediante un certificado electrónico de usuario expedido por la FNMT instalado en el navegador.
Descargar datos de Catastro
- Acceder a la sede electrónica de Catastro, por el apartado "Consulta y descarga masiva de datos".
- Descarga de información alfanumérica (formato CAT) Descarga urbano y rústico de la población deseada, desde el enlace. Para más información de cómo descargar los archivos de la web del Catastro ver la ayuda.
- Descarga de cartografía vectorial (formato Shapefile). Descarga los archivos urbano y rústico (sin Historia) de la población. En la ventana de descargas, después de seleccionar provincia y municipio, se debe pulsar el botón "Ver capas disponibles" y a continuación en "Marcar todas".
Preparación de entorno
Una vez realizados los pasos anteriores, deben descomprimirse los ficheros conseguidos de Catastro.
Los ficheros de información alfanumérica (CAT) están comprimidos mediante gzip (extensión .gz). Los ficheros .ZIP con información vectorial contienen, a su vez, varios ficheros .ZIP.
Desde la versión 2012-11-05 ya no es necesario descomprimir ninguno de los archivos ya que el propio cat2osm se encarga de descomprimirlo.
Comprobar que se tiene instalado FWTools, más concretamente ogr2ogr, para hacer las reproyecciones. También lo puedes instalar mediante el paquete oficial .deb o desde los repositorios; aptitude install / apt-get install gdal-bin.
Descargar el archivo cat2osm.jar (Si Github anda caído o no tiene la versión más actualizada, descargarla de aquí cat2osm.jar).
Generar o editar el fichero de configuración, indicando la ruta a los archivos descargados y los demás parámetros deseados. Si se quiere partir de un fichero de ejemplo, puede descargarse uno de aquí). Si no se tiene archivo de configuración se puede abrir una pequeña interfaz de usuario pasándole la opción -ui; el programa muestra una "interfaz gráfica" en la que se le pueden dar todos los parámetros necesarios y crea el config con ellos.
$java -jar cat2osm2.jar -ui
El archivo config requiere de un parámetro llamado Proyeccion que se corresponde con el código EPSG en que está el sistema de referencia (sistemas de coordenadas, proyecciones cartográficas...) utilizados en la cartografía vectorial descargada. Seleccionando la opción "auto", cat2osm busca dentro de los archivos .PRJ esa proyección. No debería haber ningún problema, pero en caso de no funcionar (ya sea porque en el archivo .PRJ viene escrito de otra manera u otra razón) se puede conocer este código abriendo con un editor de texto cualquiera los archivos *.PRJ de las carpetas de Shapefiles. Al comienzo de la cadena de texto aparecerá algo similar a esto: 'ETRS_1989_UTM_Zone_30N', se deberá poner en el archivo config el código EPSG correspondiente según la siguiente tabla:
Sistema de referencia | Código EPSG |
---|---|
auto | busca automáticamente |
ETRS_1989_UTM_Zone_28N | 25828 |
ETRS_1989_UTM_Zone_29N | 25829 |
ETRS_1989_UTM_Zone_30N | 25830 |
ETRS_1989_UTM_Zone_31N | 25831 |
ED50 / UTM zone 28N | 23028 |
ED50 / UTM zone 29N | 23029 |
ED50 / UTM zone 30N | 23030 |
ED50 / UTM zone 31N | 23031 |
WGS_1984_UTM_Zone_27N | 32627 |
WGS_1984_UTM_Zone_28N | 32628 |
WGS_1984_UTM_Zone_29N | 32629 |
WGS_1984_UTM_Zone_30N | 32630 |
WGS_1984_UTM_Zone_31N | 32631 |
Antes de empezar
Antes de empezar la exportación hay que plantearse 3 grandes preguntas:
¿Qué se puede importar y quién se encarga?
- Cualquier persona interesada puede hacer la conversión de los datos de Catastro a OSM con cat2osm y la edición del resultado hasta estar listo para subir a la base de datos. Sin embargo, para subir los datos hay que hacerlo con los usuarios específicos creados para la importación, que se pueden consultar aquí.
- Elije una zona que conozcas y consulta si ya hay alguien trabajando en ella visitando la página de la provincia correspondiente desde la página general de resultados. Si esa zona tiene responsable habla con él, es lo más rápido...
- Si no tiene responsable, apúntate en la wiki y a trabajar la zona empezando a crear la pagina (ejemplo: Aveinte)
¿Qué se va a importar?
Todo dependerá de la información que ya haya en OSM, que puede variar desde "casi todo" a "nada". En Ávila, por ejemplo, ya tienen bastantes geometrías de edificios y parcelas. Quizás allí lo que interese es importar -destinos, -portales y rústico, por ejemplo. En sitios donde no haya nada probablemente interese importar casi todo. Los datos que se pueden importar son:
- Portales
- Usos
- Constru + parcelas urbanas (creo que esto es lo que sale al poner parcelas, pero no estoy seguro)
- Parcelas y subparcelas rurales
- Ejes
- Todo lo anterior
Al final es el propio mapeador el que tiene que decidir qué va a importar. En caso de duda se puede consultar con otros mapeadores locales o con el responsable de la zona.
¿Cómo lo vamos a subir?
- El responsable de la zona tiene una cuenta con la que se deberá subir todo (esta sección está sin construir, por no haberlo realizado nunca...)
Una vez decididos estos puntos. Vamos al proceso:
Proceder con la conversión
- Para ejecutar el cat2osm debemos ir a su ubicación en el Terminal y ejecutarlo indicando ruta y nombre del config (config/config)
$java -jar cat2osm.jar config/config
- Para consultar la versión de Cat2Osm usar la opción -v
$java -jar cat2osm.jar -v
- Es probable quedarnos sin memoria para java así que podemos asignarle la que queramos (ej. 2Gb) con:
$java -Xmx2048m -jar cat2osm.jar config/config
- Se puede utilizar un archivo solamente y ver el resultado. Esta opción, además de los archivos que usa Cat2Osm en la ejecución normal, permite utilizar el archivo MASA, EJES y para ELEMTEX exporta todos los elementos textuales de Parajes y Comarcas; Información urbana y rústica; y Vegetación y Accidentes demográficos para superponer sobre el resultado correcto y etiquetar manualmente:
$java -jar cat2osm.jar config/config -constru $java -jar cat2osm.jar config/config -ejes $java -jar cat2osm.jar config/config -elemlin $java -jar cat2osm.jar config/config -elempun $java -jar cat2osm.jar config/config -elemtex $java -jar cat2osm.jar config/config -masa $java -jar cat2osm.jar config/config -parcela $java -jar cat2osm.jar config/config -subparce
- Proceso adicional para los usos de bienes inmuebles que tal y como vienen los datos son imposibles de asignar a cada construcción. Únicamente se sabe en qué parcela están esos usos. El proceso generará un archivo con los tags de los usos de los bienes inmuebles de todas las construcciones de una parcela y los situará en el centroide de la misma. Este archivo se puede superponer sobre el resultado correcto y un usuario conocedor de la zona taggear estos usos a sus edificios si está seguro que esos tags le corresponden.
$java -jar cat2osm.jar config/config -usos
- Si falta alguna parte o archivo el programa se ejecuta igualmente pero sin añadir los datos de la parte faltante como es lógico.
- Una vez con el archivo resultado, introducirlo en JOSM y arreglar los errores de validación que genera siguiendo las pautas que se explican a continuación.
Guía de uso en Mac OSX
- Descargar, descomprimir y componer la estructura de directorios.
- Se necesita el ogr2ogr que viene en el Framework GDAL, KIngChaos wiki ofrece un autoinstalable.
- Al ejecutarlo lo instala en la biblioteca del sistema:
/Library/Frameworks/GDAL.framework/
- Para que funcione desde cualquier sitio hay que habilitar el path; para ello ejecutar en el Terminal (consola):
$export PATH=$PATH:/Library/Frameworks/GDAL.framework/Programs/
- Al haber hecho esto la consola encontrará ogr2ogr, por lo que no es necesario indicar en el archivo config la ruta a FWTools. Dejarla tal y como está.
- cat2osm necesita OpenJDK 7. Si ejecutas el JOSM desde un archivo .app (descargado de [1] o empaquetado con el "Java Builder") necesitará el Java del sistema. Para que funcionen ambos sin problemas ir a "Aplicaciones/Utilidades/Preferencias de Java" y activar ambas versiones, poniendo OpenJDK 7 en primer lugar.
Detalles a tener en cuenta/qué puedes estar haciendo mal
- El árbol de directorios para el config de ejemplo debe tener la siguiente estructura:
- cat2osm.jar
- result
- config
- archivoconfig
- files
- Ciudad
- ___R___.CAT.gz
- ___U___.CAT.gz
- XX_XXX_RA_XXXX-XX-XX_SHF.zip
- XX_XXX_UA_XXXX-XX-XX_SHF.zip
- Ciudad
- Los directorios ALTIPUN, CARVIA, etc... contienen el contenido descomprimido del zip correspondiente del catastro. Es decir, dentro de la carpeta CONSTRU habrá un CONSTRU.DBF, CONSTRU.PRJ, CONSTRU.SHP y CONSTRU.SHX
- Cambiar en este config lo necesario para que encuentre nuestros .shp tal como se indica en la wiki
- Si el resultado está desplazado unos pocos metros, comprobar que la rejilla se está cogiendo correctamente. La rejilla viene incluida dentro del propio jar, pero si por lo que sea no funciona, se puede indicar en el campo "NadgridsPath" del config la ruta al archivo que se puede descargar desde (http://www.01.ign.es/ign/layoutIn/herramientas.do#DATUM). Para que cat2osm la encuentre, si es una ruta relativa, necesita "./" por delante.
- Si se producen errores del tipo "Simplificacion de vias null" comprobar que la Máquina Virtual de Java que se está usando sea la de SUN/ORACLE.
NOTA: este error no debería de producirse nunca más.
$java -version
El comando anterior deberá devolver algo muy similar a:
$ java version "1.7.0_03" $ Java(TM) SE Runtime Environment (build 1.7.0_03-b04) $ Java HotSpot(TM) Server VM (build 22.1-b02, mixed mode)
Una vez convertido: solución de errores y arreglos con JOSM
IMPORTANTE: ANTES DE SUBIR NINGÚN RESULTADO, CONTACTAR CON LOS ORGANIZADORES EN LA LISTA DE DISTRIBUCIÓN TALK-ES y LEER LA GUÍA DE IMPORTACIÓN DE DATOS DE CATASTRO
Comprobar que coincide con la versión más actual indicada arriba mediante el comando java -jar cat2osm.jar -v
Existe un bugtracker donde consultar los problemas conocidos y los resueltos. Es un buen punto de inicio para consultar los problemas que puedas tener.
NOTA: antes de comenzar a editar no es mala idea generar una página en la wiki siguiendo el ejemplo de Ávila. Además, en dicha página se encuentran consejos útiles de cómo se está realizando dicho import.
Con Cat2Osm se ha intentado automatizar el máximo posible la traducción de datos de Catastro a formato OSM. Aun así, existen elementos que por la forma en la que están introducidos en la base de datos catastral, necesitan que un usuario manualmente arregle lo que el programa no es capaz de distinguir. Por eso, antes de subir el resultado hay que adaptar algunos elementos y solucionar los errores que JOSM detecta al pasar el validador. En caso de que haya alguno que no esté muy claro como solucionarlo, es preferible eliminar toda la figura que genera el error. Los errores suelen ser estos y por los siguientes motivos:
Ejecución normal de cat2osm
Cuando ejecutamos cat2osm sin parámetros (java -jar cat2osm.jar ruta_al_archivo/config), estos son los errores más comunes generados y la forma en que pueden solucionarse:
- Error simplificando vía. null: Este problema ocurre cuando se usa la máquina virtual openJDK. Usando la máquina virtual de SUN NO debería de ocurrir.
- Arreglos en Cursos fluviales, Ríos, Canales, Acequias...: En catastro se almacenan los márgenes de estos elementos y el uso de la parcela como uso hidrográfico en lugar de su trazo. El programa es incapaz de crear una geometría lineal utilizando los márgenes, ya que estos vienen a trazos. Se ha optado por indicar la parcela como waterway=riverbank en casos de hidrografía natural y landuse=reservoir en casos de hidrografía artificial pero dependiendo del caso puede ser mejor que el usuario cree un way entre los márgenes con los tags más adecuados ([2]) y en caso de hacerlo, después ir a los márgenes y eliminar la relación que contenga el natural=water o landuse=reservoir con el "Editor para relacionar". Estas vías, al ser márgenes, suelen formar parte de las parcelas adyacentes al río, por lo que únicamente habrá que borrar la relación mencionada, ya que esa vía también pertenece a más geometrías. En caso de que no perteneciesen a ninguna otra geometría, podrían ser eliminadas.
- Arreglos en bordes de carreteras y ríos: Catastro crea pequeñas parcelas bajo las carreteras, caminos y a veces ríos (generalmente con el tag landuse=farm), que no son útiles. Es aconsejable que el usuario elimine esas parcelas innecesarias (que a veces incluso son dos, una a cada lado de la carretera o río) dejando esa pequeña parte de terreno vacío. Para ello se selecciona la relación y se llama al "Editor para relacionar". En él aparecerá un icono para eliminar la relación entera en la parte superior. Un ejemplo de las parcelas que se deberían eliminar: Antes de borrar: Media:BorrarParcelasArcenes1.png Después de borrar: Media:BorrarParcelasArcenes2.png
- Arreglos en Transformadores, piscinas y pozos: Los transformadores tienen una forma peculiar de ser representados en catastro. Se hace mediante un cuadrado con una equis en su interior. Estos, junto con pozos y piscinas, generalmente vienen como trazos discontinuos que no pertenecen a la misma geometría, por lo que cat2osm no es capaz de unirlos. Eso generará en el validador de JOSM un error de tipo "La vía estilo área no ha sido cerrada" (detallado más abajo).
- Error "Nodo de un extremo de vía próximo a otro vial": Cuando hay elementos lineales que terminan cerca de un way, JOSM piensa que es un way que hemos dejado sin enlazar. Seguramente no sean errores pero por si acaso habrá que comprobarlos.
- Error "Intersección entre vías multipolígono": Este error es sencillo pero a veces JOSM nos avisa de él aunque realmente no ocurra. Si dos polígonos interseccionan, comprobar si de verdad debería ser así y arreglarlo más o menos utilizando la capa de satélite.
- Error tipo "La vía estilo área no ha sido cerrada": Error muy común sobre todo de subestaciones eléctricas y piscinas o zonas de agua. Estos elementos los han introducido como líneas independientes que no forman una única geometría. Por eso el programa no es capaz de unir los ways que la forman. Para las piscinas o zonas de agua, habrá que ir uno por uno combinando sus vías (seleccionar las vías y pulsar tecla C). Es importante saber que puede haber algún caso en el que exista una zona de agua (natural=water) sobre una área idéntica ya marcada como piscina (leisure=swimming_pool). En ese caso elegir la capa de imágenes de satélite más apropiada. Para las subestaciones, en Catastro se dibujan en forma de cuadrado con una cruz en su interior o a veces como un pequeño edificio. Habrá que crear o reutilizar un nodo en el centro, asignarle el tag power=sub_station y eliminar toda la figura inicial salvo ese nodo.
- Error "Nodos duplicados en dos vías no cerradas": Se dan casos de nodos que están duplicados y superpuestos. Para solucionarlo, seleccionarlos en JOSM (ya sea con Ctrl + clic o manteniendo el ratón pulsado haciendo un rectángulo de selección sobre ambos) y luego unirlos (tecla M), en caso de que sean dos nodos, o uniendo el nodo a la vía (tecla J). De todos modos si no me equivoco la base de datos debería hacer la unión de dos nodos con la misma posición al subirlo a la base de datos.
- Error "Tipo natural lámina de agua - Vía sin cerrar": Este error está ligado al de "Vía estilo área no ha sido cerrada". Al solucionar aquel se solucionará también éste.
- Error "Lámina de agua utilizado para Piscina": En Catastro en algunos casos en el shapefile han indicado que es una zona de agua y luego en el archivo .cat se indica que es piscina. JOSM nos avisará de esta incongruencia y con las imágenes de satélite elegimos la más adecuada de las dos borrando la otra.
- Error "Vía duplicada": Este error el programa lo arregla pero como consecuencia de arreglar advertencias podemos volver a crearlo nosotros. Para solucionarlo basta pulsar el botón "Corregir" del validador teniendo seleccionadas las vías duplicadas: Si se quiere hacer manualmente, hay que seleccionar los nodos extremos de esos dos ways idénticos, seleccionar también esos ways y combinar vías (tecla C).
- FIXMEs: La traducción de los metadatos de los archivos shapefiles y los registros de catastro se ha hecho siguiendo la documentación existente. Aun así hay datos que no están documentados y que el cat2osm los resaltará con un fixme ya que ese código/uso de suelo/... no se encuentra documentado. Indicad en la página de Traduccion metadatos catastro a map features los fixmes encontrados y a poder ser una breve descripción de su situación o una teoría de por qué puede tener ese valor.
Ejes
Existen dos casos en los que puede ser interesante la importación de ejes: poblaciones en las que no esté mapeada actualmente ninguna calle o muy pocas y poblaciones en las que se han trazado las calles sobre fotografía aérea pero faltan todos los nombres.
Para generar el archivo osm con las calles ejecutaremos:
java -jar cat2osm.jar ruta_al_archivo/config -ejes
Si solo queremos trabajar con los ejes urbanos, podemos dar una ruta a una carpeta que no contenga información sobre la parte de rústica al generar el archivo config o simplemente comentar (poner un # delante) las líneas que hacen referencia a la parte de rústica:
UrbanoSHPPath=/home/usuario/cat2osm/files/mi_pueblo/10_03_UA_2012-01-20_SHF.zip #RusticoSHPPath=/home/usuario/cat2osm/files/mi_pueblo/10_03_RA_2012-01-20_SHF.zip UrbanoCATFile=/home/usuario/cat2osm/files/mi_pueblo/10_03_U_2012-01-22.CAT.gz #RusticoCATFile=/home/usuario/cat2osm/files/mi_pueblo/10_03_R_2012-01-20.CAT.gz
Una vez obtenido el archivo EJES.osm lo abrimos en JOSM y encuadramos la zona en la que vayamos a trabajar. Creamos una capa nueva (Ctrl+N) y descargamos en ella los datos que existan actualmente en OSM (la llamaremos capa OSM). También activaremos la foto aérea de fondo que más nos convenga (bing, PNOA, ITACyL, etc). También puede ser muy útil añadir la capa WMS del Catastro (http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx?).
El primer paso ahora será mejorar los datos que ya hay en OSM (si hay alguno):
- Perfilar vías.
- Delimitación del casco urbano (landuse=residential).
- Completar carreteras de acceso.
- Pasar el validador y corregir lo que se pueda.
Una vez hecho todo lo anterior subir los cambios con nuestro usuario habitual.
A continuación activamos la capa EJES y comenzamos a trabajar con ella. Lo primero será borrar de esta capa lo que ya exista en OSM. Antes de borrar comprobar si el nombre de las vías está en OSM y si no copiarlo en la vía correspondiente de la capa OSM antes de borrar, con la etiqueta "source:name=catastro".
- Corrección de nombres: hay que revisar todos los nombres, porque pueden tener diversos errores. Lo más fácil es seleccionar todas las vías (Ctrl+A) y verlas en la ventana "Selección". Los errores más comunes se indican a continuación; para corregir muchos de ellos se puede usar este script, pero aun así habrá que hacer una revisión uno a uno. Para las dudas con los nombres suele ser muy útil activar la capa WMS del Catastro (más arriba tenéis la dirección).
- En catastro los nombres están introducidos sin acentos. Deben ponerse.
- Sustituir las abreviaturas por la palabra completa. Ej.: Calle Ntra Sra de Guadalupe->Calle Nuestra Señora de Guadalupe
- Artículos al final del nombre: ej. "Avenida Americas de las"->"Avenida de las Américas"
- Nombre truncados: a veces el final de los nombres está cortado. Si no conocemos el nombre, se puede recurrir a la capa WMS del catastro que, curiosamente, no tiene los mismos nombres y suelen venir completos.
- Falta de partículas: ej.: Plaza España->Plaza de España. Solo las pondremos cuando estemos seguros.
- En los municipios con varios núcleos de población suele aparecer el nombre de las pedanías entre paréntesis al final del nombre de las calles; hay que quitarlo. Según el número de calles puede compensar eliminarlos con un editor de texto plano.
- En catastro figuran aún muchas calles con nombres franquistas. Dado que esos nombres se supone que en la actualidad deben haber cambiado, sustituir la etiqueta name por old_name.
- Varias calles con el mismo nombre: es habitual que varias calles tengan el mismo nombre en catastro. En esos casos poner un "fixme=Verificar nombre" a las vías en duda, para que alguien lo revise en otro momento.
- No es raro encontrarse con calles en las que los nombres difieren entre el servicio WMS y la cartografía vectorial de Catastro. En estos casos concretos podemos hacer una búsqueda por Internet para averiguar la denominación correcta.
- Plazas: en catastro figura el contorno de las plazas. Unir las vías que lo forman y añadir area=yes
- Combinar (tecla C) los distintos tramos de vía que formen parte de una misma calle y tengan las mismas propiedades. Normalmente se pueden conocer por el nombre, aunque a veces se ve evidente que vías con el mismo nombre no forman parte de la misma calle, por error en los datos de catastro.
- Simplificar vías: las vías en catastro tienen un gran número de nodos redundantes (nodos intermedios entre dos tramos rectos que no aportan nada o nodos muy juntos) que se deben borrar antes de subir los datos. Se puede hacer a mano o usando la herramienta "Simplificar vías", aunque esto último puede eliminar más nodos de la cuenta.
- Corregir geometría: en general las vías de catastro están bastante bien trazadas, pero conviene verificar sobre fotografía aérea, porque siempre hay alguna que se sale de madre. También hay que asegurarse de que todas las vías están conectadas entre sí, ya que en algunos municipios quedan nodos duplicados, uno encima de otro pero sin unir (en JOSM parece como si un nodo tuviera sombra).
- Añadir la etiqueta highway que corresponda, normalmente residential, pedestrian o footway.
Una vez hechos todos los arreglos anteriores, seleccionar las vías que se quieran importar y con Ctrl+Mayúsculas+M unirlas a la capa OSM previamente descargada y completada. A continuación borrarlas de la capa de ejes del catastro.
- Conectar todas las vías importadas con las de la capa OSM. Siempre procurar mantener los elementos que ya están en la base de datos de OSM. Por ejemplo, para unir dos nodos arrastrando y pulsando Ctrl, arrastrar el nodo importado de catastro sobre el nodo que ya exista, en vez de al revés.
- Pasar el validador y corregir los nuevos errores y advertencias que detecte.
- Tras todo lo anterior el archivo estaría listo para subir a la base de datos. Cambiar nuestro usuario habitual por el usuario creado para la importación de catastro. Consultar aquí los usuarios de la importación y los correos para contactar con el responsable de cada provincia y solicitar la contraseña. Para cambiar el usuario ir a la configuración de JOSM (Editar->Preferencias o F12) y entrar en la pestaña "Configuración de conexión del servidor OSM".
Insertar aquí texto sin formato
Resultado de la conversión
Enlaces y estado de las conversiones
Galería de imágenes
Riotuerto (Cantabria).
Pesquera (Cantabria).
Liérganes (Cantabria). Sugerencia de etiqueta (revisión 06-02-2012).
Liérganes (Cantabria). Sugerencia de etiqueta (revisión 10-03-2012).
Santoña (Cantabria). Error de codificación de caracteres.
Monte Buciero en Santoña (Cantabria). ¿Es correcta la etiqueta landuse=farm?
Penal de El Dueso (Cantabria). Algunas áreas son etiquetadas amenity=public_building debido a la clasificación de Catastro.
Ruiloba (Cantabria).Problema en el etiquetado de plantaciones forestales. Etiquetas propuestas para eucaliptus: landuse=forest,type=evergreen
Ejemplo de la salida de cat2osm: Cat2Osm Adeaseca de Alba (Salamanca)
¿Qué metodología de trabajo puedo seguir?
Dependerá de como se maneje el usuario con las herramientas de edición que existen para trabajar con datos de OSM pero esta guía es un buen recurso para trabajar con los datos que transforme cat2osm. El tutorial indica el método para indicar el estado en el que está el proceso de conversión de cada municipio.
Funcionamiento y descripción interna de cat2osm
IMPORTANTE: ANTES DE SUBIR NINGÚN RESULTADO, CONTACTAR CON LOS ORGANIZADORES EN LA LISTA DE DISTRIBUCIÓN TALK-ES y LEER LA GUÍA DE IMPORTACIÓN DE DATOS DE CATASTRO
Comprobar que coincide con la versión más actual indicada arriba mediante el comando java -jar cat2osm.jar -v
Se requiere de FWTools, mas concretamente de ogr2ogr, y de la rejilla de la península para hacer las reproyecciones. Ojo, SOLO funciona con la máquina virtual de java de sun. Usando la openjdk da lugar a problemas en algunos casos.
El programa recibe el archivo de configuración como argumento para obtener de él los parámetros de configuración. En caso de no encontrarlo, se abrirá una interfaz para ayudar a generarlo. Una vez generado hay que cerrar Cat2Osm y volver a lanzarlo pasándole el archivo de configuración (mas adelante se detalla cómo).
El programa primero reproyecta los archivos shapefile (utilizando ogr2ogr, para ello es necesario tener instalado FWTools) utilizando la rejilla de la península para ajustarlos a la proyección que utiliza OpenStreetMap. Los archivos reproyectados se crean en la carpeta que se especifica para el resultado para así no sobreescribir los originales. Siguiente, lee los shapes de los archivos .shp reproyectados y carga en memoria las geometrías y algunos de los metadatos que se han creído necesarios dependiendo del tipo de shape (ver Manual descriptivo Shapefile).
Estas son las clases más representativas del código de Cat2Osm:
Cat2Osm: Clase principal de la aplicación donde están la mayoría de los métodos de la lógica.
Cat2OsmUtils: Clase que contiene las listas de nodos, ways y relations y utilidades para manejarlos y evitar repetidos.
ShapeParser: Clase Thread que crea un script para llamar a ogr2ogr, reproyecta, lee los nuevos archivos reproyectados, los carga en memoria y, una vez finalizado, intenta eliminar los archivos temporales (reproyectados y script) creados. Al ser hilos, se ejecutan de forma concurrente leyendo todos los shapefiles a la vez.
ShapeParcela: Estos shapes pueden ser uno o varios polígonos (Geometría MultiPolygon) y estos a su vez pueden tener "subpolígonos" para marcar "agujeros" (no suele ser lo habitual). Los polígonos se almacenan como una estructura de datos de tipo LineString de tal forma que el primer LineString (el de índice 0) es el contorno (el outer) y los siguientes en caso de haberlos, son los "subpolígonos". De las parcelas se almacena su referencia Catastral.
ShapeSubparce: Iguales a los shapes de Parcela (Geometría MultiPolygon) pero solo se usa para suelos rústicos (en los urbanos viene vacío). Los polígonos se almacenan como una estructura de datos de tipo LineString, de tal forma que el primer LineString (el de índice 0) es el contorno (el outer) y los siguientes, en caso de haberlos, son los "subpolígonos". De las subparcelas se almacena la referencia catastral de la parcela para relacionarla, la clave de subparcela (con la cual luego se accede al archivo Rusubparcela) y el tipo de cultivo que se obtiene de ese archivo.
ShapeMasa (No se utilizan en la ejecución normal ya que no aportan información adicional. De todos modos es posible utilizarlos con el comando para usar un shapefile aparte.): Representa las manzanas urbanas o polígonos rústicos (las parcelas y subparcelas quedarán en su interior). No se guarda ningún atributo de los que contiene el shapefile.
ShapeConstru: Estos shapes pueden ser uno o varios polígonos (Geometría MultiPolygon) y estos a su vez pueden tener "subpolígonos" para marcar "agujeros". Los polígonos se almacenan como una estructura de datos de tipo LineString de tal forma que el primer LineString (el de índice 0) es el contorno (el outer) y los siguientes, en caso de haberlos, son los "subpolígonos". Para las construcciones, se guardan su referencia Catastral y el atributo Constru (ver página 15 Manual descriptivo Shapefile)
ShapeElempun: Shapes para elementos puntuales (Geometría Point), para los cuales se guarda la coordenada (Coordinate) en la que se sitúan. Para estos shapes se almacena su TTGGSS. (ver páginas 17-23 Manual descriptivo Shapefile)
ShapeElemtex (En la ejecución normal solo se utilizan los que contienen números de portal. Los demás no se utilizan porque es muy difícil de manejar los distintos textos. Estos es posible utilizarlos con el comando "-elemtes" para usar solo el shapefile aparte.): Shapes que en catastro se usan para escribir texto. Aunque los shapes vienen representados como pequeños segmentos (Geometría MultiLineString), se ha hecho que únicamente genere y guarde el punto central de esos segmentos. Para estos shapes se almacena su Rótulo y TTGGSS. (ver páginas 17-23 Manual descriptivo Shapefile) El Rótulo es el texto que tiene en Catastro y este en muchas ocasiones está separado en dos Elementos textuales, incompleto, separadas todas las letras por espacios... Existe un TTGGSS para rótulos de portales que sí se utiliza en la ejecución normal. Estos rótulos no suelen estar sobre las parcelas a las que hacen referencia por lo que mediante un proceso que compara la más cercana, la más cercana con el mismo número de portal y la más cercana con el número par si es par o impar si es impar se ha añadido esa entrada a la geometría de su parcela. Cat2Osm tiene un parámetro con el cual saca un archivo con todos los elementos textuales de Parajes y Comarcas, Información urbana y rústica y Vegetación y Accidentes demográficos para superponerlo sobre el resultado correcto y que un usuario se dedique a etiquetar esos elementos textuales a las geometrías si lo necesita. Para facilitar la asignación de etiquetas se puede definir en el fichero config la ruta de un fichero de reglas de etiquetado para elemtex (ver el fichero config/elemtex.rules de ejemplo). En ese caso, el programa asignará etiquetas en función de las reglas que cumpla el campo ROTULO. La capa también tiene elementos de CONSTRU mal asignados. El fichero de reglas puede contener también expresiones regulares sin etiquetas que sirven para filtrar los rótulos que las cumplan.
ShapeElemlin: Son shapes de elementos lineales (Geometría MultiLineString). Se almacenan como LineString. De los elementos lineales se guarda su TTGGSS. (ver páginas 17-23 Manual descriptivo Shapefile)
ShapeEjes: Son shapes de elementos lineales (Geometría MultiLineString). Se almacenan como LineString. Dado que Catastro es una base de datos principalmente para visualizar los datos, las vías están como segmentos independientes, sin conectar entre sí y con saltos grandes en el paso de zonas urbanas a rústicas. Solo vemos recomendable utilizarlo en casos en los que en una determinada población no haya carreteras importadas y se quiera hacer pero esto va a requerir muchísimo trabajo por parte del usuario para adecuar los datos que produzca el resultado. En este caso se guarda el número de Via y lo enlaza con el archivo Carvia para obtener el nombre de la Vía.
Al guardar los shapes en memoria, primero se insertan los nodos de cada shape en una estructura que controla que no haya repetidos.
Después se parten los polígonos, subpolígonos y segmentos en el máximo número de vías posible, es decir, uno por cada dos nodos, y también se meten en una estructura que evita que haya repetidas. A cada vía se le añade una lista de los shapes (geometrías) a las que pertenece. Para vías compartidas por dos shapes, al ir a crearla y ver que ya existe, a la existente se le añade que también pertenece a este otro shape. Esto sirve para el proceso de simplificar más adelante. Se hará comparando a que shapes pertenece y si están unidas por algún nodo. Es decir, si tenemos dos vías que se conectan por un nodo y las dos pertenecen al mismo shape o los mismos shapes, se unen en una sola. En cambio si tenemos dos vías que se unen en un nodo pero alguna pertenece a un shape distinto, estas no se pueden unir.
Para las relaciones, en el momento de partir y leer las vías, se le añade una lista con todos los ids de las vías que componen la geometría (recordar que las vías de momento están partidas en vías de dos nodos) y los tags que se han leido del shape. Cuando hay multipolígonos (que vienen representados como una lista de polígonos), el primero (índice 0) es el de contorno = outer y los siguientes, si los hay, son los "subpolígonos" = inner. Todas las relaciones también se almacenan en una estructura que evita que haya repetidas.
Llegados a este punto ya se han leído los shapefiles, evitando repetir nodos, vías y relaciones. El número de vías es el máximo que se puede conseguir sin repetir ya que todas están partidas en vías de dos nodos.
Una vez realizado esto, lee los registros de los dos archivos .CAT (Urbano y Rústico) y la añade a las relaciones creadas en memoria en función de la referencia catastral de la geometría. En los registros, no tiene por qué venir información acerca de todas las geometrías y algunos registros no se pueden relacionar directamente con una referencia catastral o son para otro propósito (Ver Manual descriptivo Tipos de Registros de Catastro). La traducción de los datos del archivo .CAT a los tags que mas se aproximan en OSM se puede seguir aquí aquí.
A continuación, dado que ya están todas las fuentes de información leídas, empieza un largo proceso de simplificación de vías. Este, compara cada vía con todas las demás en busca de vías que estén conectadas a ella y al encontrarlas comprueba si pertenecen a los mismos shapes. Tal y como se ha explicado antes se unirán las vías que compartan algún nodo y que pertenezcan exactamente a las mismas geometrías. Para unirlas, se elimina una de las dos vías de la estructura que almacena las vías y de todas las relaciones que la contienen y a la otra se le concatenan los nodos de la eliminada. Este proceso es largo y hasta el momento se ejecuta de forma secuencial por lo que dependiendo de la población puede extenderse durante horas. Existe un parámetro de configuración que permite sacar esa lista de shapes de cada vía y de cada relación en forma de tag en casos donde se quiera trazar un error.
Finalmente escribe tres archivos temporales, uno de nodos, otro de vías y un tercero de relaciones para facilitar luego el unirlos en un archivo final que será el resultado.
Ejemplo del resultado obtenido:
Guía de Hackeo de cat2osm
Para compilar cat2osm se necesita lo siguiente:
- Obtener el código de github.
- Descargar el entorno de desarrollo Eclipse.
- Descargar dependencias: Geotools 2.7, FWtools, javadbf y jai_core.jar
Para ejecutar el cat2osm.jar ya compilado solo hace falta ogr2ogr, que viene incluido en FWTools o en el paquete gdal-bin.
TODO cat2osm
- WIP Conseguir automatizar la reproyección de los shapefiles.
- Para que ways que no forman un área cerrada no adquieran el tag multipolygon, implementar el método vacío AreaCerrada(). Los ways que no cierran un área no tienen que tener el tag multipolygon.
- Mediante el atributo CONSTRU de Constru.shp (página 15 Manual descriptivo Shapefile), estar atento a los nuevos avances que se hagan en OSM-3D. Hasta el momento se interpreta el atributo y únicamente se añaden los tags building:levels y building:min_levels para representación 3D.
- La traducción está prácticamente lista. Ahora viene la fase de cómo fusionar con los datos existentes.