13 votos

Cómo se procesan los datos OSM en bruto para openstreetmap.org

¿Alguien puede proporcionar información sobre cómo se procesan los datos de OSM o cómo se representan para www.openstreetmap.org?

Un ejemplo concreto... He extraído datos de un conjunto de datos planet.osm PostGIS reciente para una zona de Missouri. Los datos de OSM necesitan mucha limpieza antes de poder ser renderizados usando los estilos correctos. Muchas masas de agua se almacenan como cadenas de líneas que no se cierran correctamente, por lo que tengo que utilizar FME para el ajuste y luego la construcción de polígonos para que pueda tener ríos / lagos llenos de azul.

Si miro los mismos datos aquí las masas de agua se presentan como se esperaba.

Tengo problemas para identificar todos los casos en los que se requiere el snapping (por ejemplo, qué tipos "naturales" lo requieren y cuál debe ser la tolerancia). También sospecho que hay muchos otros problemas de datos que nunca veré ya que estoy tratando con toda Norteamérica.

¿Todos los que descargan y utilizan los datos de OSM pasan por su propio proceso de limpieza? ¿Alguien sabe cómo se maneja esta limpieza en www.openstreetmap.org? Parece que su proceso sería el mejor informado y el más probado.

Se agradece cualquier idea.

EDITAR : Aquí hay más información sobre mi flujo de trabajo

Se descarga un archivo planet.osm y se carga en PostGIS, utilizando Osmosis, en el esquema pgsql. A continuación, extraigo el OSM xml de PostGIS para muchas áreas pequeñas, de nuevo utilizando Osmosis. Cada uno de estos pequeños archivos xml se convierte entonces en Shapefiles utilizando FME y sus amplias categorías de características. Es esta etapa (OSM xml -> Shp a través de FME) en la que espero convertir las líneas en polígonos y realizar otras limpiezas en los datos.

Estos Shapefiles se sirven a través de GeoServer (y se almacenan en caché mediante GWC).

10voto

Devdatta Tengshe Puntos 942

Vale, hay varios ángulos diferentes en esto, y como no está claro cómo estás procesando los datos inicialmente, supongo que daré una visión general.

Hay dos formas principales de consumir los datos de OSM: utilizando osm2pgsql , una utilidad más antigua que admite "hojas de estilo" y actualizaciones diferenciales, y Imposm un sistema más reciente, basado en Python, que admite transformaciones de hojas de estilo basadas en Python. Cuando la gente hace transformaciones, muchas de ellas son en ese tipo de script. Por ejemplo, aquí está un mapa impositivo para osm-bright la hoja de estilo sobre la que Calles de MapBox (divulgación/empleo) se basa.

Para ser más específicos con lo que te encuentras, es probable que no estés procesando correctamente relaciones osm correctamente, que, en el modelo de datos, son los que permiten que las líneas múltiples formen polígonos. Herramientas como Imposm y osm2pgsql generalmente manejan este tipo de transformación de datos para usted.

En cuanto a la forma en que OSM.org hace las cosas: las ediciones están en una base de datos Postgres "semántica", y se importan continuamente a una base de datos PostGIS con ósmosis y se ha renderizado con Mapnik . No hay ningún paso de limpieza manual entre la base de datos y la representación del mapa, ya que ambos están muy acoplados y el mapa pretende estar actualizado.

5voto

dlinsin Puntos 5863

En general, usted no necesita la "alineación" como tal, puesto que el original de datos de OSM es topológicamente organizado - un polígono (= OSM), por ejemplo, se define a través de una lista de nodos de índices (y no directamente por sus coordenadas) - de modo que si el inicio y el final de índices de la misma, que se considera un polígono cerrado. De lo contrario, es una polilínea (como una carretera).

Cuerpos de mayor tamaño (como Osage río en su caso) se define generalmente a través de OSM multipolígonos, que consisten en una serie de formas de OSM (linestrings) que definen la forma y los agujeros (si los hubiere). Hay varios problemas con OSM multipolígonos:

  1. No es más que una manera de definir (basta con mirar en las especificaciones). Diferentes personas usan reglas distintas.
  2. Las reglas son implícitas - que usted necesita para leer a través de la wiki de OSM docs para tratar de entender cómo manejarlos.
  3. Si utiliza un OSM extracto de datos, algunas partes de la multipolígono podría ser falta (ya que no son geográficamente dentro del estado de Missouri). Así que usted necesita para encontrar una manera de cerrar el cuerpo de agua polígono (o por el recorte utilizando el estado límite o cierre manual con algunos herramienta GUI).

Sí, hay otros problemas con los datos, también. Principalmente se derivan de la naturaleza misma de la cartografía de OSM: personas diferentes del mapa las cosas de manera diferente y no hay-en-piedra de reglas sobre cómo hacerlo. Es más o menos un auto-organizado de la anarquía ;)

Yo nunca trabajo con aplanado de datos de OSM producido por osm2pgsql - yo siempre empiezo con el original topológico de datos en OSM XML formulario y escribir código para el proceso que en la forma que yo necesito. Pero como yo no uso Mapnik para la representación, por lo que probablemente estoy en la minoría.

1voto

SpliFF Puntos 214

Si se utiliza el esquema original de la base de datos de osm2pgsql, se tienen los modelos de datos osm relacionados 'closed way' y 'multipolygon-relation' transformados en polígonos y puestos en una tabla llamada 'planet_polygon'. Los caminos y los nodos están en 'planet_line' y 'planet_point'. Puedes acceder a estas tablas a través de Quantum GIS, y exportarlas directamente a shapefiles. También se pueden hacer consultas SQL desde Quantum GIS para filtrar los datos.

Yo no utilizaría la ósmosis para eso. No tiene el manejo de polígonos como lo hace osm2pgsql. Osmosis almacena los datos de la misma forma en que los tratan los contribuidores (Nodos, vías y relaciones). No es un esquema de base de datos adecuado para el renderizado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X