<< A Generic Iterator for Tree Traversal | Dr Dobb's | 首页 | Java DES文件加密解密 javax.crypto.BadPaddingException: Given final block not properly padded - ice world - BlogJava >>

一步步DIY: OSM-Web服务器(一) PostgreSql 配置以及osm2pgsql原始PBF数据导入 - 流浪小狗的窝 - 博客频道 - CSDN.NET

<1>安装PostgreSQL

 

[plain] view plaincopy
 
  1. sudo apt-get update  
  2. sudo apt-get dist-upgrade  
  3. sudo apt-get install postgresql  
  4. sudo apt-get install postgresql-9.1-postgis postgresql-contrib-9.1 postgresql-server-dev-9.1  
  5. sudo apt-get install libpq-dev   

当然,也可以直接在X下新立得软件管理器中安装,顺便把pgAdminIII 给安上

 

下面进行配置。

 

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

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

 

[plain] view plaincopy
 
  1. sudo passwd postgres  


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

 

[plain] view plaincopy
 
  1. sudo su postgres  
  2.   
  3. psql -dpostgres  
  4.   
  5. ALTER USER postgres WITH PASSWORD '你的密码';  

 

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

[plain] view plaincopy
 
  1. sudo passwd www-data  
  2. 在psql或者pgAminIII 中  
  3. CREATE ROLE "www-data" LOGIN  
  4.   PASSWORD '你想设置给www-data的密码'  
  5.   SUPERUSER INHERIT CREATEDB NOCREATEROLE REPLICATION;  

 

<3>adminPack 安装

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

 

[plain] view plaincopy
 
  1. create extension adminpack;  

 

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

 

 

<4>建立PostGIS数据库

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

 

[plain] view plaincopy
 
  1. cd /hugecargo  
  2. sudo mkdir pgtbs_osmgis  
  3. sudo chown postgres ./pgtbs_osmgis  

而后,在psql或者pgAdmin下创建表空间

 

 

[plain] view plaincopy
 
  1. CREATE TABLESPACE pgtbs_osmgis  
  2.   OWNER "www-data"  
  3.   LOCATION '/hugecargo/pgtbs_osmgis';  


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

 

 

[plain] view plaincopy
 
  1. CREATE DATABASE osmgis  
  2.   WITH OWNER = "www-data"  
  3.        ENCODING = 'UTF8'  
  4.        TABLESPACE = pgtbs_osmgis  
  5.        LC_COLLATE = 'C'  
  6.        LC_CTYPE = 'C'  
  7.        CONNECTION LIMIT = -1;  
  8. GRANT ALL ON DATABASE osmgis TO public;  
  9. GRANT ALL ON DATABASE osmgis TO "www-data";  

添加 postgis 功能,以及hstore(类似C++的map)。

 

 

[plain] view plaincopy
 
  1. sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql"  
  2. sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql"  
  3. sudo su postgres -c "psql -dosmgis </usr/share/postgresql/9.1/contrib/postgis_comments.sql"  
  4. sudo su postgres  
  5. psql -dosmgis  
  6. create extension hstore  

这样,postgis数据库就建立好了。

 

<5> 对postgresql性能进行优化

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

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

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

 

[plain] view plaincopy
 
  1. shared_buffers = 256MB  
  2. checkpoint_segments = 20  
  3. maintenance_work_mem = 256MB  
  4. autovacuum = off  

小内存机器,不要设置太大。

 

 

[plain] view plaincopy
 
  1. shared_buffers = 128MB  


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

 

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

 

[plain] view plaincopy
 
  1. sudo nano /etc/sysctl.conf   


在尾部补上

 

 

[plain] view plaincopy
 
  1. #128MB shared_buffer对应256MB shmmax   
  2. kernel.shmmax=268435456   
  3. #256MB shared_buffer对应512MB   
  4. shmmax kernel.shmmax=536870912  

 

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

 

至此,postgresql设置完毕。

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

 

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

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

 

[plain] view plaincopy
 
  1. sudo apt-get install subversion git-core tar unzip wget bzip2   
  2. sudo apt-get install build-essential autoconf libtool libxml2-dev libgeos-dev libbz2-dev   
  3. sudo apt-get install proj libprotobuf-c0-dev protobuf-c-compiler   
  4. sudo apt-get install libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev libboost-all-dev   
  5. sudo apt-get install libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev  

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

 

[plain] view plaincopy
 
  1. mkdir ~/src  
  2. mkdir ~/bin  
  3. cd ~/bin  
  4. svn co http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/  

 

而后,进入目录,编译,如果需要多线程支持,安装pThread

sudo apt-get install libpthread-stubs0-dev libevent-pthreads-2.0-5  libzthread-dev

 

[plain] view plaincopy
 
  1. cd osm2pgsql  
  2. ./autogen.sh  
  3. ./configure  
  4. make  
  5. sudo make install  

 

就ok了

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

 

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

准备好后,直接运行

 

[plain] view plaincopy
 
  1. ./osm2pgsql -dosmgis -s -S"./default.style" -C384 -Uwww-data -W -Hlocalhost -v ~/downloaded/china.osm.pbf  

 

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

阅读全文……

标签 : ,



发表评论 发送引用通报