日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenStreetMap地图服务器安装

發布時間:2023/12/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 locales

ubuntu下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_tile

make 時的報錯:

報錯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/ 目錄下

示例命令如下:

mkdir -p /home/osm/mod_tile/iniparser cp /home/good/iniparser-master/src/iniparser.h /home/osm/mod_tile/iniparser/ cp /home/good/iniparser-master/src/dictionary.h /home/osm/mod_tile/iniparser/

報錯2:

由上可見,make生成了libiniparser.a靜態庫和 libiniparser.so.1動態庫。一般 Linux 系統把/lib和/usr/lib 兩個目錄作為默認的庫搜索路徑,使用這兩個目錄中的庫時不需要進行設置搜索路徑即可直接使用,所以可以把這兩個庫文件直接拷貝到對應的目錄下。

cp /home/good/iniparser-master/libiniparser.a /usr/lib cp /home/good/iniparser-master/libiniparser.so.1 /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用戶

exit

八.配置渲染文件

編輯渲染配置文件。

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地图服务器安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。