再印刷1:OSM-Webサーバー(1)PostgreSql構成とosm2pgsql元のPBFデータのインポート

   2012年には、もう1つの長期サポートバージョンであるUbuntu 12.04LTSがリリースされました。OpenStreetMapサーバーを再度更新する必要があります。今回は、構成プロセスをブログに詳細に記録します。

1.ワクチン接種

    グローバルデータのインポート作業は非常に時間がかかり、エラーが発生しやすくなります。過去N回のレッスンから学びます。開始する前に、主に次のことをよく行ってください。

    a)安定した64ビット環境 

    前回のブログでは、2009年のデータ収集を32ビットの仮想マシンで実行することもできます。2012年の20GBの元のデータ圧縮ファイルは、拡張後に200GB以上のディスクを占有します。ID列だけで4Gのスペースがいっぱいです。明らかに32ビットはもう機能していません。今回は、十分なリソースを確保するために、16GBのWindowsサーバー、16コアのディスクアレイサーバー、2TBのディスクスペース、およびVMBox仮想マシンの8GBのメモリを使用します。


   b)UPS電源+動作状態保護 

    データのインポートプロセスには最大1〜4週間かかる場合があるため、長時間の停電後にUPSでさえダウンしているという苦痛な教訓から学ぶために、今回のインポート作業はWindows Server 200364ビット+ Oracle VirtualBox4.18で実行されます。 UPSは限られた時間スナップショットを取り、その後スリープして、インポート作業が妨げられないようにします。仮想マシンを使用せず、システムの休止状態を直接使用する場合、osm2pgsqlとpostgis間のTCP接続がリセットされる可能性があります(localhostの代わりに外部アドレスを使用する場合)、それでもハングします。


  c)高品質のディスク

    中程度のメモリ容量では、スリムモードを使用してインポートすると、数週間続く集中的なディスクアクセスに直面し、ディスクアレイが高速になり、障害耐性のある保護が得られます。1枚のハードディスクを使って4週間(インポートに3週間、レンダリングに1週間)の読み取りと書き込みを行いましたが、ハードディスクのノイズが非常に大きく、1年後にクラッシュするという苦い経験でした。



2.究極の目標

      グローバルPlanet.OSMデータセットを完全にインポートし、最新のMapnikレンダラーをコンパイルおよび構成し、最新のapache2 + mod_tileを使用してWebServiceを構築し、OpenLayersを使用してSlippyMapを実装し、GeoServer + OpenLayers + PostGISを使用して動的ベクトルデータをオーバーレイします。

さて、最初のプロセスを始めましょう。これも困難で面倒なデータインポートプロセスです。

-------------------------------------------------- --------


今回は8GBのRAMがあるので、グラフィカルインターフェイスで消費される100MBや200MBは気にしません。基本プラットフォームとしてLinux-Mint13 64ビットを使用すると、操作性が良く、開発の練習用にeclipse、QT、コードブロック、その他のIDEをインストールするのに役立ちます。

<0> 1日を通してグローバルデータファイルをダウンロードするための特別なマシンを見つけます。国内のインターネット速度が良くない場合、この手順はひどいものです。BTを使用するのはあまり良くありません。誰もが自分のやり方を適切だと考えています。

      http://download.geofabrik.de/osm/にアクセスして、関心のある地域のデータ、グローバルダイレクトグーグルPlanet.osm、ダウンロードするwiki FTPへのリンク(非常に遅い)をダウンロードするか、http:// osm-torrentにアクセスします。 torres.voyager.hr/files/でPBFシードをダウンロードするには(私のインターネット速度では、それほど良くはありません)、この手順には何日もかかります。osm.bz2の形式はPBFよりもはるかに大きく、インポート時に非常に遅くなります。使用できる場合は、pbfを使用することをお勧めします。PBFを使用する場合は、後でosm2pgsqlをコンパイルするときにlibprotobuf-c0-devとprotobuf-c-compilerが必要になります。そうしないと、認識されません。

     今回は中国のpbf60MBをダウンロードし、機能テスト用にインポートしました。後でダウンロードが完了したら、グローバルにインポートします。


<1> PostgreSQLをインストールする

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install postgresql
sudo apt-get install postgresql-9.1-postgis postgresql-contrib-9.1 postgresql-server-dev-9.1
sudo apt-get install libpq-dev
もちろん、Xの下のSynaptic Software Managerに直接インストールして、pgAdminIIIをインストールすることもできます。

以下で構成します。


<2>更改Linux  用户和PostgreSQL 的用户密码,创建用于数据访问的用户

为了用自己的postgres账户在 pgAdminIII中登录,以及远程访问数据库,我们要修改postgres的管理员密码 

sudo passwd postgres

输入两遍自己的密码, 就更改了Linux下用户postgres的口令。而后,在数据库中修改 postgres 的密码,一般与上面操作系统中postgres用户的密码取一致。

sudo su postgres

psql -dpostgres

ALTER USER postgres WITH PASSWORD '你的密码';

为了安全,创建一个用户,用于数据访问。为了和后面渲染契合,用户名 www-data,分别在console以及psql下执行:

sudo passwd www-data
在psql或者pgAminIII 中
CREATE ROLE "www-data" LOGIN
  PASSWORD '你想设置给www-data的密码'
  SUPERUSER INHERIT CREATEDB NOCREATEROLE REPLICATION;

<3>adminPack 安装

     如果安装了pgAdminIII,则会提示您没有安装服务器端adminpack,postgresql 9.1下,这个东西不再是 contrb,而是“扩展”extension,直接点击“修复repair”或执行

create extension adminpack;

以安装服务器管理员拓展包,否则,很多pgAdmin的功能用不了。


<4>建立PostGIS数据库

首先,我们要在2TB的分区文件夹下建立表空间。本例中, 2TB分区位于 /hugecargo

cd /hugecargo
sudo mkdir pgtbs_osmgis
sudo chown postgres ./pgtbs_osmgis
而后,在psql或者pgAdmin下创建表空间

CREATE TABLESPACE pgtbs_osmgis
  OWNER "www-data"
  LOCATION '/hugecargo/pgtbs_osmgis';

接着,创建数据库。由于中文Mint 下,postgresql默认采用 zh_cn.UTF-8 locale, 这种字符排序对后面的导入工作会造成一定的麻烦,保险起见,采用Locale "C"

CREATE DATABASE osmgis
  WITH OWNER = "www-data"
       ENCODING = 'UTF8'
       TABLESPACE = pgtbs_osmgis
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;
GRANT ALL ON DATABASE osmgis TO public;
GRANT ALL ON DATABASE osmgis TO "www-data";
添加 postgis 功能,以及hstore(类似C++的map)。

sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql"
sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql"
sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis_comments.sql"
sudo su postgres
psql -dosmgis
create extension hstore
这样,postgis数据库就建立好了。


<5> 对postgresql性能进行优化

首先,编辑 /etc/postgresql/9.1/main/postgresql.conf

sudo nano /etc/postgresql/9.1/main/postgresql.conf

修改缓存,关闭自动资源释放,否则,等着导入的时候硬盘over吧!

shared_buffers = 256MB
checkpoint_segments = 20
maintenance_work_mem = 256MB
autovacuum = off
小内存机器,不要设置太大。

shared_buffers = 128MB

注意,把前面的"#"去掉,否则那一行只是注释而已,我这个粗心鬼不止一次忘了。

而后,要同步修改系统的最大共享内存数

sudo nano /etc/sysctl.conf

在尾部补上

#128MB shared_buffer对应256MB shmmax 
kernel.shmmax=268435456 
#256MB shared_buffer对应512MB 
shmmax kernel.shmmax=536870912

最后,重启机器,确定postgresql服务运行正常,就ok了。


至此,postgresql设置完毕。

----------------------------------------- 


<6> 编译支持pbd文件格式的 osm2pgsql 

为了导入数据,需要osm2pgsql这个工具。安装一些依赖

sudo apt-get install subversion git-core tar unzip wget bzip2 
sudo apt-get install build-essential autoconf libtool libxml2-dev libgeos-dev libbz2-dev 
sudo apt-get install proj munin-node munin libprotobuf-c0-dev protobuf-c-compiler 
sudo apt-get install libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev libboost-all-dev 
sudo apt-get install libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev

我在自己的文档文件夹下建立bin, src  两个文件夹,bin用于存放直接运行的程序,src用于存放编译后 make install 到系统路径中的程序。

mkdir ~/src
mkdir ~/bin
cd ~/bin
svn co http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/

而后,进入目录,编译

cd osm2pgsql
./autogen.sh
./configure
make
sudo make install

就ok了

请注意一下configure的时候,有没有提示protobuf 是yes,是的话,才能认 pbf文件,从而节约大量的下载时间(pbf比 osm.bz2小了7-8个GB)


<7> 开始导入测试用中国数据 (全球数据最后一步导入,那是去和老板请假休息的时候)

准备好后,直接运行

./osm2pgsql -dosmgis -s -S"./default.style" -C384 -Uwww-data -W -Hlocalhost -v ~/downloaded/china.osm.pbf

即可导入。china.osm.pbf 的数据导入很快。


-----------------------------------

本文就到这里,现在,我们有了基础的数据。下一篇,我们开始配置 mapnik2 渲染器,以及 apache-mod_tile + renderd 组成的WMS服务器。 

おすすめ

転載: blog.csdn.net/sun19890716/article/details/49132081