Combinar (fusionar) datos de archivos de forma privados con datos de OSM

11

Antecedentes

Descargué datos de Alberta OSM de Geofabrik y lo ejecuté en un servidor Linux privado usando PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd y OpenLayers:

Los datos se importaron de la osm2pgsqlsiguiente manera:

osm2pgsql -W -K -S /usr/local/share/osm2pgsql/default.style -d osm alberta.osm.bz2

Problema

Los datos de OSM para Alberta están incompletos. Me dieron un conjunto de archivos de forma que mejora los datos de OSM:

City.dbf, City.prj, City.sbn, City.sbx, City.shp, City.shp.xml, City.shx

Además de archivos de forma adicionales para pueblos, áreas urbanas, límites de distritos municipales, etc. Importé con éxito los archivos de forma en PostgreSQL usando un complemento pgAdmin . El City.prjarchivo describe su proyección de la siguiente manera:

GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]

Los datos del archivo de forma y los datos de OpenStreetMap (OSM) tienen cada uno su propia base de datos, pero creo que quiero importar los datos del archivo de forma a la base de datos de OSM. (Este es un servidor privado y una copia local de los datos de OSM; los datos del shapefile no se pueden compartir legalmente).

Actualización n. ° 1

Para ser claros, los archivos de forma no contienen carreteras: solo límites municipales (que definitivamente no son parte de los datos OSM), ciudades (algunas de las cuales son parte de los datos OSM) y límites de ciudades para ciudades más grandes (algunas de las cuales podrían conflicto con los datos de OSM).

Pregunta

¿Cómo fusiono los datos del shapefile con los datos de OSM para que las nuevas ciudades aparezcan en el mapa?

Nota: Mi principal preocupación es resolver datos duplicados (p. Ej., Edmonton figura en OSM y en los archivos de forma adquiridos).

enlaces relacionados

¡Gracias!

Dave Jarvis
fuente
Cargue sus archivos de forma en postgis usando las etiquetas osm - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Naming y luego actualice su servidor de mosaico debe cargar todas las nuevas características como datos con estilo osm.
Mapperz

Respuestas:

5

Introducción

Esto probablemente requerirá una cantidad significativa de trabajo manual para detectar y eliminar los datos duplicados. Cuando detecta y resuelve los datos duplicados; querrá que ambas fuentes estén en el mismo formato geográfico: shapefile, bases de datos PostGIS o como datos OSM.

Flujo de trabajo

El siguiente flujo de trabajo se basa en tener ambas fuentes de datos como OSM antes de fusionar y resolver datos duplicados.

Hay un par de opciones para convertir los datos en OSM:

UNA]

  1. Convierta los datos del archivo de forma en OSM como desee. Las versiones de ogr2ogr lanzadas en 2013 o posterior (versión 1.10 o posterior, IIRC) también pueden convertir SHP a OSM. También hay, ogr2osmcomo habías notado: hay un par de versiones diferentes de ogr2osm, no importa cuál uses; prefiero pnorman , es la más actualizada. Pase lo que pase, asegúrese de que los archivos de traducción sean compatibles con la versión de ogr2osm que está utilizando (en aras de la simplicidad, los que he vinculado deben ser compatibles con la versión de ogr2osm). Vea aquí como ejemplos de archivos de traducción que son compatibles con ogr2osm de pnorman.

Asegúrese de que el archivo de traducción esté completo con toda la información que desea en su archivo de forma. El archivo de traducción convertirá sus Tipos y atributos del shapefile en lo que OSM llama Etiquetas , que consisten en Claves y Valores.

1a. ejecutar ogr2osm.

  1. Abrir josm , descargar el plugin de fusión

  2. Sus datos de gobierno ahora son un archivo osm. Abra josm, Archivo> abrir Sus datos están allí como una capa.

  3. Si ya tiene los datos de OSM almacenados localmente en su computadora, ábralos en josm, también se abrirá como una nueva capa.

  4. La fusión de estas dos fuentes de datos y la resolución de los datos duplicados se conoce como fusión . Ejecute el complemento de combinación y resuelva todos los conflictos.

Si JOSM se queda sin memoria (p. Ej., Cuando usa archivos grandes), separe los tipos de atributos y complete este flujo de trabajo varias veces, cada uno con un tipo diferente de datos (p. Ej., Límites y usos del suelo; carreteras, edificios) y, finalmente, fusionar los archivos osm juntos usando osmium u otra herramienta.

B. JOSM también puede leer archivos de forma aunque el soporte de SHP no es perfecto y este método asume que el archivo de forma se puede cargar completamente en la memoria ...

  1. Inicia JOSM.
  2. Abra el archivo de forma (por ejemplo, filename.shp).
  3. Seleccionar todo.
  4. En JOSM, edite los atributos y propiedades que se importaron del SHP y cámbielos para que cada atributo corresponda con una etiqueta OSM.
  5. Guardar como formato OSM.
  6. Continuar desde A4 y combinar

Importar como OSM

Importe los datos de OpenStreetMap al sistema de la siguiente manera:

  1. Cambie al directorio que contiene los archivos de OpenStreetMap (OSM) convertidos con JOSM.
  2. Ejecute los siguientes comandos en la base de datos:
    CREAR EXTENSIÓN hstore;
    osm2pgsql -j -W \
              -d osm filename.osm

La -jopción es clave, ya que le indica a osm2pgsql que importe las etiquetas en una hstorecolumna, esto preserva la estructura de datos subyacente e importará todas las etiquetas en la base de datos.

Crear capa de Mapnik

Para que los datos aparezcan en el mapa, agregue una capa y un estilo para esa capa. Esto puede ser tan simple como lo siguiente:

  1. Editar mapnik-stylesheets/osm.xml.
  2. Inserte el siguiente código XML antes de la </Map>etiqueta de cierre ...

...

<Layer name="prefix_zone" status="on" srs="&osm2pgsql_projection;">
  <StyleName>zones</StyleName>
  <Datasource>
    <Parameter name="table">
    (select way from prefix_line order by tags desc, z_order) as zones
    </Parameter>
    &datasource-settings;
  </Datasource>
</Layer>

Crear estilo Mapnik

Continuando de la sección anterior:

  1. Encuentre la última </Style>etiqueta (alrededor de la línea 3350).
  2. Inserte el siguiente código XML antes de la &layer-shapefiles;directiva:

...

<Style name="zones">
  <Rule>
    &maxscale_zoom1;
    &minscale_zoom19;
    <LineSymbolizer stroke="#0065BD" stroke-width="2.5" />
  </Rule>
</Style>

Roadmatcher

Roadmatcher es otra herramienta que podría ser útil

Será.
fuente
OpenJUMP 1.5.1 no es compatible con RoadMatcher 1.4. OpenJUMP 1.3.1, que puede usar RoadMatcher 1.4, no es compatible con PostGIS 2.0 (porque OpenJUMP llama en find_extentlugar de st_find_extent). La base de datos tiene instalado PostGIS 2.0.
Dave Jarvis
El complemento OpenData de JOSM lee archivos de forma: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis