OpenStreetMap架构

OpenStreetMap框架介绍

1.OSM平台开发

OpenStreetMap(简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。

OSM的地图由用户根据手提GPS装置、航空摄影照片、其他自由内容甚至单靠地方智慧绘制。网站里的地图图像及向量数据皆以共享创意姓名标示-相同方式分享2.0授权。

OSM网站的灵感来自维基百科等网站。这可从该网地图页的“编辑”按钮及其完整修订历史获知。经注册的用户可上载GPS路径及使用内置的编辑程式编辑数据。目前包括苹果和微软在内都在使用OpenStreetMap.

OSM架构如下图所示:

OSM的功能是由相互独立的组件共同完成的。OSM的地图数据是通过PosGIS存储在PostgresSQL数据库中,通过Mapnik渲染成地图切片,通过Leaflet提供用户交互的接口。

2.基于OSM进行开发:

2.1部署自己的地图:

1.      OpenLayers:OpenLayers 是一个专为WebGIS 客户端开发提供的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

时间: 2024-10-12 04:02:51

OpenStreetMap架构的相关文章

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

 http://www.cnblogs.com/LBSer/p/4451471.html 图 利用OSM数据简单发布的北京地图服务   一.OSM是什么 开放街道图(OpenStreetMap,简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图(wiki:http://wiki.openstreetmap.org/wiki/Main_Page).尤其值得称道的是,osm数据开源,可以自由下载使用. 二.OSM数据结构 OpenStreetMap包括空间数据以及属

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

(相关的代码能够从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们如今是准备做一个C/S架构的地图显示控件.就必定牵扯到坐标系和UI的界面控制. 1.墨卡托投影 眼下osm採用墨卡托投影,这个投影的原理能够用一个假想实验解释. 如果地球是一个透明的球体.在球体的球心有一个光源.我们把一张幕布沿着赤道卷起来.使之与地球内切,地球上的一个点在这块幕布上的投影就是其墨卡托投影位置. 上图中,地球半径是R=6378137米,可想

OpenStreetMap数据清洗(SQL版本)

目标:通过网上下载的OpenStreetMap.xml数据格式,将该文件的格式进行统计,清洗,并导出成CSV格式的文件,最后倒入到SQLite中 本案例中所需的包 import csv import codecs import pprint import re import xml.etree.cElementTree as ET from collections import defaultdict import cerberus import schema 1.统计文件中每一个标签出现的次数

下载-深入浅出Netty源码剖析、Netty实战高性能分布式RPC、NIO+Netty5各种RPC架构实战演练三部曲视频教程

下载-深入浅出Netty源码剖析.Netty实战高性能分布式RPC.NIO+Netty5各种RPC架构实战演练三部曲视频教程 第一部分:入浅出Netty源码剖析 第二部分:Netty实战高性能分布式RPC 第三部分:NIO+Netty5各种RPC架构实战演练

sqlserver 全库查询 带架构

网上现有的全库查询,无法识别自定义架构的数据库结构: declare @str nvarchar(10) declare @tablename varchar(50) declare @colname varchar(50) declare @counts int declare @sql nvarchar(2000)--以上定义变量 declare cur1 cursor for select a.name tablename,B.name colname from sys.objects a

Java精品高级课,架构课,java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,第三方支付,web安全,视频教程

36套精品Java架构师,高并发,高性能,高可用,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,P2P金融项目,大型分布式电商实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Elasticsearch,Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.java8新特性,P2P金融项目,程序设计,

搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi

里我们用三层架构搭建一个连接MySql的ASP.netCore模板的WebApi项目 首先添加WebApi项目(ASP.NetCore版本) 右键解决方案>新建项目> 选择Web>ASP.NET Core Web应用程序(.NET Core) 选择Web API 此时的目录结构: 添加实体层Entity 右键添加>新建项目>.Net Core类库 添加后的目录结构 BaseEntity: using System; using System.Collections.Gener

linux运维、架构之路-Lnmp架构部署

一.Lnmp架构原理 二. Lnmp架构软件安装 1.Nginx安装脚本 #!/bin/bash useradd -s /sbin/nologin -M www mkdir -p /server/tools/ cd /server/tools/ wget http://nginx.org/download/nginx-1.10.3.tar.gz tar xf nginx-1.10.3.tar.gz yum install pcre-devel openssl-devel -y cd /home/

微信红包的架构设计简介

@来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的文字(有误请提出,谢谢) 概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量. 微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储.. 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低. 实时性:为什么明明抢到红包,点开后发现没有? 答:2014年的红包一点开就知道金额,分两次操作