postgres與osm初步使用


layout: post
title: postgres與osm初步使用
date: 2016-9-20
categories: blog
tags: [地圖開發]

description:地圖開發

本文主要包括以下內容

  • postgreSQL數據庫,用來存放地圖原始數據
  • osm2pgsql 用來將osm地圖數據導入到postgreSQL

    OSM數據

OpenStreetMap(簡稱OSM)是一個網上地圖衆籌(crowd sourcing)項目,目標是創造一個內容自由且能讓所有人編輯的世界地圖

osm數據特點

  • 數據來源多樣,海量數據但數據質量參差不齊(錯誤、不一致),需要大量的後續數據處理
  • 按照數據的類別,用不同的標籤標示數據類別
  • 將數據進行彙編,按進行全球(Planet OSM, OSM)或區域發佈
  • 文件大:XML variant over 600+GB uncompressed, 50+ GB bz2 compressed and 30+GB for PBF

OpenStreetMap包括空間數據以及屬性數據。其中空間數據主要包括三種:點(Nodes)、路(Ways)和關係(Relations),這三種原始構成了整個地圖畫面。其中,Nodes定義了空間中點的位置;Ways定義了線或區域;Relations(可選的)定義了元素間的關係, 屬性數據Tags用於描述上述矢量數據基元

node通過經緯度定義了一個地理座標點。同時,還可以height=標示物體所海拔;通過layer= 和 level=,可以標示物體所在的地圖層面與所在建築物內的層數;通過place= and name=*來表示對象的名稱。同時,way也是通過多個點(node)連接成線(面)來構成的。

通過2-2000個點(nodes)構成了way。way可表示如下3種圖形事物(非閉合線(Open polyline )、閉合線(Closed polyline)、區域(Area ))。對於超過2000 nodes的way,可以通過分割來處理。

OSM分類Features和標籤(Tag)

各feature都通過tag來記錄數據信息,通過‘key’ and a ‘value’來對數據進行記錄。例如,可以通過highway=residential來定義居住區道路;同時,可以使用附加的命名空間來添加附加信息,例如:maxspeed:winter=*就表示冬天的最高限速

postgressql數據庫安裝

開源免費數據庫:PostgreSQL下載安裝教程_百度經驗

OSM數據提取

下載osm:http://dev.openstreetmap.org/~bretth/osmosis-build/osmosis-latest.zip

下載中國地圖數據
http://download.geofabrik.de/asia/china.html

數據裁剪

區域裁減,把中國地圖裁剪成武漢地圖:

osmosis --read-pbf file="china-latest.osm.pbf" --used-node --bounding-box left=113.9502 right=114.4762 top=30.7643 bottom=30.4291 clipIncompleteEntities="true" --write-pbf Wuhan.pbf

提取武漢地圖的高速公路數據

osmosis --read-pbf file="wuhan.pbf" --tf accept-ways highway=* clipIncompleteEntities="true" --write-pbf Wuhan_highway.pbf

將數據導入postgres數據庫

  • create extension hstore;
  • create extension postgis;
  • create extension pgrouting;
  • 運行數據庫ddl: pgsnapshot_schema_0.6.sql
  • 導入數據:osmosis –read-pbf file=”wuhan_highway.pbf” –wp host=localhost database=osm user=postgres password=postgres

    1. 首先在postgres中添加3個擴展
    2. 再運行osmosis-latest\script文件夾下的 pgsnapshot_schema_0.6.sql腳本
    3. 運行導入指令即可

安裝QGIS並連接postgres可以在地圖上看到導入的數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章