OpenStreetMap架构
OpenStreetMap框架简介
1.OSM平台开发
OpenStreetMap(缩写OSM)地图是一个合作项目,我们的目标是创建一个免费的内容,让所有的人都可以编辑的世界地图。
OSM在地图上由一个用户的基础上的手GPS装置、航空摄影照片、其它自由内容甚至单靠地方智慧绘制。站点里的地图图像及向量数据皆以共享创意姓名标示-同样方式分享2.0授权。
OSM站点的灵感来自维基百科等站点。
这可从该网地图页的“编辑”button及其完整修订历史获知。
经注冊的用户可上载GPS路径及使用内置的编辑程式编辑数据。眼下包含苹果和微软在内都在使用OpenStreetMap.
OSM架构例如以下图所看到的:
OSM的功能是由相互独立的组件共同完毕的。OSM的地图数据是通过PosGIS存储在PostgresSQL数据库中。通过Mapnik渲染成地图切片,通过Leaflet提供用户交互的接口。
2.基于OSM进行开发:
2.1部署自己的地图:
1. OpenLayers:OpenLayers 是一个专为WebGIS client开发提供的JavaScript类库包,用于实现标准格式公布的地图数据訪问。从OpenLayers2.2版本号以后,OpenLayers已经将所用到的Prototype.js组件整合到了自身其中,并不断在Prototype.js的基础上完好面向对象的开发。Rico用到地方不多,仅仅是在OpenLayers.Popup.AnchoredBubble类中圆角化DIV。
2. Leaflet:一个现代、开源的Javascript库,用于提供友好交互的地图。能够用于桌面和移动平台,Leaflet设计坚持简便、高性能和可用性好的思想,在全部主要桌面和移动平台能高效运作,在现代浏览器上会利用HTML5和CSS3的优势,同一时候也支持旧的浏览器訪问。支持插件扩展。有一个友好、易于使用的API文档和一个简单的、可读的源码。
使用leaflet的软件有:Flickr,foursquare,Pinterest,craigslist,Data.gov,IGN,Wikimedia,OSM,Meetup,WSJ,Mapbox,CartoDB,GISCloud等。地址:http://leafletjs.com/
3. Mapstraction:地址: http://wiki.openstreetmap.org/wiki/Deploying_your_own_Slippy_Map
4. YCanvas:地址:https://github.com/jozefchutka/YCanvas
5. Khtmlib地址:http://maplib.khtml.org/
6. Ka-Map
7. Openscales,用ActionScript3和Flex编写的开源地图框架,开发人员基于OpenScales能够构建富互联网应用,可用于网页和移动端(Android,ios)。
8. Modest Maps.轻量的、可扩展的开源库。设计者和开发人员能够用于设计交互的地图。提供了Actionscript3、python、Javascript、PHP、Processing、Cinder等语言的实现。
9. Modestmaps-js.ModestMaps库的一种轻量级javascript实现。地址:https://github.com/stamen/modestmaps-js/wiki
10. BruTile.基于C#语言实现的能够提供地图切片服务的库。地址:http://brutile.codeplex.com/
11. Polymaps.利用SVG技术提供图片和矢量切片地图服务的javascript库。
2.2渲染地图:
2.2.1 地图切片
创建地图切片:
1.Mapnik + generate_tiles.py
2. Mapnik + mod_tile
3. Mapnik + Mysql/Ruby/Python
4. Mapnik + tilecache
表达地图切片:
1.Openlayers
2. Maperitive
2.2.2 3D地图
基于OSM数据的3D地图项目有:
1.OSM-3D
2.Glosm
3.OSM2World
4.World2XPlane
5.osm2xp
6. OSM in 3D using XML3D
7.Kendzi3d
8.VTP VTBuilder
9. WikiMiniAtlas
10. OSM in 3D using XML3D
11.HaptoRender
12.F4 Map
2.3地图服务:
2.3.1路径导航服务
一、在线导航服务
1.OpenRoute-Service
2.YOURS
3.CycleStreets
4.Routino
5.BBBike World
6.MapQuest
7.OSRM
8.TripGo
9.BRouter
10.OpenTrip-Planner
11.HoofMarker
12.GraphHopper
不同软件的功能矩阵:
表1
|
功能 |
OpenRoute-Service |
YOURS |
CycleStreets |
Routino |
BBBike World |
MapQuest |
|
数据范围 |
欧洲 |
全球 |
英国 |
应该 |
选定的城市 |
全球 |
|
驾车(最快) |
√ |
√ |
√ |
|||
|
驾车(路程最短) |
√ |
√ |
√ |
√ |
||
|
自行车(路程最短) |
√ |
√ |
√ |
√ |
√ |
|
|
自行车(最快) |
√ |
√ |
√ |
√ |
√ |
√ |
|
自行车(最安全) |
√ |
√ |
√ |
|||
|
自行车(最安静) |
√ |
√ |
√ |
√ |
||
|
步行 |
√ |
√ |
√ |
√ |
||
|
拐点限制 |
√ |
√ |
√ |
√ |
||
|
汽车限制(高度、载重等) |
√ |
|||||
|
中间路段禁止通行 |
√ |
√ |
√ |
√ |
√ |
√ |
|
为路段手动设置行驶速度 |
√ |
√ |
√ |
|||
|
选定区域禁止通行 |
√ |
|||||
|
选定的桥梁或隧道禁止通行 |
√ |
√ |
||||
|
选定的道路类型禁止通行(如快速) |
√ |
√ |
√ |
√ |
√ |
|
|
实时交通 |
√ |
|||||
|
对外开放API |
√ |
√ |
√ |
√ |
√ |
|
|
是否开源 |
仅导航引擎 |
√ |
部分 |
√ |
√ |
表2
|
功能 |
OSRM |
TripGo |
BRouter |
OpenTrip-Planner |
HoofMarker |
GraphHopper |
|
数据范围 |
全球 |
选定城市 |
全球 |
选定城市 |
德国 |
全球 |
|
驾车(最快) |
√ |
√ |
√ |
|||
|
驾车(路程最短) |
√ |
|||||
|
自行车(路程最短) |
√ |
√ |
√ |
|||
|
自行车(最快) |
√ |
√ |
√ |
√ |
||
|
自行车(最安全) |
√ |
√ |
||||
|
自行车(最安静) |
√ |
√ |
||||
|
步行 |
√ |
路程最短 |
√ |
√ |
√ |
|
|
拐点限制 |
√ |
√ |
√ |
|||
|
汽车限制(高度、载重等) |
||||||
|
中间路段禁止通行 |
√ |
√ |
√ |
√ |
√ |
|
|
为路段手动设置行驶速度 |
√ |
|||||
|
选定区域禁止通行 |
√ |
|||||
|
选定的桥梁或隧道禁止通行 |
√ |
√ |
||||
|
选定的道路类型禁止通行(如快速) |
√ |
√ |
√ |
|||
|
实时交通 |
||||||
|
对外开放API |
√ |
√ |
√ |
√ |
√ |
|
|
是否开源 |
√ |
√ |
√ |
√ |
√ |
二、离线导航服务
1.Geosmore
3.Navit
4.RoadMap
5.VGPS
6.We-Travel
7.GpsMid
8.True Maps
9.MoNav
10.CartoType
不同软件功能矩阵:
表3
|
功能 |
Geosmore |
Traveling Salesman |
Navit |
RoadMap |
VGPS |
We-Travel |
GpsMid |
True Map |
MoNav |
CartoType |
|
导航算法 |
Multiple |
Dijkstra |
A* |
Dijkstra/A* |
Dijkstra/A* |
Dijkstra/A* |
Contraction Hierarchies |
A*/ contraction hierarchy |
||
|
地址搜索 |
限制 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
|
|
拐点限制 |
√ |
√ |
√ |
√ |
√ |
|||||
|
支持平台 |
全部 |
全部 |
Windows。Mac,Linux |
Linux,Unix |
Windows。Mac,Linux |
Windows。Mac,Linux,FreeBSD |
||||
|
支持手持设备 |
Windows mobile |
Nokia,WinCE,Android,Angstrom |
Windows CE, iPhone,ipod |
Java Mobile,Android Mobile |
2.3.2搜索服务
1.Nominatim:按名称和地址来搜索OSM中的数据,并生成OSM点的合成地址的工具。
Nominatim是基于PostgreSQL的导入有用程序osm2pgsql使用替代地名输出选项。索引和搜索是使用的C、PLPGSQL和PHP相结合进行。地址:https://github.com/twain47/Nominatim
2.3.3地理编码服务
1.Nominatim
2.MapQuest
3.OpenCage
4.Yacy
5.OSMLucener
6.OSMonto
7.Gisgraphy
8.Photon
版权声明:本文博客原创文章,博客,未经同意,不得转载。
OpenStreetMap架构的更多相关文章
- [原]使用node-mapnik和openstreetmap数据初步搭建瓦片服务
最近依然还是有点小忙,只能挤点时间来学习点,先解决有没有的问题,再解决好不好的问题:) 本文将承接上文<使用node-mapnik生成openstreetmap-carto风格的瓦片>的内 ...
- OpenStreetMap数据清洗(SQL&MonogoDB版本)
目标:通过网上下载的OpenStreetMap.xml数据格式,将该文件的格式进行统计,清洗,并导出成CSV格式的文件,最后倒入到SQLite中 本案例中所需的包 import csv import ...
- 利用OpenStreetMap(OSM)数据搭建一个地图服务
http://www.cnblogs.com/LBSer/p/4451471.html 图 利用OSM数据简单发布的北京地图服务 一.OSM是什么 开放街道图(OpenStreetMap,简称O ...
- Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器client(1)-墨卡托投影与坐标控制
(相关的代码能够从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们如今是准备做一个C/S架构的地图显示控件.就必定牵扯到坐标 ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
随机推荐
- VOJ 1067 Warcraft III 守望者的烦恼 (矩阵高速功率+dp)
主题链接 明显的 dp[n] = dp[n-k] + dp[n-k+1] + ... +dp[n-1]; 然后要用矩阵来优化后面的状态转移. 也就是矩阵 0 1 0 0 a b 0 0 ...
- WPF学习(6)路由事件
做过.net开发的朋友对于事件应该都不陌生.追溯历史,事件(Event)首先应用在Com和VB上,它是对在MFC中使用的烦琐的消息机制的一个封装,然后.net又继承了这种事件驱动机制,这种事件也叫.n ...
- hadoop-mapreduce在maptask执行分析
MapTask执行通过执行.run方法: 1.生成TaskAttemptContextImpl实例,此实例中的Configuration就是job本身. 2.得到用户定义的Mapper实现类,也就是m ...
- Simditor图片上传
上一篇文章(Simditor用法)仅仅是简单的默认配置,我们可自己定义工具栏button使其更丰富和实现上传图片功能 初始化编辑器 <script type="text/javascr ...
- shell脚本操作数据库
#!/bin/bash HOST_NAME="localhost" PORT=3306 USERNAME="root" PASSWORD="root& ...
- ASP.NET MVC流程解说
开始想这个标题时,,很忧郁什么标题将得到更好的叫什么,最后确定的解释,虽然稍0基金会,但是,这个概念是非常.我想出了一个相当的价格值的. ,開始. 1.MVC的基本开发流程 2.webform和M ...
- 为代码减负之<二>存储过程(SQL)
在上篇博客中介绍到了触发器的使用,而且当中也提到了触发器是个特殊的存储过程,那么什么是存储过程呢?他们 两个又究竟有什么差别呢? 事实上最基本的差别就是,触发器是当满足条件时系统自己主动运行的,而存储 ...
- 高速建成Android开发环境ADT-Bundle和Hello World
----下载JDK(Java Dev Kit) 官方下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html 兴许步骤 ...
- NSOJ 畅通工程(并查集)
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可). ...
- 【Android界面实现】可旋转的汽车3D模型效果的实现
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 今天要给大家介绍的是怎样实现可旋转的汽车3D模型. 先看实现效果 这仅仅是静态图,实际上,这个模型是能够依据 ...