OpenStreetMap

Usar los datos de Google Open-Buildings en JOSM

Posted by AngocA on 19 September 2023 in Spanish (Español). Last updated on 20 September 2023.

Me dió por investigar cómo usar los datos de Google de los edificios, y usarlos en OSM, ya que tienen licencia ODbL (Al mismo tiempo de CC-BY).

Áreas de Latam donde hay edificios

Los datos están disponibles en https://sites.research.google/open-buildings/, divididas por zonas en el mapa.

Imagen de divisiones

Las zonas están en el hemisferio sur, dónde más falta mapeo (USA y Europa tienen muchos datos en OSM). Es una especia de cuadrícula sobre los continentes y cada cuadrícula puede variar entre 1 GB o 20 MB aproximadamente.

Lo que se descarga en un archivo tar.gz, por lo que es necesario tener un programa para extraer GNU Zip, el cual diferente al clásico ZIP.

Una vez extraído se obtiene un archivo separado por comas CSV.

La primera línea del archivo tiene los nombres de las columnas, lo que será necesario quitar para procesarlo.

La mejor forma para usarlo es por medio de una base de datos Postgresql con PostGIS, y después publicarlo con un GeoServer, para consumir un WMS desde JOSM.

Comencemos a procesar el archivo (quitar el encabezado), configurar la DB de Postgresql y después cargar el archivo.

FILE=8e3_buildings.csv

mv "${FILE}" /tmp/buildings.csv
tail -n +2 /tmp/buildings.csv > /tmp/tmp.csv 
mv /tmp/tmp.csv /tmp/buildings.csv

psql

CREATE DATABASE gob WITH OWNER angoca;
 
psql -d gob

CREATE EXTENSION postgis;

CREATE TABLE Open_Buildings_Temp (
 latitude DECIMAL NOT NULL,
 longitude DECIMAL NOT NULL,
 area_in_meters DECIMAL NOT NULL,
 confidence DECIMAL NOT NULL,
 geometry VARCHAR NOT NULL,
 full_plus_code VARCHAR
);

CREATE TABLE Open_Buildings (
 latitude DECIMAL NOT NULL,
 longitude DECIMAL NOT NULL,
 confidence DECIMAL NOT NULL,
 geometry GEOMETRY NOT NULL
);

COPY Open_Buildings_Temp
 (latitude, longitude, area_in_meters, confidence, geometry, full_plus_code)
 FROM '/tmp/buildings.csv' csv;

INSERT INTO Open_Buildings
 (latitude, longitude, confidence, geometry)
 SELECT
  latitude, longitude, confidence, ST_GeomFromText(geometry, 4326)
 FROM
  Open_Buildings_Temp;

DROP TABLE Open_Buildings_Temp;

Una vez cargado los datos en PostGIS, ahora generemos una capa de estilos en QGIS. Para esto se configura una capa desde PostGIS, conectándose a la DB. Después de agregar la capa, se le dan propiedades a la capa para escoger los colores. En Simbología, escogemos en la parte superior “Graduated”, en valor escogemos la columna “Confidence”, podemos cambiar los colores de Ramp, a amarillo y verde. Después se le hace click en “Classify”, lo cual puede tomar un tiempo ya que tiene que analizar todos los datos, y se obtendrá una tabla de colores similares a la de la imagen.

Configuración del color de la confidencialidad del edificio

En la parte baja se selecciona “Estilo”, y se le indica “Guardar Estilo”. en la nueva ventana se selecciona “Guardar Estilo” como “Estilo SLD”.

Guardar SLD

Después escoger los tres puntos “…” e indicar el nombre del archivo. Ahí se especifica una ruta, la cual se usará para determinar los colores desde GeoServer.

Ahora vamos al GeoServer, comencemos creando un Espacio de Trabajo, para separar todo lo de Open-Buildings.

Agregamos una nueva fuente de datos, que corresponde a la base de datos. En la imagen mostrada ya hay otros definidos.

Escogemos una DB tipo PostGIS.

Y le indicamos la configuración para acceder.

Ahora vamos a Capas, y agregamos una nueva.

En nueva capa escogemos la fuente de datos definida antes.

Para poder crearla debemos definir los límites, lo cual se define haciendo click en “Calcular desde los datos” y después en “Calcular desde el encuadre nativo”.

Ahora creamos el estilo, para poner los colores del nivel de confidencialidad de la silueta del edificio.

En la creación del estilo, le damos cargar archivo, donde escogemos el archivo generado por QGIS, el SLD. Y le damos validar.

De vuelta en la capa, la abrimos, y en configuración de WMS escogemos la de “Open-Buildings” y cambiamos el estilo por defecto, de manera que nos muestra las mismas opciones de degradé que se definieron en QGIS.

Ya podemos previsualizar la capa, haciendo click en OpenLayers.

Y puede tomar un poco mientras genera la imagen. Copiemos la URL hasta la interrogación.

Si se hace más zoom, se deben ver los edificios de diferentes colores.

Ahora configuremos JOSM. Abrimos las configuración de imágenes, donde seleccionamos agregar WMS. Ahí pegamos la ruta que copiamos en el paso anterior y hacemos Get Layers. Recomiendo cambiar el nombre de la capa a:

“Google Open-Buildings”

Y después activamos la capa en JOSM.

Discussion

Comment from ignaciolep on 20 September 2023 at 16:01

Felicitaciones por este excelente trabajo. Me parece muy interesante. Sin embargo, antes de utilizar este dataset en OSM, creo que es necesario verificar cuidadosamente qué datos son útiles y evitar importarlos sin criterio. Al menos en Buenos Aires veo a simple vista que el algoritmo identificó como “edificios” separados las distintas secciones del techo de una misma construcción. Además, al trabajar con los techos, si la imagen satelital no está perfectamente ortorectificada, es decir, corregida de las distorsiones geométricas causadas por la perspectiva, la ubicación del “edificio” detectado también estará desplazada respecto a la realidad. Estos son algunos de los desafíos que se presentan al usar este tipo de datos.

Se puede leer más sobre las limitaciones y la calidad de los datos en las preguntas frecuentes de Open Buildings.

Log in to leave a comment