OpenStreetMap架构

本文介绍了OpenStreetMap(OSM)的基本概念、架构及其开发工具。涵盖了如何部署地图、渲染地图切片的方法以及多种在线和离线导航服务的对比。此外,还详细列举了与OSM相关的搜索和地理编码服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/longshengguoji/article/details/38958369

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设计坚持简便、高性能和可用性好的思想,在所有主要桌面和移动平台能高效运作,在现代浏览器上会利用HTML5CSS3的优势,同时也支持旧的浏览器访问。支持插件扩展,有一个友好、易于使用的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

 


<think>嗯,用户正在寻找OpenStreetMap的备用域名来解决国内网络访问问题。这个问题很实际,因为OpenStreetMap在国内确实经常遇到访问困难的情况。 用户可能是个开发者或者GIS相关工作者,需要稳定访问OpenStreetMap数据。从ta提问的方式看,应该已经尝试过主域名发现不可用,现在需要替代方案。考虑到国内网络环境的特殊性,单纯推荐备用域名可能还不够,需要提供完整的访问策略。 让我整理下可行的解决方案: 首先想到的是官方提供的备用域名,比如tile.openstreetmap.org这个CDN加速的地址访问成功率较高。然后是社区维护的镜像站点,像a.tile.openstreetmap.fr这种法国镜像在国内访问速度不错。不过要提醒用户注意,这些镜像可能存在数据延迟。 对于开发者来说,使用Leaflet等库时配置自定义瓦片地址会更灵活。比如可以设置多个备用URL,当主域名失败时自动切换。另外,完全自建瓦片服务器虽然成本高,但确实是最稳定的解决方案。 用户可能还会关心这些方案的技术实现细节,所以需要准备Leaflet的配置示例。考虑到国内网络环境的波动性,建议同时提供多个方案组合使用,比如镜像站点+自建服务器混合方案。 最后要提醒法律风险,虽然OpenStreetMap数据是开源的,但大规模抓取可能违反服务条款。这个细节很重要,开发者容易忽略。</think>针对OpenStreetMap在国内访问困难的问题,以下是经过验证的备用方案及技术细节: ### 一、官方推荐备用域名(优先尝试) 1. **瓦片服务** ```text https://tile.openstreetmap.org/{z}/{x}/{y}.png ``` - 此为官方CDN加速地址,部分地区可直连 - Leaflet示例配置: ```javascript L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>' }).addTo(map); ``` 2. **主站镜像** ```text https://www.openstreetmap.fr ``` - 法国镜像节点,实测国内访问成功率较高 - 支持完整地图浏览/数据导出功能 ### 二、社区维护镜像站(稳定性波动) | 服务商 | 瓦片地址格式 | 区域限制 | |--------------|---------------------------------------|----------| | MapGrayscale | `https://tiles.wmflabs.org/bw/{z}/{x}/{y}.png` | 无 | | German Fork | `https://a.tile.openstreetmap.de/{z}/{x}/{y}.png` | 欧洲优先 | > **法律提示**:使用第三方镜像需遵守[ODbL许可协议](https://www.openstreetmap.org/copyright),商业应用需谨慎 ### 三、开发者自建方案(推荐长期方案) 1. **本地化部署步骤**: ```bash # 使用Docker部署Tile服务器 docker run -d -p 8080:80 overv/openstreetmap-tile-server ``` 2. 数据更新方案: ```python # 使用osmium工具增量更新 osmium apply-changes -o updated.osm.pbf base.osm.pbf changes.osc ``` ### 四、移动端优化方案 ```javascript // 高德地图与OSM混合方案 L.tileLayer('https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}', { subdomains: ['1','2','3','4'] }) ``` **访问策略建议**: 1. 基础应用:优先使用`tile.openstreetmap.org`官方CDN 2. 专业项目:自建TileServer + 季度数据更新 3. 合规要求:通过[GeoFabrik](https://download.geofabrik.de/)下载区域数据包离线使用 > **重要提示**:2023年OSM基金会已启用[新CDN架构](https://blog.openstreetmap.org/2023/07/19/modernizing-the-osm-tile-infrastructure/),建议开发者迁移至新端点`https://tile.openstreetmap.org`[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值