Configura (unisci) i dati dello shapefile privato con i dati OSM


11

sfondo

Dati Alberta OSM scaricati da Geofabrik e averli in esecuzione su un server Linux privato usando PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd e OpenLayers:

I dati sono stati importati usando osm2pgsqlcome segue:

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

Problema

I dati OSM per Alberta sono incompleti. Mi è stato dato un set di shapefile che migliora i dati OSM:

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

Inoltre, shapefile aggiuntivi per villaggi, aree urbane, confini dei distretti comunali e così via. Ho importato con successo gli shapefile in PostgreSQL usando un plugin pgAdmin . Il City.prjfile descrive la sua proiezione come segue:

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]]

I dati dello shapefile e OpenStreetMap (OSM) hanno ciascuno il proprio database, ma credo di voler importare i dati dello shapefile nel database OSM. (Questo è un server privato e una copia locale dei dati OSM; i dati dello shapefile non possono essere legalmente condivisi.)

Aggiornamento n. 1

Per essere chiari, gli shapefile non contengono strade: solo i confini dei comuni (che sicuramente non fanno parte dei dati OSM), le città (alcuni dei quali fanno parte dei dati OSM) e i confini delle città per le città più grandi (alcuni dei quali potrebbero conflitto con i dati OSM).

Domanda

Come unire i dati dello shapefile con i dati OSM in modo che le nuove città appaiano sulla mappa?

Nota: la mia preoccupazione principale è la risoluzione di dati duplicati (ad esempio, Edmonton è elencato sia in OSM che negli shapefile acquisiti).

Link correlati

Grazie!


Carica i tuoi shapefile in postgis usando i tag osm - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Naming quindi aggiorna il tuo server di tessere dovrebbe caricare tutte le nuove funzionalità come dati in stile osm.
Mapperz

Risposte:


5

introduzione

Ciò richiederà probabilmente una notevole quantità di lavoro manuale per rilevare e rimuovere i dati duplicati. Quando rilevi e risolvi i dati duplicati; vorrai che entrambe le fonti siano nello stesso formato geografico: shapefile, DB PostGIS o come dati OSM.

Flusso di lavoro

Il flusso di lavoro seguente si basa sull'avere entrambe le fonti di dati come OSM prima di unire e risolvere i dati duplicati.

Esistono un paio di opzioni per convertire i dati in OSM:

UN]

  1. Converti i dati dello shapefile in OSM come preferisci. Le versioni di ogr2ogr rilasciate nel 2013 o successive (versione 1.10 o successive, IIRC) possono anche convertire SHP in OSM. C'è anche ogr2osmcome hai notato: ci sono un paio di versioni diverse di ogr2osm, indipendentemente da quale usi: preferisco quello di Pnorman , è il più aggiornato. Indipendentemente da ciò, assicurati che i file di traduzione siano compatibili con la versione di ogr2osm che stai utilizzando (per semplicità, quelli a cui ho collegato dovrebbero essere compatibili con la versione di ogr2osm). Vedi qui come esempi per i file di traduzione compatibili con ogr2osm di pnorman.

Assicurati che il file di traduzione sia completo di tutte le informazioni che desideri nel tuo file di forma. Il file di traduzione convertirà i tuoi Tipi e attributi del file di forma in ciò che l'OSM chiama Tag , che consistono in Chiavi e Valori.

1 bis. eseguire ogr2osm.

  1. Apri josm , scarica il plugin di conflazione

  2. I tuoi dati gov ora sono un file osm. Apri josm, File> apri I tuoi dati sono lì come un livello.

  3. Se hai già i dati OSM archiviati localmente sul tuo computer, aprili in josm, si aprirà anche come nuovo livello.

  4. Unire queste due fonti di dati e risolvere i dati duplicati è noto come conflazione . Esegui il plug-in di conflazione e risolvi tutti i conflitti.

Se JOSM esaurisce la memoria (ad esempio, quando si utilizzano file di grandi dimensioni), separare i tipi di attributi e completare questo flusso di lavoro più volte, ciascuno con un diverso tipo di dati (ad es. Confini e usi del suolo; autostrade; edifici), e infine fondersi i file osm insieme usando osmio o un altro strumento.

B. JOSM può anche leggere gli shapefile sebbene il supporto SHP non sia perfetto e questo metodo presuppone che lo shapefile possa essere caricato interamente in memoria ...

  1. Avvia JOSM.
  2. Apri lo shapefile (ad es., filename.shp).
  3. Seleziona tutto.
  4. In JOSM, modifica gli attributi e le proprietà importati da SHP e modificali in modo che ciascun attributo corrisponda a un tag OSM.
  5. Salva come formato OSM.
  6. Continua da A4 e conflate

Importa come OSM

Importa i dati OpenStreetMap nel sistema come segue:

  1. Passare alla directory contenente i file OpenStreetMap (OSM) convertiti utilizzando JOSM.
  2. Eseguire i seguenti comandi nel database:
    CREA ESTENSIONE hstore;
    osm2pgsql -j -W \
              -d osm nomefile.osm

L' -jopzione è fondamentale in quanto indica a osm2pgsql di importare i tag in una hstorecolonna, preservando così la struttura di dati sottostante e importando tutti i tag nel database.

Crea livello Mapnik

Per visualizzare i dati sulla mappa, aggiungi un livello e uno stile per quel livello. Questo può essere semplice come il seguente:

  1. Modifica mapnik-stylesheets/osm.xml.
  2. Inserisci il seguente codice XML prima del </Map>tag di chiusura ...

...

<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>

Crea stile Mapnik

Continuando dalla sezione precedente:

  1. Trova l'ultimo </Style>tag (intorno alla linea 3350).
  2. Inserire il seguente codice XML prima della &layer-shapefiles;direttiva:

...

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

Roadmatcher

roadmatcher è un altro strumento che potrebbe essere utile


OpenJUMP 1.5.1 non è compatibile con RoadMatcher 1.4. OpenJUMP 1.3.1, che può utilizzare RoadMatcher 1.4, non è compatibile con PostGIS 2.0 (perché OpenJUMP chiama find_extentanziché st_find_extent). Nel database è installato PostGIS 2.0.
Dave Jarvis,

Il plug-in OpenData di JOSM legge gli shapefile: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.