有没有用 R 和 openstreetmap下载 做地图的

利用OpenStreetMapOSM数据搭建一个地图服务
&/LBSer/p/4451471.html
图 利用OSM数据简单发布的北京地图服务
一、OSM是什么
& & & &开放街道图(OpenStreetMap,简称OSM)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图(wiki:)。尤其值得称道的是,osm数据开源,可以自由下载使用。
二、OSM数据结构
&& & &&OpenStreetMap包括空间数据以及属性数据。其中空间数据主要包括三种:点(Nodes)、路(Ways)和关系(Relations),这三种原始构成了整个地图画面。其中,Nodes定义了空间中点的位置;Ways定义了线或区域;Relations(可选的)定义了元素间的关系。
&& & & &属性数据Tags用于描述上述矢量数据基元。()
2.1. Node&
& & & &node通过经纬度定义了一个地理坐标点。同时,还可以height=*标示物体所海拔;通过layer=*&和&level=*,可以标示物体所在的地图层面与所在建筑物内的层数;通过place=*&and&name=*来表示对象的名称。同时,way也是通过多个点(node)连接成线(面)来构成的。
&2.2. Way &&
& & & &通过2-2000个点(nodes)构成了way。way可表示如下3种图形事物(非闭合线(Open polyline&)、闭合线(Closed polyline)、区域(Area&))。对于超过2000 nodes的way,可以通过分割来处理。
&&a)Open polyline&
& & & & 非闭合线:收尾不闭合的线段。通常可用于表示现实中的道路、河流、铁路等。
&&b)Closed polyline&
& & & & 闭合线:收尾相连的线。例如可以表示现实中的环线地铁。
& & & & 区域:闭合区域。通常使用landuse=*&来标示区域等。&
2.3. Relation&
& & & &一个Relation是用来描述两个或多个基元的相互关系(nodes, ways 或者其他的relations),相互的关系通过role来定义,包括:
& & & &a)route :定义公路、自行车道、铁路等
& & & &b)多个多边形:定义area例如建筑、河堤等
& & & &c)边界:装门用来定义行政边界
& & & &d)限制:用于描述限制比如&非左转&
& & & &标签不是地图基本元素,但是各元素都通过tag来记录数据信息。通过'key' and a 'value'来对数据进行记录(了解xml或者数据库的应该都比较清楚了吧?)。例如,可以通过highway=residential来定义居住区道路;同时,可以使用附加的命名空间来添加附加信息,例如:maxspeed:winter=*就表示冬天的最高限速。
三、OSM数据及下载
osm数据格式主要有以下几种,可以通过以下网站下载数据。
osm数据格式:
OSM XML & xml-format provided by the API
2)导入mapnik python bindings
m = mapnik.Map(600,300)
m.background = mapnik.Color( s = mapnik.Style()
r = mapnik.Rule()
polygon_symbolizer = mapnik.PolygonSymbolizer(mapnik.Color(
line_symbolizer = mapnik.LineSymbolizer(mapnik.Color(
m.append_style( ds=mapnik.Shapefile(file= layer = mapnik.Layer(
layer.datasource = layer.styles.append( m.layers.append(layer)
m.zoom_all() #将数据zoom_all,如果不用,结果将是空白
&8)渲染地图
最后我们得到一张png格式的世界地图:world.png
4.3.2 使用TileMill进行渲染
& & & Mapnik使用起来并不容易,尤其是配置样式的时候,下面我们使用TileMill进行渲染,TileMill的内核是Mapnik。
& & &&TileMill的好处是所见即所得,右边配置样式,左边能马上显示出结果。此外还可以将结果展示出来(下图就是利用TileMill渲染北京osm数据的结果)。
4.4 一体化解决方案
&GeoServer + OpenLayers +PostGIS叠加显示动态矢量数据。
安装geoserver
sudo apt-get update
sudo apt-get install unzip openjdk-6-jre
echo "export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64" && ~/.bashrc
source ~/.bashrc
unzip -a geoserver-2.3.5-bin.zip
cd geoserver-2.3.5/bin
./startup.sh &
地图相关博文:
地图点聚合优化方案
更多相关文章
如何在linux局域网内搭建一个dns服务,将主机名解析为ip? 公司内网测试主机较多,不想每增加一台机器,就更改所有主机的/etc/hosts文件.网上找到的搭建dns服务,都是将域名转换为ip,有没有简单的配置,可以直接将主机名转化为ip. 楼主是想实现ddns功能,一个简单的软件dnsmasq ...
IOS开发,如何搭建一个服务器接收手机客户端发送的json数据,实现客户端与服务器的数据交互. 服务器我想用java实现,但是不知道具体的部署过程.各位有没有做过ios后台服务器的.最后我使用的是webservice + Axis2实现的,发布成功了,实现了文件上传到服务器的功能.在网上看到使用AS ...
google新推出了一套验证码的服务--No Captcha,不再基于图灵测试,而是基于用户行为的判断,用户基本上体会不到验证的过程. 国内由于某种原因使用不了Google No Captcha 服务,所以请问一下如何自己搭建一个类似的服务? 需要采集大量的背景数据,基本上国内没有公司可以做,腾讯太 ...
我准备用nodejs结合Mongoose还有elasticsearch来搭建一个博客站内搜索引擎,支持字段筛选搜索(分类搜索,标签搜索)等功能,看了一些mongo和es的文章,下面是我对mongo和es的理解和问题. 问题一: 它的大概思路应该就是安装elasticsearch之后安装一个head插 ...
想利用WP做后台,做一个Hybird应用.我没做过HybirdApp,想利用JqueryMobile+Phonegap或Appcan来完成 刚装了一个名为JSON API的插件,的确可以导出JSON数据,不过好像还是有些问题的,例如复杂的Tags Post就没有数据,刚度娘发现说是WP4.0后,就已 ...
elk 日志分析+redis数据库可以创建一个不错的日志分析平台了,下面我们来看一篇在linux下利用elk+redis 搭建日志分析平台教程,希望例子对各位有帮助.这个是最新的elk+redis搭建日志分析平台,今年时间是日.Elk分别为 elasticsearch,logsta ...
目标:搭建一个Oracle到Oracle的Goldengate双向复制环境(支持DDL+DML).环境:OS:Red Hat Enterprise Linux Server release 5.5 (Tikanga)DB:Oracle Database 11g Enterprise Edition
一.安装前的准备工作:1.准备好实验中所需要的各种软件包:bind97.bind97-libs.bind97-utils.mysql.mysql-devel.mysql-server.postfix-2.9.6.tar.gz.dovecot.libtool-ltdl.libtool-ltdl-dev ...
文章利用实例来介绍了关于asp.net中xml读写库xmlcpp介绍(四):遍历搜索 代码 ...
Windows更新是闲事,但最近的更新 KB3035583 却被发现隐藏广告推送功能,今后 ...
OpenNMS 1.12.5 发布,此版本修复了一系列的 bug,包括使用 storeBy ...
Win8已上市1年多,随后就迎来Win8.1,但是这两款系统对市场没有重要的影响力,甚至低 ...
pig中,limit可以取样少部分数据,但有很多问题,比如数据不能少于10条,否则返回全部 ...
1.下载源码包,编译,安装
#tar xzvf quagga-0.0.tar.g ...
混搭看似漫不经心,实则出奇制胜.虽然是多种元素共存,但决不等同于胡穿乱配的毫无章法.优酷混 ...
Cura 1.3 发布,该版本实现了通知推送功能.Cura 是一个基于 Android 平 ...
发布日期:7更新日期:4受影响系统:Linux ker ...
还原Oracle数据库时出现ORA-19870和ORA-19573错误,如:RMAN&gt ...foursquare 为什么要放弃使用 Google 地图采用 OpenStreetMap 和 MapBox ? - 知乎23被浏览4522分享邀请回答6添加评论分享收藏感谢收起2添加评论分享收藏感谢收起查看更多回答2 个回答被折叠()获取OpenStreeiMap数据有很多种方式,这里就不详细说了。但是比较无奈的是,国内很多城市都没有单独的数据包可以下载,连广州都没有!!!小哥刚好就是需要广州的数据,研究了一段时间终于找到了一种方法,虽然有点笨,但是也挺管用的。方法核心就是利用osmosis的导出指定功能。功能描述如下图所示:
我们只需要知道我们所需要提取的城市的经纬度范围,就可以通过上述指令来提取地图数据。当然我们不需要把整个planet.osm都下载下来,就算下下来了我们的电脑处理起来也够呛的,可以只下载中国的数据。如果需要保证地图数据较新,推荐通过,Geofabrik中的数据一般都是一两天前的最新数据也可以在OpenStreetMap首页点击输出,在左侧选择进入,如下图所示:
例如广州市的经纬度范围是北纬22.26~23.56度,东经112.57~114.03度,可执行以下命令来提取数据,指令中的左右指的是经度,上下指的是纬度。
提取完成之后可以通过Maperitive软件来查看,如下图:
本文已收录于以下专栏:
相关文章推荐
win7 64bit,搭了两天才成功,分享一下。
1.获取国内任意一个城市的OpenStreetMap数据的一种方法
参见获取国内任意一个城市的OpenStreetMap数据的一种方法
提示:下...
把OSM的数据总结一下以后找的方便
http://en.wikipedia.org/wiki/OpenStreetMap wiki上的Data format,只有Nodes,Ways,Relatio...
经历了为期半年的考研,刚刚开通的博客也荒废了半年,如今终于又有时间学习android编程了,写写博客,就当是对自己学习进度的一种记录。
最近在弄毕业设计,老师要求开发一个导航软件,本来想着调用一下百度...
老板是搞交通的,要我从高德上抓数据放到自己的数据库中。说做就做!
XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解...
0.  前言从网友分享的面经来看,TCP的拥塞机制在今年腾讯面试中被提及了,可见不论是什么研发岗位,计算机网络的知识总是那么的重要。本科时候学的都忘了=。= 今天打算总结TCP的流量控制和拥塞控制。网...
0.  准备知识(1)ACK ,TCP协议规定只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1。(2)SYN,在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接...
0.  前言从我们在浏览器的地址栏输入http://blog.csdn.net/seu_calvin后回车,到我们看到该博客的主页,这中间经历了什么呢?简单地回答这个问题,大概是经历了域名解析、TCP...
XML介绍:Extensible Markup Language,即可扩展标记语言
一、使用SAX解析XMLSAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关...
他的最新文章
讲师:AI100
讲师:谢梁
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)利用openstreetmap在android应用中添加地图
OpenStreetMap是一个可供自由编辑的世界地图,它是由像您这样的用户创造的。OpenStreetMap允许您查看,编辑或者使用世界各地的地理数据来帮助您。
最近写android应用(长理校园通)的时候,想在自己应用上显示地图。考虑了google地图、百度地图、高德地图等等,但是运行了他们的samples后发现他们提供的地图都不是很详细,因为我需要具体到每个小建筑的名称,比如说我们宿舍楼的名字,还有就是要把我们寝室后面那条小路都给显示出来,哈哈。这些地图都没有多大可能会为我去把他们添加进他们的地图里面。但是OpenStreetMap不一样了,因为他的地图是由我们这样有兴趣的人自由编辑的,这样我就可以更详细地把我们学校显示在我的应用上面了,以后大一的学弟、学妹就不用愁了。
下面就看看具体的步骤:
1、首先建立自己的项目(和平常一样)
需要添加以下jar文件(记住是Android Dependencies,而不是reference de。。):
2、在AndroidManifest.xml添加以下权限说明
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&
&uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&
&uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&
&uses-permission android:name="android.permission.INTERNET" /&
&uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&3、编写layout文件
&?xml version="1.0" encoding="utf-8"?&
&RelativeLayout xmlns:android="/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" &
&org.osmdroid.views.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:enabled="true"
tilesource="MapquestOSM" /&
&/RelativeLayout&4、编写activity文件
package com.example.android.
import org.osmdroid.tileprovider.tilesource.TileSourceF
import org.osmdroid.util.GeoP
import org.osmdroid.views.MapC
import org.osmdroid.views.MapV
import android.app.A
import android.os.B
public class GeoMapActivity extends Activity {
private MapController mapC
private MapView mapV
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.map);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
mapController.setZoom(15);
GeoPoint point2 = new GeoPoint(28.3.004551);
mapController.setCenter(point2);
}5、运行程序你可以看见我的学校了
以下是我的应用截图:
你应该可以看出来,它还可以放大地图的。但由于我们学校的地图我还没有完全编辑好,所以还比较简略。有时间大家可以去编辑一下你们学校的地图,这样不仅让你从中获益,而且还为全世界的人提供了方便。有什么问题可以问我。
浏览: 10046 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 openstreetmap 瓦片 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信