2012年更新

经过从2008年以来对OSM的研究与利用,越来越发现OSMGIS的活跃、开放是非常引人注目的事情。尽管缺乏像ARCGIS这样强大的中间服务的支持,其庞大的原始数据集合本身就是一笔可观的财富。

1、硬件准备

经过测试,导入2012年1月世界范围数据要耗费 200GB以上的磁盘。在拥有8GB存储器、1TB磁盘阵列的服务器上需要近1周的时间(PostgreSQL Shared-Mem 512MB, Work Mem 1024MB, Maintain 512MB),且虚拟机与 PostgreSQL服务器并不在同一机器。(数据库服务器要求专用,才能发挥最好效果) 。

2、网络地图

Planet.OSM( Open Street Map) 计划是开放源代码的GIS应用,目前经过全世界热心同仁的更新,其底层数据的质量明显提升,精度、数据量均不错。其地图通过网址http://www.openstreetmap.org 可以直观访问,但国内比较慢。不仅如此,如果能够接入Internet, 可以方便的使用其API,支持包括移动设备在内的多种服务。

http://wiki.openstreetmap.org/wiki/Planet.osm 介绍了她的详细情况。

3、什么情况下需要自己搭建服务器

这次,我们要讨论的是在公司内部的专用网路上,如何搭建像模像样的 OSM 服务器。适用的范围:
    a、公司内部网络限制了上网,但又需要GIS应用的地方
    b、需要订制 GIS 应用的地方
    c、需要携带到边远地区的便携式计算机上的情况。

4、osm 简介

OSMGIS 由矢量原始数据服务器、渲染用矢量图元服务器、渲染引擎、瓦片栅格服务器、瓦片版本服务器、Web服务器组成。

  矢量原始数据服务器内存储的是信息完整的矢量数据。   OSMGIS 的底层数据由点、线、面等基本图元构成,这些含有属性(地名等)的几何元素以 XML 格式定期在网站发布:

ftp://ftp.spline.de/pub/openstreetmap/
   这些XML格式的图元来自工具"osmosis"导出PostgreSQL数据库的镜像, 这个工具的说明见:
   http://wiki.openstreetmap.org/wiki/Osmosis
   PostgreSQL数据库中的图元对象在 PostGIS的支持下形成供世界各地用户不断完善的数据集。

渲染用矢量图元服务器、渲染引擎

由于数据本身都是字符串格式的,无法直接进行显示。为此,有不少中间件(渲染引擎)被设计出来,用于把数据库中的字符图元变成可以浏览的图像,其中最著名的就是 Mapnik。 渲染用矢量图元服务器存放渲染需要的图元的几何信息,数据来自原始数据导出的XML文件,但仅仅导入渲染需要的部分,损失了几何联通等关系信息。像加权最短路径等算法必须使用原始数据。

Ubuntu上的Mapnik渲染引擎是一个C++库,通过绑定在Python上,提供了简便的接口,只要给出生成图像的比例尺、范围,即可生成png,jpg,gif等格式的图像。Mapnik使用XML文件定制图层,每个图层包含一串SQL语句,以及显示格式定义。比如公路图层就是 select * from 数据表 where 类型=省级公路, 数据用蓝色、9号字显示之类的片段。把一个个图层定义集中起来,放在叫做 OSM.XML的文件里,我们修改这个文件,即可改变渲染的风格。

瓦片栅格服务器

为了方便在Web上传输、显示,把世界地图存储为 256 * 256 的一张张贴图,一级比例尺只包含1张(2^0),2级包含 2*2 =4张(2^2),3级为 4*4 = 16张(2^4),4级为8*8=64,2^6张,...直到19级 (2^36) ,包含 这些按照级别、行、列编号的图片被称为“Tile”,就是瓦片。从上面的规模看出,把19级包含的全部瓦片渲染、存储在服务器上是不可能的,实际应用中,仅存储用户访问过的地方。至于大片海洋和荒原,不去渲染。

瓦片版本服务器

由于原始数据每天都在更新,所以瓦片也需要不断更新,以体现背后数据的编辑状态。瓦片版本服务器存储了各个瓦片生成时的矢量数据版本,如果矢量数据被编辑,版本服务器会自动定期重新渲染那些过时的瓦片。

Web服务器

这个不多说了,展现给用户一个 AJAX的网页,还有一套交互协议(API),我不熟悉啊,有兴趣的何以参考资料。

综上,OSM系统 的底层数据存储在PostgreSQL服务器中,其服务端定期使用  osmosis 导出XML镜像(或者二进制PBF);为了使矢量数据可视化,人们发明了Mapnik之类的渲染器。由于渲染工作极端占用资源,专门设置了渲染用矢量服务器,仅存储渲染所需的数据;渲染器按照给出的比例尺、范围、图层定义文件OSM.XML把矢量数据画成图;为了节省带宽、提高效率,人们按256*256为单位分割管理栅格数据,按需渲染、定期更新;一组WebService用于提供服务、支持浏览、在线编辑。

5、其他知识

投影系
   OSM 与 Google-Map 同样采用摩卡托(http://en.wikipedia.org/wiki/Mercator_projection)投影系,这种投影是保角投影,南北极附近是奇异点,无法显示,也算是他的一大缺陷了。

PostgreSQL与PostGIS

PostgreSQL 是一种对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统。它起源于伯克利(BSD)的数据库研究计划,目前是最重要的开源数据库产品开发项目之一, 有着非常广泛的用户。PostGIS在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力,相当于Oracle的spatial部分。PostGIS最大的特点是符合并且实现了OpenGIS的一些规范,是最著名的开源GIS数据库。

6、需求牵引的简化搭建步骤

对于仅需要地图作为底图的应用,搭建渲染用原始数据服务器、渲染引擎即可,至于瓦片直接用Python脚本生成。如果需要编辑矢量数据、实现API,建议参考国外的资料(完整系统搭建),直接签出别人弄好的代码。

数据导入与基本设置

渲染用数据服务器搭建, 老外已经写得不能再详细了:http://switch2osm.org/serving-tiles/manually-building-a-tile-server/

weait 上的资料不知道怎么了,打不开了。

前一段时间由于工作很忙,没有时间继续研究了。前面也是浅尝辄止一下,发现以前的参考资料很多不能访问了。现在把网址集中说一下:

a、数据: 点击打开链接http://wiki.openstreetmap.org/Planet.osm
     b、区域数据:点击打开链接http://download.bbbike.org/osm/
                         可以自己选择区域下载(第三项),很方便
     c、地图XML格式介绍:点击打开链接http://wiki.openstreetmap.org/wiki/OSM_XML

汉化与地名处理

OSMGIS数据是万国语言版的,建议使用世界地名大辞典进行自动汉化。我的做法是下载

http://download.csdn.net/detail/goldenhawking/4556453

导入到GIS库,而后写程序用正则式模糊匹配替换。别忘了新建一个字段,备份老的name

  实现外围程序

客户端有很多实现方法,如果只是作为底图,则原理很简单,通过读取特定比例尺下的瓦片,在屏幕上拼接显示。对没有渲染的瓦片,登记入数据库,由渲染程序生成。这里在Ubuntu 11.10 下,采用 mapnik 0.7 (现在出了2.0,但是由于图层定义文件还是0.7的,所以没有采用)搭建了虚拟机。由于是底图需求,连webservice 也是用fcgi写的短小的几十行代码,所有功能就是看看目录里有没有请求的瓦片,有的话返回数据,没有就在版本数据库(也是最傻的)记一下,返回一个“瓦片正在渲染”的白矩形。

比较复杂的是客户端,从底层实现标图、量测和使用ARCGIS之类的强大服务完全不同,很考验对架构的把握。下面晒一晒我写的外围程序。

创建自己的 OSM.Planet 街道级别地图服务器,汉化地名避免万国语相关推荐

  1. osm地图服务器搭建(二)

    配置Apache 安装apache sudo apt install apache2 创建一个模块来加载文件 sudo nano /etc/apache2/mods-available/mod_til ...

  2. 局域网bs虚拟服务器怎么创建,搭建局域网地图服务器

    BIGEMAP一键离线地图发布服务器主要帮助企业内部(局域网)环境搭建私有地图服务.支持一键快速发布,无需二次开发,无需配置环境,安装即可发布离线地图,可应用在局域网地图发布,内网地图发布,手持设备地 ...

  3. 如何下载金融街街道卫星地图高清版大图

    如何下载金融街街道卫星地图高清版大图 金融街街道行政区域简介 金融街街道位于西城区中部,东起西四南大街.西单北大街,西至西二环路,南起宣武门西大街,北至阜成门内大街,辖区面积3.78平方公里,有19个 ...

  4. 如何下载建外街道卫星地图高清版大图

    如何下载建外街道卫星地图高清版大图 建外街道行政区域简介 北京市朝阳区辖街道.位于区境西部,地处北京商务中心区核心区.东起西大望路,西至建国门立交桥,南临通惠河,北到光华路,面积4.4平方千米,常住人 ...

  5. 如何下载什刹海街道卫星地图高清版大图

    如何下载什刹海街道卫星地图高清版大图 什刹海街道行政区域简介 什刹海街道位于北京市西城区东北部,由原新街口街道的新街口北大街以东地区与原厂桥街道合并组建而成,街道地域面积5.80平方公里,东起旧鼓楼大 ...

  6. 如何下载天坛街道卫星地图高清版大图

    如何下载天坛街道卫星地图高清版大图 天坛街道行政区域简介 天坛街道为北京市东城区辖街道.位于东城区西部.辖区面积4.03平方公里.北起珠市口东大街(大都市街),南至永定门护城河边.永定门东街,西起前门 ...

  7. 如何下载东直门街道卫星地图高清版大图

    如何下载东直门街道卫星地图高清版大图 东直门街道行政区域简介 东直门街道位于北京市东城区东部偏北.东二环路以东,因地处东直门而得名.面积2.2平方公里,是东城区唯一一个位于东二环外的街道.东以春秀路. ...

  8. 如何下载天桥街道卫星地图高清版大图

    如何下载天桥街道卫星地图高清版大图 天桥街道行政区域简介 天桥街道位于西城区东南部,西起虎坊路大街和太平街,东至前门大街和天桥南大街,北临两广路,南滨永定门护城河.辖区面积2.07平方公里,划分8个社 ...

  9. 如何下载北新桥街道卫星地图高清版大图

    如何下载北新桥街道卫星地图高清版大图 北新桥街道行政区域简介 北新桥街道(Beixinqiao Jiedao)位于北京市东城区东北部.辖区面积2.62平方千米,常住人口7.68万人(2006年末).辖 ...

最新文章

  1. 业务脆弱性评估是业务持续性保障(BCM)的基础数据
  2. 机器人操作系统来到Windows
  3. 【sparkStreaming】将DStream保存在MySQL
  4. 禁用人脸识别四个月后,旧金山人证明了他们的先见之明
  5. shell脚本练习之——形状练习(菱形、直角三角形、等腰三角形、五角星)
  6. java数据库程序实例_Java连接各种数据库的实例大全
  7. RabbitMq(十四)消息的事务支持及代码演示
  8. WCF编程系列(五)元数据
  9. C# 对文本文件的几种读写方法
  10. python __del__
  11. 996工作的人,下班后还有时间锻炼身体和学习吗?还有娱乐生活吗?
  12. box-sizing 的作用
  13. AS/400开发经验点滴(六)如何制作下拉菜单
  14. jtextarea可以让某一行右对齐吗_单元格对齐还在敲空格吗?几个简单小技巧要学会...
  15. 如何去除图片连接的边框线
  16. 谷歌地球 Google Earth v7.3.2.5495 专业版
  17. 【运筹学】分支定界法 ( 分支定界法相关概念 | 分支定界法求解整数规划步骤 | 分支定界理论分析 | 分支过程示例 )
  18. CSAPP实验2:bomblab
  19. Spring Data 数据库建模最佳实践
  20. win10计算机设备感叹号,Win10资源管理器无法显示iphone,设备管理器中存在黄色感叹号。...

热门文章

  1. 10.1粤北骑行图文
  2. STUN协议和常用NAT类型
  3. STM32移植FreeRTOS中断向量表问题
  4. 推荐算法-皮尔逊相关系数的相似度
  5. Windows下安装使用netcat
  6. “机器学习”三重门_“中庸之道”趋若人(深度学习入门系列之四)
  7. 新浪微博搜索 每页微博条数修改 50条 100条
  8. 世界上最经典的15句话!
  9. 2018-11-08 读《累死你的不是工作,而是工作方式》有感
  10. 代码随想录训练营第25天|216.组合总和 Ⅲ、17.电话号码的字母组合