OpenStreetMap地图服务器安装
目錄
- 一.升級系統
- 二.安裝PostgreSQL數據庫和PostGIS擴展
- 三.下載地圖樣式表和上傳地圖數據
- 四.將地圖數據導入PostgresSQL
- 五.安裝mapnik mod_tile
- 六.添加中文支持
- 七.生成Mapnik Stylesheet
- 八.配置渲染文件
- 九.配置Apache服務器
- 十.使用Leftlet在網頁上顯示和操作地圖
優麒麟設置root密碼: sudo passwd root
一.升級系統
sudo apt update sudo apt upgrade二.安裝PostgreSQL數據庫和PostGIS擴展
sudo apt install postgresql sudo apt install postgresql-contrib sudo apt install postgis postgresql-postgis安裝語言
export LANGUAGE="en_US.UTF-8" export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" sudo locale-gen en_US.UTF-8 sudo dpkg-reconfigure localesubuntu下postgres用戶并登錄PostgreSQL服務器:
sudo -u postgres -i執行psql命令,并設置postgres用戶登錄密碼:
psql postgres postgres=# \password Enter new password: Enter it again: postgres=#\q創建用戶osm
createuser osm然后創建一個名為gis的數據庫,同時將osm作為數據庫的所有者,-E UTF8指定要在數據庫中使用的字符編碼方案是UTF8:
createdb -E UTF8 -O osm gis接下來,為gis數據庫創建postgis和hstore擴展:
psql -c "CREATE EXTENSION postgis;" -d gis psql -c "CREATE EXTENSION hstore;" -d gis將osm設置為表所有者:
psql -c "ALTER TABLE spatial_ref_sys OWNER TO osm;" -d gis退出postgres用戶:
exit創建ubuntu的osm用戶便后續使用:
sudo adduser osm三.下載地圖樣式表和上傳地圖數據
切換osm用戶:
su - osm將最新的CartoCSS地圖樣式表下載到osm用戶的主目錄
wget https://github.com/gravitystorm/openstreetmap-carto/archive/v4.20.0.tar.gz解壓:
tar -zxvf v4.20.0.tar.gz上傳地圖數據到osm用戶的目錄,osm數據下載地址:
http://download.openstreetmap.fr/extracts/asia/china/ http://download.geofabrik.de/asia.html退出osm用戶
exit四.將地圖數據導入PostgresSQL
需安裝工具:osm2pgsql
sudo apt install osm2pgsql運行以下命令以將地圖樣式表和地圖數據加載到gis數據庫中,用你自己的地圖數據文件替換
su - osmosm2pgsql --slim -d gis --hstore --multi-geometry --number-processes 8 --tag-transform-script /home/osm/openstreetmap-carto-4.20.0/openstreetmap-carto.lua --style /home/osm/openstreetmap-carto-4.20.0/openstreetmap-carto.style /home/osm/shanghai-latest.osm.pbf退出osm用戶
exit相關說明:
–username osm:指定數據庫用戶。
–slim:以苗條模式而不是普通模式運行,如果要在將來使用OSM更改文件(OSC)更新地圖數據,則需要此選項。
-d gis:選擇數據庫。
–hstore:將不帶列的標記添加到PostgreSQL表的其他hstore(鍵/值)列。
–multi-geometry:在postgresql表中生成多幾何特征。
–style:指定樣式文件的位置。
–number-processes:服務器上的CPU核心數。
-C選項以兆字節為單位指定緩存大小,較大的緩存大小導致更快的導入速度,但你需要有足夠的RAM來使用緩存
-最后,需要指定地圖數據文件的位置。
五.安裝mapnik mod_tile
安裝 mapnik
sudo apt install -y libmapbox-variant-dev libmapnik-dev libmapnik3.0 mapnik-doc mapnik-reference mapnik-utils nik4 node-carto node-millstone node-tilelive python3-mapnik # 其他軟件安裝 sudo apt install git sudo apt install autoconf sudo apt install libtool sudo apt install apache2-dev sudo apt-get install -y g++mod_tile源碼下載
sudo git clone https://github.com/openstreetmap/mod_tile.git編譯安裝
cd mod_tile/ sudo ./autogen.sh sudo ./configure sudo make sudo make install sudo make install-mod_tilemake 時的報錯:
報錯1:
解決辦法:
編譯安裝 iniparser ,并復制相應文件到相應目錄下
#下載地址 https://gitcode.net/mirrors/ndevilla/iniparser?utm_source=csdn_github_accelerator#下載文件后解壓,進入目錄,執行make命令安裝 unzip iniparser-master.zip make如下圖所示表示 iniparser 安裝成功!
安裝完成后,復制如下文件到 /home/osm/mod_tile/iniparser/ 目錄下
示例命令如下:
報錯2:
由上可見,make生成了libiniparser.a靜態庫和 libiniparser.so.1動態庫。一般 Linux 系統把/lib和/usr/lib 兩個目錄作為默認的庫搜索路徑,使用這兩個目錄中的庫時不需要進行設置搜索路徑即可直接使用,所以可以把這兩個庫文件直接拷貝到對應的目錄下。
運行結果如下表示 mod_tile 安裝成功!
六.添加中文支持
sudo apt-get -y install fonts-wqy-zenhei sudo apt-get -y install unifont sudo apt-get -y install ttf-unifont七.生成Mapnik Stylesheet
sudo apt install curl sudo apt install unzip sudo apt install gdal-bin sudo apt install mapnik-utils sudo apt install npm sudo npm install -g carto切換至osm用戶,創建data文件夾用于存放下載的邊界文件
su - osm cd openstreetmap-carto-4.20.0 mkdir data# 上傳如下邊界文件到data目錄下并解壓 # antarctica-icesheet-outlines-3857.zip # antarctica-icesheet-polygons-3857.zip # land-polygons-split-3857.zip # ne_110m_admin_0_boundary_lines_land.zip # simplified-land-polygons-complete-3857.zip # world_boundaries-spherical.tgz如下圖所示
構建mapnik xml 樣式文件
carto project.mml > style.xml會看見有一個 style.xml的文件,里面是這樣的
退出osm用戶
八.配置渲染文件
編輯渲染配置文件。
sudo vim /usr/local/etc/renderd.conf修改如下配置
# 在[default]下,修改xml和host值。 [default] XML=/home/osm/openstreetmap-carto-4.20.0/style.xml HOST=localhost# 在[mapnik]下,修改plugins_dir值。 [mapnik] plugins_dir=/usr/lib/mapnik/3.0/input/安裝渲染初始化腳本。
sudo cp mod_tile/debian/renderd.init /etc/init.d/renderd授予執行權限。
sudo chmod a+x /etc/init.d/renderd編輯初始化腳本。
sudo vim /etc/init.d/renderd修改下面的變量值。
DAEMON=/usr/local/bin/$NAME DAEMON_ARGS="-c /usr/local/etc/renderd.conf" RUNASUSER=osm創建下面的文件,設置osm為所有者。
sudo mkdir -p /var/lib/mod_tile sudo chown osm:osm /var/lib/mod_tile開始渲染服務
sudo systemctl daemon-reload sudo systemctl start renderd sudo systemctl enable renderd手動啟動渲染服務
mkdir /run/renderd sudo -u 'osm' renderd -f -c /usr/local/etc/renderd.conf九.配置Apache服務器
安裝apache web server
sudo apt install apache2創建模塊加載文件。
sudo vim /etc/apache2/mods-available/mod_tile.load寫入下面的命令。
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so創建軟鏈接
sudo ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/之后編輯默認虛擬主機文件
sudo vim /etc/apache2/sites-enabled/000-default.conf在<VirtualHost *:80>下粘貼下面語句。
LoadTileConfigFile /usr/local/etc/renderd.conf ModTileRenderdSocketName /var/run/renderd/renderd.sock #Timeout before giving up for a tile to be rendered ModTileRequestTimeout 0 #Timeout before giving up for a tile to be rendered that is otherwise missing ModTileMissingRequestTimeout 30重啟 apache2
sudo systemctl restart apache2用你的瀏覽器訪問:
localhost/osm_tiles/0/0/0.png localhost/mod_tiles/0/0/0.png十.使用Leftlet在網頁上顯示和操作地圖
要使用 Leftlet 顯示你的地圖,需要下載 JavaScript 和 CSS 并將其解壓縮到 Web 根文件夾:
cd /var/www/htmlsudo wget http://cdn.leafletjs.com/leaflet/v1.4.0/leaflet.zipsudo unzip leaflet.zip接下來,創建map.html文件:
sudo vim /var/www/html/map.html將以下HTML代碼粘貼到文件中,替換并根據需要調整經度,緯度和縮放級別:
<html> <head> <meta charset="UTF-8"> <title>My first osm</title> <link rel="stylesheet" type="text/css" href="leaflet.css"/> <script type="text/javascript" src="leaflet.js"></script> <style> #map{width:100%;height:100%} </style> </head> <body> <div id="map"></div> <script> var map = L.map('map').setView([0,0],5); L.tileLayer('http://localhost/osm_tiles/{z}/{x}/{y}.png',{maxZoom:18}).addTo(map); </script> </body> </html>保存并關閉文件,通過在瀏覽器中輸入服務器IP地址來查看你的 slippy 地圖:http://localhost/map.html
總結
以上是生活随笔為你收集整理的OpenStreetMap地图服务器安装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典的机器人入门资料
- 下一篇: 凯恩斯主义两个重要观念的由来