OpenStreetMap (OSM) 데 이 터 를 이용 하여 지도 서 비 스 를 구축 하 다.

12571 단어 openstreetMap
 http://www.cnblogs.com/LBSer/p/4451471.html
利用OpenStreetMap(OSM)数据搭建一个地图服务
툴 리 가 OSM 데이터 로 간단하게 발표 한 베 이 징 지도 서비스
 
1. OSM 은 무엇 입 니까?
       오픈 스 트 리 트 맵 (OpenStreetMap, OSM 으로 약칭) 은 콘 텐 츠 가 자 유 롭 고 모든 사람 이 편집 할 수 있 는 세계 지도 (wiki: http://wiki.openstreetmap.org/wiki/Main_Page 를 만 드 는 것 이 목표 이다.특히 osm 데이터 오픈 소스 는 자 유 롭 게 다운로드 하여 사용 할 수 있다.
2. OSM 데이터 구조
       OpenStreetMap 은 공간 데이터 와 속성 데 이 터 를 포함한다.그 중에서 공간 데 이 터 는 주로 세 가지 가 있 는데 그것 이 바로 점 (Nodes), 길 (Ways) 과 관계 (Relations) 이다. 이 세 가지 원시 가 전체 지도 화면 을 구성 했다.그 중에서 Nodes 는 공간 중심 점 의 위 치 를 정의 했다.Ways 는 선 이나 구역 을 정의 합 니 다.Relations (선택 가능 한) 는 요소 간 의 관 계 를 정의 합 니 다.
        속성 데이터 태 그 는 상기 벡터 데이터 기본 을 설명 하 는 데 사 용 됩 니 다.( http://wiki.openstreetmap.org/wiki/Elements
2.1. Node 
       node 는 경위도 로 지리 좌표 점 을 정의 했다.또한, height = * 물체 의 해발 을 표시 할 수 있 습 니 다.layer = * 화해시키다 level = *, 물체 가 있 는 지도 차원 과 소재 건축물 안의 층 수 를 표시 할 수 있 습 니 다.place = * and name = * 대상 의 이름 을 표시 합 니 다.또한 웨 이 는 여러 점 (node) 을 통 해 선 (면) 으로 연결 되 어 구성 된다.
 2.2. Way   
       2 - 2000 개의 점 (nodes) 을 통 해 웨 이 를 구성 했다.way 는 다음 과 같은 3 가지 도형 사물 (비 폐쇄 선 (Open polyline) 을 나 타 낼 수 있다. )、폐쇄 선 (Closed polyline), 구역 (Area) ))。2000 nodes 가 넘 는 way 는 분할 을 통 해 처리 할 수 있 습 니 다.
       a)Open polyline 
        비 폐 합 선: 마무리 가 닫 히 지 않 는 선분. 보통 현실 의 도로, 하천, 철도 등 을 나타 내 는 데 사용 된다.
       b)Closed polyline 
        폐 합 선: 연 결 된 선 을 마감 한다. 예 를 들 어 현실 의 순환 지하철 을 나 타 낼 수 있다.
       c)Area 
        구역: 폐쇄 구역.보통 landuse = * 사용 구역 등 을 표시 합 니 다. 
2.3. Relation 
       하나의 관 계 는 두 개 이상 의 기본 적 인 상호 관계 (nodes, ways 또는 다른 relations) 를 묘사 하 는 데 사용 되 며, 상호 관 계 는 role 을 통 해 정의 된다.
       a) route: 도로, 자전거 도로, 철도 등 정의
       b) 여러 다각형: 건축, 강둑 등 area 정의
       c) 경계: 문 을 설치 하여 행정 경 계 를 정의 한다.
       d) 제한: '비 좌회전' 과 같은 제한 을 설명 하 는 데 사용 합 니 다.
2.4. Tag 
       라벨 은 맵 의 기본 요소 가 아니 지만 각 요 소 는 tag 를 통 해 데이터 정 보 를 기록 합 니 다.'key' and a 'value' 를 통 해 데 이 터 를 기록 합 니 다.예 를 들 어 하 이 웨 이 = residential 을 통 해 거주 지역 의 도 로 를 정의 할 수 있다.또한, 추가 네 임 스페이스 를 사용 하여 추가 정 보 를 추가 할 수 있 습 니 다. 예 를 들 어 max speed: winter = * 는 겨울 최고 제한 속 도 를 표시 합 니 다.
3. OSM 데이터 및 다운로드
osm 데이터 형식 은 주로 다음 과 같은 몇 가지 가 있 으 며, 아래 사 이 트 를 통 해 데 이 터 를 다운로드 할 수 있 습 니 다.
osm 데이터 형식:
OSM XML – xml-format provided by the API PBF – highly compressed, optimized binary format similar to the API o5m – for high-speed processing, uses PBF coding, has same structure as XML format OSMJSON – json variant of OSM XML
osm 데이터 다운로드 사이트:
GeoFabrik: http://www.geofabrik.de/ Metro Extracts: http://metro.teczno.com/ HOT Exports: http://hot.openstreetmap.org/ BBBike: http://extract.bbbike.org/
 
4. OSM 데 이 터 를 바탕 으로 지도 서 비 스 를 구축한다.
        OSM 위 키 는 구조 도 를 제공 하여 가치 가 있 습 니 다. 우 리 는 이 구조 도 에 따라 한 걸음 한 걸음 탐색 할 수 있 습 니 다.
利用OpenStreetMap(OSM)数据搭建一个地图服务
 
4.1. 데이터베이스
      Postgresql + 플러그 인 PostGIS 는 지리 적 공간 데 이 터 를 저장 하기에 매우 적합 합 니 다. 위의 구조 그림 의 바 텀 데이터 베이스 도 이 조합 이기 때문에 저희 도 이 조합 을 사용 합 니 다.
      a) postgresql + postgis 플러그 인 다운로드
sudo apt - get install post gresql - contrib post gresql - 9.1 - post gis 설치 가 완료 되 었 습 니 다. post gres 사용자 의 비밀 번 호 를 변경 해 야 합 니 다. 그렇지 않 으 면 이 데이터베이스 서버 를 사용 할 수 없습니다.postgres 라 는 시스템 사용자 로 psql 명령 을 실행 합 니 다. 터미널 에 다음 과 같이 입력 하 십시오. sudo su postgres - c psql template 1 이 럴 때 새로운 프롬프트 가 나타 납 니 다. 다음 두 명령 을 입력 하고 새 비밀번호 로 < * password * * * >: ALTER USER postgres WITH PASSWORD '< * password * * * > 를 교체 하 십시오.
  b) 사용자 및 데이터베이스 만 들 기
postgres# CREATE USER zhanlijun WITH PASSWORD 'xxxx'; postgres# CREATE DATABASE osm; postgres# GRANT ALL PRIVILEGES ON DATABASE osm to zhanlijun;
c) 데이터베이스 에 공간 확장 추가
CREATE EXTENSION postgis; -- Enable Topology CREATE EXTENSION postgis_topology; -- fuzzy matching needed for Tiger CREATE EXTENSION fuzzystrmatch; -- 지리 코딩 CREATE EXTENSION postgistiger_geocoder; -- 속성 태그 저장, key - value CREATE EXTENSION hstore;
 
4.2. 데이터 가 져 오기
      사이트 에서 다운로드 한 osm 데 이 터 는 일반적으로 파일 형식 (예 를 들 어 xml, pbf 등) 입 니 다. 이 를 사용 하기 위해 서 는 데이터베이스 에 가 져 와 야 합 니 다. 도 구 를 가 져 와 야 합 니 다. 구조 도 는 osmpsis 를 사 용 했 지만 사용 하기에 우호 적 이지 않 습 니 다. osm2pgsql 을 사용 하 는 것 을 추천 합 니 다.
      a) osm2pgsql 설치
Run sudo apt-get install software-properties-common to install the command add-apt-repository if the command can't be found. Run sudo add-apt-repository ppa:kakrueger/openstreetmap to add the PPA Run sudo apt-get update to update your packaging system. Run sudo apt-get install osm2pgsql to install the osm2pgsql package.
    b) protobuf 설치 (pbf 형식 데이터 가 져 오기 위해)
sudo apt-get install libprotobuf-c0-dev protobuf-c-compiler
   c) 데이터베이스 가 져 오기
osm2pgsql -s -U zhanlijun -d osm /Users/zhanlijun/Downloads/planet_116.104,39.667_116.892,40.066.osm.pbf -H localhost -W;
주: osm2pgsql 가 져 오기 데 이 터 는 두 가지 모드 가 있 습 니 다. normal and slim mode。
normal mode 는 메모리 에 다음 과 같은 세 장의 중간 표를 만 들 고 가 져 오기 가 끝 난 후에 버 리 기 때문에 속도 가 빠 릅 니 다.
planet_osm_nodes
planet_osm_ways
planet_osm_rels
슬 림 모드 는 중간 결 과 를 데이터베이스 에 완전히 배치 합 니 다.slim 모드 의 장점 은 업데이트 가 편리 하 다 는 것 이다.
이들 이 사용 하 는 차 이 는 '- s' 를 추가 하 는 지, slimmode 를 표시 하 는 지, 본 고 는 slim mode 를 사용한다.
slim mode 를 사용 하여 데 이 터 를 가 져 온 후 데이터베이스 에 다음 표 가 생 길 수 있 습 니 다.
利用OpenStreetMap(OSM)数据搭建一个地图服务
 
