在公司内网上创建自己的 OSM.Planet 街道级别地图服务器及其客户端程序

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 转自我的BLOG http://blog.csdn.net/goldenhawking/article/details/6402775  最近经过陛下点拨,涉猎了“OpenStreetMap”,做了不少业余研究,把成果给大家分享一下,特别是提供搭建好的客户端-服务器框架,以及中国国内的OSM开放地图范例。

转自我的BLOG http://blog.csdn.net/goldenhawking/article/details/6402775
 最近经过陛下点拨,涉猎了“OpenStreetMap”,做了不少业余研究,把成果给大家分享一下,特别是提供搭建好的客户端-服务器框架,以及中国国内的OSM开放地图范例。

 

为什么只有中国的??

 

  原因很简单,  由于导入世界范围数据要耗费 100GB以上的磁盘。经过我亲自测试,如果需要导入世界数据的话,在拥有4GB存储器、1TB磁盘阵列的HP 8核服务器上需要近1周的时间(PostgreSQL Shared-Mem 128MB, Work Mem 512MB, Maintain 512MB),且虚拟机与 PostgreSQL服务器并不在同一机器。(数据库服务器要求专用,才能发挥最好效果) 。

    尽管提供的仅是导入中国国内数据的范例服务器, 但是您可以从网站下载完整镜像(2011年4月的约16GB),而后导入本范例的服务器,即可立刻拥有世界范围的数据访问。在导入之前请详细阅读光盘中的文档,特别是 
 1、确保PostgreSQL 的资源充分
 2、确保导入期间PostgreSQL 的"autovacuum" 已经关闭。
 3、确保不要断电

 

我创建的完整范例镜像链接(尽量保持开机上传,请大家有耐心!虚拟机所有口令全部是 1234567, 包括开机和数据库管理员。数据库渲染用户osmrender,口令osmrender):


ed2k://|file|Planet.OSM_Server_and_Client_by_goldenhawking(OSM%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%8A%E8%8C%83%E4%BE%8B%E5%AE%A2%E6%88%B7%E7%AB%AF).iso|4132896768|F6F5774B8E2FD4032F997523FB7BC097|h=PNZKU5WEIGMUUCOQSLFE2EOWMZCXORAL|/

 

说明和截图:

ed2k://|file|Planet.OSM_Server_and_Client_by_goldenhawking(OSM%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%8A%E8%8C%83%E4%BE%8B%E5%AE%A2%E6%88%B7%E7%AB%AF).iso.%E8%AF%B4%E6%98%8E%E5%92%8C%E6%88%AA%E5%9B%BE.rar|619839|32DD6E70287DFEE35E77F77DACF23EEB|h=QBAQ6QZNPOBDP4KL2ZGMD2L5ST5C44LP|/ 

 

    Planet.OSM( Open Street Map) 计划是开放源代码的GIS应用,目前经过全世界热心同仁的更新,其底层数据的质量明显提升,精度、数据量均不是小打小敲的商业地图应用可比拟的(比GoogleMap等还是要朴素)。其地图通过网址 http://www.openstreetmap.org 可以直观访问。不仅如此,如果能够接入Internet, 可以方便的使用其API,支持包括移动设备在内的多种服务。
    http://wiki.openstreetmap.org/wiki/Planet.osm 介绍了她的详细情况。这次,我们要讨论的是在公司内部的专用网路上,如何搭建像模像样的 OSM 服务器。适用的范围:
    1、公司内部网络限制了上网,但又需要GIS应用的地方
    2、需要订制 GIS 应用的地方
    3、需要携带到边远地区的便携式计算机上的情况。

    由于是轻量级的应用,我不实现完整的API, 只是注重显示、运用地图本身作为底图。

 

1、osm 体系一分钟介绍
    在开始之前,有必要介绍一下OSM的体系。(看过英文资料 http://wiki.openstreetmap.org/wiki/Planet.osm的可以略过)。OSMGIS 的底层数据由点、线、面等基本图元构成,这些含有属性(地名等)的几何元素以 XML 格式定期在网站发布:  
   ftp://ftp.spline.de/pub/openstreetmap/
   这些XML格式的图元来自工具"osmosis"导出PostgreSQL数据库的镜像, 这个工具的说明见:
   http://wiki.openstreetmap.org/wiki/Osmosis
   PostgreSQL数据库中的图元对象在 PostGIS的支持下形成供世界各地用户不断完善的数据集。然而,数据本身都是字符串格式的,无法直接进行显示。为此,有不少中间件(渲染引擎)被设计出来,用于把数据库中的字符图元变成可以浏览的图像,其中最著名的就是 Mapnik。 本次,我们采用Ubuntu上的Mapnik作为渲染引擎。 Mapnik 本身是一个C++库,通过绑定在Python上,提供了简便的接口,只要给出生成图像的比例尺、范围,即可生成png,jpg,gif等格式的图像。

 

 

2、投影系
   OSM 与 Google-Map 同样采用摩卡托(http://en.wikipedia.org/wiki/Mercator_projection)投影系,这种投影是保角投影,南北极附近是奇异点,无法显示,也算是他的一大缺陷了。第0级比例尺全世界地图被承载在 256 * 256 大小的图片上,第1级比例尺为 512*512, 分为 两行、两列256*256的图片。第2级比例尺为 1024*1024,即4*4=16个256*256的图片...以此类推, 每一级拥有 2^n 行, 2^n 列个瓦片组成,左上角编号为0,0,右下角为  2^n-1,2^n-1. 具体编号参见更多资料。

 

3、详细搭建方法
   老外已经写得不能再详细了,见http://weait.com/content/build-your-own-openstreetmap-server, 直接按照他说的做,准OK!

 

4、网页服务与客户端程序
   客户端有很多实现方法,这里给出的是 Windows 下的  VC++ 2008/2010的工程。原理很简单,通过读取特定比例尺下的瓦片,在屏幕上拼接显示。对没有渲染的瓦片,登记入数据库,由渲染程序生成。范例中演示的比较简单,希望起到抛砖引玉的效果!

 

注意: 所有口令都是1234567,确保VMWare 共享文件夹可用!光盘中附带了VM软件!界面:




http://bbs.csdn.net/topics/370157384

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
弹性计算 JavaScript 前端开发
|
算法 定位技术 图形学
UNITY地图寻路及服务器解决方案
多边形寻路算法简单介绍 http://liweizhaolili.lofter.com/post/1cc70144_86a939e   UNITY3D MMO服务器寻路 http://www.pathengine.
|
22天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
25天前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
411 4
|
27天前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云的活动购买完云服务器之后,并不是立马就能使用了,还需要我们设置云服务器密码,配置安全组等基本操作之后才能使用,有的用户还需要购买并挂载数据盘到云服务器上,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
|
11天前
|
弹性计算
阿里云ECS使用体验
在申请高校学生免费体验阿里云ECS云服务器后的一些使用体验和感受。
|
28天前
|
弹性计算
阿里云3M带宽云服务器并发多大?阿里云3M带宽云服务器测评参考
在探讨云服务器3M带宽能支持多大并发这一问题时,我们首先要明白一个关键点:并发量并非仅由带宽决定,还与网站本身的大小密切相关。一般来说,一个优化良好的普通网站页面大小可能只有几K,为便于计算,我们可以暂且假定每个页面大小为50K。
793 1
|
4天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器
|
4天前
|
弹性计算
阿里云ECS的使用心得
本文主要讲述了我是如何了解到ECS,使用ECS的一些经验,以及自己的感悟心得

热门文章

最新文章