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。

地址:http://openlayers.org/

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)。

地址:http://openscales.org/

8.      Modest Maps.轻量的、可扩展的开源库。设计者和开发人员能够用于设计交互的地图。提供了Actionscript3、python、Javascript、PHP、Processing、Cinder等语言的实现。

地址:http://modestmaps.com/

9.      Modestmaps-js.ModestMaps库的一种轻量级javascript实现。地址:https://github.com/stamen/modestmaps-js/wiki

10.  BruTile.基于C#语言实现的能够提供地图切片服务的库。地址:http://brutile.codeplex.com/

11.  Polymaps.利用SVG技术提供图片和矢量切片地图服务的javascript库。

地址:http://polymaps.org/

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

2.Traveling Salesman

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架构的更多相关文章

  1. [原]使用node-mapnik和openstreetmap数据初步搭建瓦片服务

    最近依然还是有点小忙,只能挤点时间来学习点,先解决有没有的问题,再解决好不好的问题:) 本文将承接上文<使用node-mapnik生成openstreetmap-carto风格的瓦片>的内 ...

  2. OpenStreetMap数据清洗(SQL&MonogoDB版本)

    目标:通过网上下载的OpenStreetMap.xml数据格式,将该文件的格式进行统计,清洗,并导出成CSV格式的文件,最后倒入到SQLite中 本案例中所需的包 import csv import ...

  3. 利用OpenStreetMap(OSM)数据搭建一个地图服务

     http://www.cnblogs.com/LBSer/p/4451471.html 图 利用OSM数据简单发布的北京地图服务   一.OSM是什么 开放街道图(OpenStreetMap,简称O ...

  4. Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器client(1)-墨卡托投影与坐标控制

    (相关的代码能够从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们如今是准备做一个C/S架构的地图显示控件.就必定牵扯到坐标 ...

  5. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  6. node服务的监控预警系统架构

    需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...

  7. 如何一步一步用DDD设计一个电商网站(二)—— 项目架构

    阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...

  8. 浅谈 jQuery 核心架构设计

    jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...

  9. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

随机推荐

  1. 小牟Andorid下面MD5具体实现的思路总结

    Android的开发往往需要一定数目demo 从今起MD5一些加密算法提取物 看看是如何实现的 首先,我们必须明确为什么加密? 1 数据安全处理 2 防止数据窃取 3 有效的避免恶意攻击 4 保证文件 ...

  2. 解决 Error:No suitable device found: no device found for connection &quot;System eth0&quot;

    一.底 我们安装在虚拟机,.想模拟几台server.这时就想直接复制已经有的安装好的虚拟机.这样比較省事,不要在反复的安装虚拟机并配置JAVA环境,省掉做相同的事情,这时直接复制,这样之前配置的JAV ...

  3. 我的第一次windows规划

    #include <windows.h>   LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; //WinMain功能被分配一 ...

  4. Linux通过使用Sambaserver示例

    Linux通过使用Sambaserver示例 实验环境: Vbox下一个.Rehat5虚拟机 使用sambaserver 目的:使用sambaserver将文件上传到server上 [root@rh5 ...

  5. 安卓模拟器错误: Could not open

    在进行android模拟器測试的时候,出现下面错误,进度条满了之后就没反应了.图例如以下: 引起这个问题的可能原因有非常多: 原因一:由于我们採用的是绝对路径定位.也就是说在环境变量里面把路径写死了, ...

  6. iOS 生成随机颜色(UIColor)

    #import <UIKit/UIKit.h> @interface UIColor (RandomColor) +(UIColor *) randomColor; @end #impor ...

  7. Jplayer小样

    最近应公司要求需要一个MP3播放的插件,网上找了很多插件,看来看去还是jPlayer用着最舒服也最容易扩展.所以就找了个资料研究了下,简单做了个小DEMO.支持实时控制列表,常见的播放器功能. jPl ...

  8. (大数据工程师学习路径)第四步 SQL基础课程----select详解

    准备 在正式开始本内容之前,需要先从github下载相关代码,搭建好一个名为mysql_shiyan的数据库(有三张表:department,employee,project),并向其中插入数据. 具 ...

  9. Ansible@一个有效的配置管理工具--Ansible configure management--翻译(四)

    不要未经书面许可转载 第三章是长,因为,我会分几个部分来翻译. Advanced Playbooks So far the playbooks that we have looked at are s ...

  10. DevExpress XtraReports 入门一 创建 Hello World 报表

    原文:DevExpress XtraReports 入门一 创建 Hello World 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更 ...