4.3 렌 더 링
       데 이 터 는 postgresql 에 가 져 왔 습 니 다. 다음은 데 이 터 를 렌 더 링 해 야 합 니 다. 즉, postgresql 의 벡터 데 이 터 를 그림 으로 렌 더 링 해 야 합 니 다.
4.3.1 Mapnik 로 렌 더 링
현재 가장 유명한 오픈 소스 맵 렌 더 링 엔진 은 바로 Mapnik 이다.
 Mapnik 는 postgresql 과 같은 데이터 베 이 스 를 포함 하여 shapefile, osm. xml 형식 등 다양한 데이터 원본 을 렌 더 링 할 수 있 습 니 다.
 shapefile 형식 데 이 터 를 예 로 들 어 렌 더 링 이 필요 한 벡터 데 이 터 를 다운로드 합 니 다. http://www.naturalearthdata.com/
 1) python 편집기 열기
 1 python 
2) mapnik python 바 인 딩 가 져 오기
 1 import mapnik 
3) 맵 생 성
1 m = mapnik.Map(600,300) #      : 600  300

2 #m.srs        ,   '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'

3 m.background = mapnik.Color('steelblue') #     

4) 스타일 생 성
우리 가 필요 로 하 는 스타일 설정 에 따라 스타일 은 최종 렌 더 링 결 과 를 결정 합 니 다.
 1 s = mapnik.Style() #style  

 2 r = mapnik.Rule() #rule        

 3 #       

 4 polygon_symbolizer = mapnik.PolygonSymbolizer(mapnik.Color('#f2eff9'))

 5 r.symbols.append(polygon_symbolizer)

 6 #         

 7 line_symbolizer = mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1)

 8 r.symbols.append(line_symbolizer)

 9 s.rules.append(r)

10  #       

11 m.append_style('My Style',s)

 5) 데이터 원본 만 들 기
 1 ds=mapnik.Shapefile(file='Users/zhanlijun/Downloads/110m-admin-0-countries/ne_110m_admin_0_countries.shp')  
 6) 그림 층 만 들 기
mapnik 의 layer 는 데이터 의 기본 용기 입 니 다.
1 layer = mapnik.Layer('world')#     world   

2 #layer.srs    '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'

3 layer.datasource = ds

4 layer.styles.append('My Style')

 7) 맵 렌 더 링 준비
1 m.layers.append(layer) # layer    

2 m.zoom_all() #   zoom_all,    ,      

 8) 렌 더 링 맵
마지막 으로 png 형식의 세계 지 도 를 얻 었 습 니 다: World. png
利用OpenStreetMap(OSM)数据搭建一个地图服务
4.3.2 TileMill 로 렌 더 링 하기
      Mapnik 은 사용 하기 가 쉽 지 않 습 니 다. 특히 스타일 을 설정 할 때 다음 에 저 희 는 TileMill 을 사용 하여 렌 더 링 을 합 니 다. TileMill 의 커 널 은 Mapnik 입 니 다.
      TileMill 의 장점 은 보 이 는 대로 얻 는 것 입 니 다. 오른쪽 에 스타일 을 설정 하면 왼쪽 에 바로 결 과 를 나 타 낼 수 있 습 니 다.또한 결 과 를 보 여줄 수 있다.
利用OpenStreetMap(OSM)数据搭建一个地图服务
 
4.4 일체화 해결 방안
 GeoServer + OpenLayers + PostGIS 중첩 디 스 플레이 동적 벡터 데이터.
geoserver 설치
sudo apt - get update sudo apt - get install unzip openjdk - 6 - jre echo "export JAVA HOME = / usr / lib / jvm / java - 6 - openjdk - amd 64" > ~ /. bashrc source ~ /. bashrc wget - c http://sourceforge.net/projects/geoserver/files/GeoServer/2.3.5/geoserver-2.3.5-bin.zip unzip - a geoserver - 2.3.5 - bin. zip cd geoserver - 2.3.5 / bin. / startup. sh & visit: http://localhost:8080/geoserver/
 
 
지도 관련 블 로그:
지도 점 집합 최적화 방안

좋은 웹페이지 즐겨찾기