태그 보관물: postgis

postgis

개인 shapefile 데이터를 OSM 데이터와 병합 (병합) 파일. pgAdmin 플러그인을

배경

Geofabrik 에서 Alberta OSM 데이터를 다운로드 하여 PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, rendered 및 OpenLayers를 사용하여 개인 Linux 서버에서 실행되도록합니다.

osm2pgsql다음과 같이 데이터를 가져 왔습니다 .

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

문제

앨버타의 OSM 데이터가 불완전합니다. OSM 데이터를 개선하는 shapefile 세트가 제공되었습니다 .

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

마을, 도시 지역, 지방 자치구 경계 등을위한 추가 형태 파일. pgAdmin 플러그인을 사용하여 shapefile을 PostgreSQL로 성공적으로 가져 왔습니다 . City.prj다음과 같은 파일은 투사 설명 :

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

shapefile 데이터와 OSM (OpenStreetMap) 데이터에는 각각 고유 한 데이터베이스가 있지만 shapefile 데이터를 OSM 데이터베이스로 가져오고 싶습니다. (이것은 사설 서버이며 OSM 데이터의 로컬 사본이며, shapefile 데이터는 합법적으로 공유 할 수 없습니다.)

업데이트 # 1

명확하게 말하면, shapefile에는 도로가 포함되지 않습니다. 시정촌 경계 (OSM 데이터의 일부가 아닌), 도시 (일부 OSM 데이터의 일부) 및 대도시 (일부는 수도 OSM 데이터와 충돌).

질문

새 도시가 맵에 표시되도록 쉐이프 파일 데이터를 OSM 데이터와 병합하려면 어떻게합니까?

참고 : 내 주요 관심사는 중복 데이터를 해결하는 것입니다 (예 : Edmonton은 OSM 및 조달 된 쉐이프 파일에 모두 나열되어 있음).

관련된 링크들

감사합니다!



답변

소개

복제 된 데이터를 감지하고 제거하려면 상당한 양의 수동 작업이 필요할 수 있습니다. 중복 데이터를 감지하고 해결할 때; 두 소스를 shapefile, PostGIS DB 또는 OSM 데이터와 같은 지리적 형식으로 사용하려고합니다.

워크 플로우

다음 워크 플로우는 중복 데이터를 병합하고 해결하기 전에 두 데이터 소스를 모두 OSM으로 사용하는 것을 기반으로합니다.

데이터를 OSM으로 변환하는 몇 가지 옵션이 있습니다.

ㅏ]

  1. 그러나 shapefile 데이터를 원하는대로 OSM으로 변환하십시오. 2013 년 이후에 릴리스 된 ogr2ogr 버전 (버전 1.10 이상, IIRC)도 SHP를 OSM으로 변환 할 수 있습니다. 도 있습니다 ogr2osm당신이 언급 한대로 : ogr2osm의 몇 가지 다른 버전이있다, 하나는 사용에 상관없이 – 내가 선호하는 pnorman의는 ,이 최신입니다. 어쨌든 번역 파일이 사용중인 ogr2osm 버전과 호환되는지 확인하십시오 (간단하게하기 위해 내가 링크 한 파일은 ogr2osm 버전과 호환 가능해야 함). pnorman의 ogr2osm과 호환되는 번역 파일의 예는 여기 를 참조 하십시오 .

변환 파일이 shapefile에 원하는 모든 정보로 완성되었는지 확인하십시오. 변환 파일은 모양 파일의 유형과 속성을 OSM이 Tags 이라고 부르는 키로 변환합니다 .

1a. ogr2osm을 실행하십시오.

  1. 열기 josm , 융합 플러그인을 다운로드

  2. 귀하의 정부 데이터는 이제 osm 파일입니다. 열린 josm, 파일> 열기 데이터는 레이어로 존재합니다.

  3. OSM 데이터가 이미 컴퓨터에 로컬로 저장되어있는 경우이 데이터를 josm으로 열면 새 레이어로 열립니다.

  4. 함께 데이터의 두 가지 소스를 병합하고로 알려져 중복 데이터 해결 융합을 . conflation 플러그인을 실행하고 모든 충돌을 해결하십시오.

JOSM에 메모리가 부족한 경우 (예 : 큰 파일을 사용하는 경우) 속성 유형을 분리하고 각기 다른 종류의 데이터 (예 : 경계 및 토지 사용, 고속도로, 건물)로이 워크 플로우를 여러 번 완료 한 다음 마지막으로 병합하십시오. osmium 또는 다른 도구를 사용하여 osm 파일을 함께 사용합니다.

B. JOSM은 SHP 지원이 완벽하지는 않지만 shapefile을 읽을 수 있으며이 방법은 shapefile을 완전히 메모리에로드 할 수 있다고 가정합니다.

  1. JOSM을 시작하십시오.
  2. 모양 파일을 엽니 다 (예 🙂 filename.shp.
  3. 모두 선택하십시오.
  4. JOSM에서 SHP에서 가져온 속성 및 특성을 편집하고 각 속성이 OSM 태그에 해당하도록 변경하십시오.
  5. OSM 형식으로 저장하십시오.
  6. A4에서 계속하고 혼동

OSM으로 가져 오기

다음과 같이 OpenStreetMap 데이터를 시스템으로 가져 오십시오.

  1. JOSM을 사용하여 변환 된 OSM (OpenStreetMap) 파일이 포함 된 디렉토리로 변경하십시오.
  2. 데이터베이스에서 다음 명령을 실행하십시오.
    확장 익스텐션 hstore;
    osm2pgsql -j -W \
              -d osm filename.osm

-j이 지침은에 태그를 가져 osm2pgsql으로 옵션이 핵심입니다 hstore, 열이 보존 기본 데이터 구조를 데이터베이스로 모든 태그를 가져옵니다.

Mapnik 레이어 만들기

지도에 데이터를 표시하려면 해당 레이어에 레이어와 스타일을 추가하십시오. 이것은 다음과 같이 간단 할 수 있습니다.

  1. 편집 mapnik-stylesheets/osm.xml.
  2. 닫는 </Map>태그 앞에 다음 XML 코드를 삽입하십시오 .

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

Mapnik 스타일 만들기

이전 섹션에서 계속 :

  1. 마지막 </Style>태그를 찾으십시오 (3350 행).
  2. &layer-shapefiles;지시문 앞에 다음 XML 코드를 삽입하십시오 .

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

로드 매치

roadmatcher 는 도움이 될 수있는 다른 도구입니다.


답변