Conflate (mescle) dados shapefile privados com dados OSM


11

fundo

Baixou os dados do Alberta OSM da Geofabrik e os executa em um servidor Linux privado usando PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd e OpenLayers:

Os dados foram importados usando osm2pgsqlo seguinte:

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

Problema

Os dados OSM para Alberta estão incompletos. Recebi um conjunto de shapefiles que aprimora os dados do OSM:

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

Além de arquivos de forma adicionais para aldeias, áreas urbanas, limites de distritos municipais e assim por diante. Importei com sucesso os shapefiles para o PostgreSQL usando um plugin pgAdmin . O City.prjarquivo descreve sua projeção da seguinte maneira:

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

Os dados do shapefile e os dados do OpenStreetMap (OSM) têm seu próprio banco de dados, mas acredito que quero importar os dados do shapefile para o banco de dados OSM. (Este é um servidor privado e uma cópia local dos dados OSM; os dados do shapefile não podem ser compartilhados legalmente.)

Atualização # 1

Para ficar claro, os arquivos de forma não contêm estradas: apenas limites de município (que definitivamente não fazem parte dos dados OSM), cidades (algumas das quais fazem parte dos dados OSM) e limites de cidades para cidades maiores (algumas das quais podem conflito com os dados OSM).

Questão

Como mesclar os dados do shapefile com os dados do OSM para que as novas cidades apareçam no mapa?

Nota: Minha principal preocupação é resolver dados duplicados (por exemplo, Edmonton está listado no OSM e nos shapefiles adquiridos).

Links Relacionados

Obrigado!


Carregue seus shapefiles no postgis usando as tags osm - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Naming; em seguida, atualize seu servidor de tile para carregar todos os novos recursos como dados osm.
Mapperz

Respostas:


5

Introdução

Isso provavelmente exigirá uma quantidade significativa de trabalho manual para detectar e remover os dados duplicados. Quando você está detectando e resolvendo os dados duplicados; você deseja que as duas fontes estejam no mesmo formato geográfico: shapefile, PostGIS DBs ou como dados OSM.

Workflow

O fluxo de trabalho a seguir baseia-se em ter ambas as fontes de dados como OSM antes de mesclar e resolver dados duplicados.

Existem algumas opções para converter os dados em OSM:

UMA]

  1. Converta os dados do shapefile em OSM como desejar. As versões do ogr2ogr lançadas em 2013 ou posterior (versão 1.10 ou posterior, IIRC) também podem converter SHP em OSM. Também há ogr2osmcomo você notou: existem algumas versões diferentes do ogr2osm, não importa qual você use - prefiro o pnorman , é o mais atualizado. Não importa o que aconteça, verifique se os arquivos de tradução são compatíveis com a versão do ogr2osm que você está usando (por uma questão de simplicidade, as quais eu vinculei devem ser compatíveis com a versão do ogr2osm). Veja aqui exemplos de arquivos de tradução compatíveis com ogr2osm do pnorman.

Verifique se o arquivo de tradução está completo com todas as informações que você deseja no seu shapefile. O arquivo de conversão converterá seus Tipos e atributos do shapefile no que o OSM chama de Tags , que consiste em Chaves e Valores.

1a. execute ogr2osm.

  1. Abra josm , faça o download do plugin de confllation

  2. Seus dados do gov agora são um arquivo osm. Abra josm, Arquivo> abra Seus dados estão lá como uma camada.

  3. Se você já possui os dados OSM armazenados localmente no seu computador, abra-os no josm, eles também serão abertos como uma nova camada.

  4. Mesclar essas duas fontes de dados e resolver os dados duplicados é conhecido como conflação . Execute o plug-in de inflação e resolva todos os conflitos.

Se o JOSM ficar sem memória (por exemplo, ao usar arquivos grandes), separe os tipos de atributos e conclua esse fluxo de trabalho várias vezes, cada um com um tipo diferente de dados (por exemplo, limites e usos do solo; rodovias; edifícios) e, finalmente, mescle os arquivos osm juntos usando osmium ou outra ferramenta.

B. O JOSM também pode ler arquivos de forma, embora o suporte a SHP não seja perfeito e esse método pressupõe que o arquivo de forma possa ser carregado inteiramente na memória ...

  1. Inicie o JOSM.
  2. Abra o shapefile (por exemplo, filename.shp).
  3. Selecionar tudo.
  4. No JOSM, edite os atributos e propriedades que foram importados do SHP e altere-os para que cada atributo corresponda a uma tag OSM.
  5. Salve como formato OSM.
  6. Continue da A4 e faça a junção

Importar como OSM

Importe os dados do OpenStreetMap para o sistema da seguinte maneira:

  1. Mude para o diretório que contém os arquivos OpenStreetMap (OSM) convertidos usando o JOSM.
  2. Execute os seguintes comandos no banco de dados:
    CRIAR EXTENSÃO hstore;
    osm2pgsql -j -W \
              -d osm filename.osm

A -jopção é fundamental, pois instrui o osm2pgsql a importar as tags para uma hstorecoluna, preservando a estrutura de dados subjacente e importando todas as tags para o banco de dados.

Criar camada Mapnik

Para que os dados apareçam no mapa, adicione uma camada e um estilo para essa camada. Isso pode ser tão simples quanto o seguinte:

  1. Edit mapnik-stylesheets/osm.xml.
  2. Insira o seguinte código XML antes da </Map>tag de fechamento ...

...

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

Criar estilo Mapnik

Continuando da seção anterior:

  1. Encontre a última </Style>tag (em torno da linha 3350).
  2. Insira o seguinte código XML antes da &layer-shapefiles;diretiva:

...

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

Roadmatcher

roadmatcher é outra ferramenta que pode ser útil


O OpenJUMP 1.5.1 não é compatível com o RoadMatcher 1.4. O OpenJUMP 1.3.1, que pode usar o RoadMatcher 1.4, não é compatível com o PostGIS 2.0 (porque o OpenJUMP chama em find_extentvez de st_find_extent). O banco de dados possui o PostGIS 2.0 instalado.
Dave Jarvis

OpenData plug-in do JOSM lê shapefiles: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.