研究开源地图组建,服务搭建,初步方案为:
服务器 *** 作系统:CentOS7 GIS数据库支持:PostgreSQL9.x + PostGIS 地图数据:OSM 地图瓦片渲染:Mapnik + CartoCSS WMS服务:MapProxy TileStache WEB前端:OpenLayers 地图底图样式编辑:iD @H_502_18@ 第一步:安装Postgresql数据库CentOS7下初始化PostgreSQL
第二步: PostGIS的创建和初始化我们选Postgresql作为我们的GIS数据库,关于Postgresql的安装,之前已经有文章介绍过(centOS7下同样适用)。PostGIS需要额外的安装和配置。PostGIS的安装我们同样使用Yum的方式。
1.1 安装PostGIS
PostGIS 安装过程需要依赖一些相关库文件,为了方便安装,首先我们需要添加EPEL源,然后再安装PostGIS
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpmyum List postgis* #查看能够安装的最新版本-------------------------------------------------postgis.x86_64 2.0.7-1.el7 @epel postgis2_94.x86_64 2.1.8-1.rhel7 @pgdg94可安装的软件包postgis-docs.x86_64 2.0.7-1.el7 epel postgis-utils.x86_64 2.0.7-1.el7 epel postgis2_94-clIEnt.x86_64 2.1.8-1.rhel7 pgdg94 postgis2_94-deBUGinfo.x86_64 2.1.8-1.rhel7 pgdg94 postgis2_94-devel.x86_64 2.1.8-1.rhel7 pgdg94 postgis2_94-docs.x86_64 2.1.8-1.rhel7 pgdg94 postgis2_94-utils.x86_64 2.1.8-1.rhel7 pgdg94------------------------------------------------------yum install postgis2_94
1.2 创建地理空间数据库
目前如果导入OSM的全球数据的话,导入后至少需要480G的存储空间。所以根据需求请选择合适的存储路径来创建数据库。
mkdir /home/DATA/pgtbs_osmgis #目录请自行决定 chown postgres /home/DATA/pgtbs_osmgis
然后在psql下创建表空间,为了方便管理,我们再创建一个PG用户osmgis
psql -Upostgres CREATE USER osmgis WITH PASSWORD 'password'; CREATE tableSPACE pgtbs_osmgis OWNER "osmgis" LOCATION '/home/DATA/pgtbs_osmgis';
请把‘password’替换成您设置的密码。
创建数据库和一个对应的管理用户,管理用户建议使用password认证(pg_hba.conf),具体配置可参见之前的文章。
CentOS7下初始化PostgreSQL
CREATE DATABASE osmgis WITH OWNER = "osmgis" ENCoding = 'UTF8' tableSPACE=pgtbs_osmgis; GRANT ALL PRIVILEGES ON DATABASE osmgis TO osmgis;
服务启动
pg_ctl restart #初始化启动了一次,所以是restart
这里是个坑,如果不启动会报错
Could not load library "/usr/lib64/pgsql/postgis-2.0.so": ×××××××××乱遭: cannot open shared object file: No such file or directory
注意,注意
1.3 添加postgis功能以及hstore
以下方法,因权限问题,需要使用postgres用户来 *** 作
su - postgrespsql -Upostgres -dosmgis </usr/pgsql-9.3/share/contrib/postgis-2.1/postgis.sqlpsql -Upostgres -dosmgis </usr/pgsql-9.3/share/contrib/postgis-2.1/spatial_ref_sys.sqlpsql -Upostgres -dosmgis </usr/pgsql-9.3/share/contrib/postgis-2.1/postgis_comments.sql
用postgres用户登录psql,然后创建hstore
psql -Upostgres -dosmgis create extension hstore; #如报错,请检查是否安装了postgresql94-contrib
1.4 Postgresql配置的优化
为了使地图数据导入更加顺滑,我们需要调整一下PG的配置文件
配置文件:/var/lib/pgsql/9.4/data/postgresql.conf
shared_buffers = 128MBmaintenanceworkmem = 256MBcheckpoint_segments = 20autovacuum = off
以上的配置一般适用于你有8G的内存,具体配置可根据自己的情况自行调整,可以参考
http://wiki.openstreetmap.org/wiki/Osm2pgsql/benchmarks
以及http://wiki.openstreetmap.org/wiki/PostgreSQL 上的建议。
修改完配置后别忘了
sudo service postgresql-9.4 reloadOSMGIS地图数据下载
根据需要,可以去 http://planet.openstreetmap.org/ 下载地图数据,建议下载 .pbf 二进制格式的数据,这样下载和数据导入速度都会快一些。目前全球数据大小在25G左右(导入后大概占用空间500G左右)。也可以根据需要下载州、国家、地区的数据 http://download.geofabrik.de/ ,或者下载某个城市甚至可以指定一个区域下载 http://download.bbbike.org/osm/。更多的OSMGIS数据下载可以参见:
http://wiki.openstreetmap.org/wiki/Planet.osm#Downloading
我们可以先下载一个比较小的地图用于先期的测试工作,我们先拿宝岛台湾作个试验吧!
wget http://download.bbbike.org/osm/bbbike/Beijing/Beijing.osm.pbf
如果打算导入全球数据的话,根据服务器的配置不同,耗时也是不同的。快则一天,多则可能需要一周。具体可参考官方的评测报告:http://wiki.openstreetmap.org/wiki/Osm2pgsql/benchmarks, 里面例举了不同硬件/软件配置的数据导入耗时。
数据导入因为本次地图底图要支持CartoCSS,我们选用了osm-bright的方案,当然还有其他一些开源的方案支持CartoCSS+Mapnik的底图瓦片渲染,这个可以根据个人喜好来决定。但无论选择哪种方案,最终是希望能通过一个友好的编辑器(例如TileMill),来方便的设计/修改地图的底图样式。
3.1 下载osm-bright
用皮肤,地图皮肤哦
git clone https://github.com/mapBox/osm-bright.git
3.2 imposm 安装
地图数据文件的导入工具,本次选择了imposm,也可以用osm2pgsql,一个是Python的实现一个是C的实现,据说imposm比osm2pgsql要快一些。
yum install python-psycopg2 python-devel protobuf-compiler gcc gcc-c++ protobuf-devel tokyocabinet-devel geos-develyum install python-pip pip install imposm
3.3 数据导入
导入需要指定一个mapPing.py的配置文件,此文件在osm-bright的项目目录下
sudo -s cd /home/postgres/ su - postgres imposm --connection=postgis://osmgis:password@localhost/osmgis -m ./osm-bright/imposm-mapPing.py --read --write --optimize --deploy-production-tables taiwan-latest.osm.pbf
这里需要注意一下路径:1、./osm-bright/imposm-mapPing.py
2、taiwan-latest.osm.pbf 可以直接写根路径
另外一个需要注意的是,imposm默认链接PG用的是IPv6 ??? 所以可能需要修改pghba.conf,否则以上导入过程可能会报错(FATAL: IDent authentication Failed for user “xxxxxx”),我们需要在pghba.conf中加入以下一条规则:
IPv6 local connections:host all osmgis ::1/128 md5
安装NodeJs因为TileMile是NodeJs的项目,所以我们要先安装NodeJs以及NPM包管理工具
yum install nodeJs npm
第三步: CentOS7下Mapnik编译安装笔记(修改版)
在CentOS 7上安装Node.js的4种方法(包含npm)
iD - OpenStreetMap的友好的JavaScript编辑器
总结以上是内存溢出为你收集整理的搭建开源地图服务 - 利用OSMGIS和iD全部内容,希望文章能够帮你解决搭建开源地图服务 - 利用OSMGIS和iD所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)