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

简介: 转自我的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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
存储 弹性计算 定位技术
云服务器 ECS产品使用问题之如何重制服务器地图
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
弹性计算 Linux 定位技术
云服务器 ECS产品使用问题之如何重新开设一个新的地图
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
WM
|
弹性计算 小程序 关系型数据库
基于ECS搭建的应用示例(博客、密码管理、同学地图、APP服务端等)详解之一
作为互联网行业从业者,头脑里总是会冒出各种各样的想法,当然可以用网络笔记、云盘甚至本地的方式等记录下自己的想法,然而如果想要落地尝试,则拥有一台自己的服务器就再好不过了。全栈开发已经讲了很久了,如果是前端,通过nodejs也可以搭建后端服务;如果是后端,通过flutter、uniapp等也可以搭建出各种端上的APP;如果非研发人员,通过低代码开发平台拖拽也可以。有了自己的产品之后,如果不满足于本地跑跑,那么就得面临选择应用的载体了,性价比最高的方式是选择云上ECS,下面拿我的几年使用经验来展开讲一下。
WM
535 0
基于ECS搭建的应用示例(博客、密码管理、同学地图、APP服务端等)详解之一
|
弹性计算 定位技术
【ECS】资源搜索,给您的云资源画一张地图
随着ECS控制台新版概览页的上线,我们推出了强大的资源搜索功能,具有跨区域搜索、多资源单页面展示、关键词,模糊匹配、多条件,精确查找、大批量,多重定位、地图式结果展示等多种功能特点。为您管理您的云资源再添助力!
8890 0
【ECS】资源搜索,给您的云资源画一张地图
|
弹性计算 JavaScript 前端开发
|
算法 定位技术 图形学
UNITY地图寻路及服务器解决方案
多边形寻路算法简单介绍 http://liweizhaolili.lofter.com/post/1cc70144_86a939e   UNITY3D MMO服务器寻路 http://www.pathengine.
|
3月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
334 10
|
3月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
3月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
484 8