使用R语言优雅的获取任意区域的POI,道路,河流等数据

POI是“Polnt of Information”的缩写,中文可以翻译为“信息点”。是地图上任何非地理意义的有意义的点,如商店,酒吧,加油站,医院,车站等。POI,道路网,河流等是我们日常研究中经常需要使用的数据。

目前这些数据的获取都有一定的难度,有的下载需要付费,使用代码爬取又需要编写复杂的代码。有时很难成功获得我们想要的数据。

OSM地图数据是指来自OpenStreetMap(开放街道地图)项目的地理信息数据。OpenStreetMap是一个由全球志愿者共同维护的开源地图项目,OSM地图数据的特点包括开放性和可编辑性,这意味着任何人都可以贡献和改进地图数据。这些数据涵盖了道路、建筑、水系、地形等多种地理要素,具有丰富的地理信息和细节。先看看效果:

图片

今天使用R语言调用的就是OSM的各类数据,R语言中的osmdata 包提供有关全球各种空间属性和对象的空间数据。available_features() 函数可用于获取 OSM 中已识别特征的列表。可用功能的列表可以在 OSM wiki 中找到。


##   [1] "4wd_only"                    "abandoned"                  
##   [3] "abutters"                    "access"                     
##   [5] "addr"                        "addr:city"                  
##   [7] "addr:conscriptionnumber"     "addr:country"               
##   [9] "addr:county"                 "addr:district"              
##  [11] "addr:flats"                  "addr:full"                  
##  [13] "addr:hamlet"                 "addr:housename"             
##  [15] "addr:housenumber"            "addr:inclusion"             
##  [17] "addr:interpolation"          "addr:place"                 
##  [19] "addr:postbox"                "addr:postcode"              
##  [21] "addr:province"               "addr:state"                 
##  [23] "addr:street"                 "addr:subdistrict"           
##  [25] "addr:suburb"                 "addr:unit"                  
##  [27] "admin_level"                 "aeroway"                    
##  [29] "agricultural"                "alt_name"                   
##  [31] "amenity"                     "area"                       
##  [33] "atv"                         "backward"                   
##  [35] "barrier"                     "basin"                      
##  [37] "bdouble"                     "bicycle"                    
##  [39] "bicycle_road"                "biergarten"                 
##  [41] "boat"                        "border_type"                
##  [43] "boundary"                    "brand"                      
##  [45] "bridge"                      "building"                   
##  [47] "building:colour"             "building:fireproof"         
##  [49] "building:flats"              "building:levels"            
##  [51] "building:material"           "building:min_level"         
##  [53] "building:part"               "building:soft_storey"       
##  [55] "bus_bay"                     "busway"                     
##  [57] "capacity"                    "castle_type"                
##  [59] "change"                      "charge"                     
##  [61] "clothes"                     "construction"               
##  [63] "construction#Railways"       "covered"                    
##  [65] "craft"                       "crossing"                   
##  [67] "crossing:island"             "cuisine"                    
##  [69] "cutting"                     "cycleway"                   
##  [71] "denomination"                "destination"                
##  [73] "diet"                        "direction"                  
##  [75] "dispensing"                  "disused"                    
##  [77] "drinking_water"              "drive_in"                   
##  [79] "drive_through"               "ele"                        
##  [81] "electric_bicycle"            "electrified"                
##  [83] "embankment"                  "embedded_rails"             
##  [85] "emergency"                   "end_date"                   
##  [87] "entrance"                    "est_width"                  
##  [89] "fee"                         "female"                     
##  [91] "fire_object:type"            "fire_operator"              
##  [93] "fire_rank"                   "foot"                       
##  [95] "footway"                     "ford"                       
##  [97] "forestry"                    "forward"                    
##  [99] "frequency"                   "fuel"                       
## [101] "gauge"                       "golf_cart"                  
## [103] "goods"                       "hazard"                     
## [105] "hazmat"                      "healthcare"                 
## [107] "healthcare:counselling"      "healthcare:speciality"      
## [109] "height"                      "hgv"                        
## [111] "highway"                     "historic"                   
## [113] "horse"                       "hot_water"                  
## [115] "ice_road"                    "incline"                    
## [117] "industrial"                  "inline_skates"              
## [119] "inscription"                 "int_name"                   
## [121] "internet_access"             "junction"                   
## [123] "kerb"                        "landuse"                    
## [125] "lanes"                       "lanes:bus"                  
## [127] "lanes:psv"                   "layer"                      
## [129] "leaf_cycle"                  "leaf_type"                  
## [131] "leisure"                     "lhv"                        
## [133] "lit"                         "loc_name"                   
## [135] "location"                    "male"                       
## [137] "man_made"                    "max_age"                    
## [139] "max_level"                   "maxaxleload"                
## [141] "maxheight"                   "maxlength"                  
## [143] "maxspeed"                    "maxstay"                    
## [145] "maxweight"                   "maxwidth"                   
## [147] "military"                    "min_age"                    
## [149] "min_level"                   "minspeed"                   
## [151] "mofa"                        "moped"                      
## [153] "motor_vehicle"               "motorboat"                  
## [155] "motorcar"                    "motorcycle"                 
## [157] "motorroad"                   "mountain_pass"              
## [159] "mtb:description"             "mtb:scale"                  
## [161] "name"                        "name:left"                  
## [163] "name:right"                  "name_1"                     
## [165] "name_2"                      "narrow"                     
## [167] "nat_name"                    "natural"                    
## [169] "noexit"                      "non_existent_levels"        
## [171] "nudism"                      "office"                     
## [173] "official_name"               "old_name"                   
## [175] "oneway"                      "opening_hours"              
## [177] "opening_hours:drive_through" "operator"                   
## [179] "orientation"                 "oven"                       
## [181] "overtaking"                  "parking"                    
## [183] "parking:condition"           "parking:lane"               
## [185] "passing_places"              "place"                      
## [187] "power"                       "power_supply"               
## [189] "priority"                    "priority_road"              
## [191] "produce"                     "proposed"                   
## [193] "protected_area"              "psv"                        
## [195] "public_transport"            "railway"                    
## [197] "railway:preserved"           "railway:track_ref"          
## [199] "recycling_type"              "ref"                        
## [201] "reg_name"                    "religion"                   
## [203] "rental"                      "residential"                
## [205] "roadtrain"                   "route"                      
## [207] "sac_scale"                   "sauna"                      
## [209] "service"                     "service_times"              
## [211] "shelter_type"                "shop"                       
## [213] "short_name"                  "shower"                     
## [215] "sidewalk"                    "site"                       
## [217] "ski"                         "smoothness"                 
## [219] "social_facility"             "sorting_name"               
## [221] "speed_pedelec"               "start_date"                 
## [223] "step_count"                  "substation"                 
## [225] "surface"                     "tactile_paving"             
## [227] "tank"                        "tidal"                      
## [229] "toilets"                     "toilets:wheelchair"         
## [231] "toll"                        "topless"                    
## [233] "tourism"                     "tracks"                     
## [235] "tracktype"                   "traffic_calming"            
## [237] "traffic_sign"                "trail_visibility"           
## [239] "trailblazed"                 "trailblazed:visibility"     
## [241] "tunnel"                      "turn"                       
## [243] "type"                        "unisex"                     
## [245] "usage"                       "vehicle"                    
## [247] "vending"                     "voltage"                    
## [249] "water"                       "wheelchair"                 
## [251] "wholesale"                   "width"                      
## [253] "winter_road"                 "wood"
这些就是你可以调用的OSM数据种类

我们今天想使用的是某地区的医院,道路,河流等数据,它们分别属于"amenity","highway","waterway"。

下面我们开始具体代码:


#导入OSMdata和处理矢量数据的包
library(osmdata)
library(sf)

下一步就是创建 osmdata 查询,第一步是定义我们想要包含在查询中的地理区域,这通常是一个城市,osmdata提供了查询函数,十分方便。


nc_bb <- getbb("nanchang")
nc_bb
#这会返回南昌市的边界范围
##        min      max
## x 115.43870 116.56548
## y 28.15784 29.1223

确认没问题,我们就可以直接查询南昌市境内的所有医院:


nc_hospitals <- nc_bb %>%opq() %>%add_osm_feature(key = "amenity", value = "hospital") %>%osmdata_sf()

然后我们就获得了南昌市医院的数据:nc_hospitals,当然上面的代码由于一些不能科学上网或者服务限制的原因,不出问题的话肯定会出问题。所以下面贴出改进后的代码:

原理一样只是写法变化了,我们直接使用我们本地的南昌市数据


library(osmdata)
library(sf)
zh = st_read("E:/Arcgis 地图资源/市县/市县/南昌市.shp")
bb = st_bbox(zh)
bbnanc_hosiptal <- opq (bbox = c (115.43870,28.15784,116.56548,29.12239 )) %>% # add_osm_feature(key = "amenity", value = "hospital") %>%osmdata_sf ()

我们可以开心的可视化了:osm 数据支持“点”,“线”,“”面多种的数据类型,像医院我们就可以有面数据和点数据。我这里的demo将只展示面的,如果你想要南昌市医院的点数据,可以把“nanc_hosiptal$osm_polygons”改成“nanc_hosiptal$osm_point”


# install.packages("leaflet")
library(leaflet)leaflet() %>%addTiles() %>%addPolygons(data = nanc_hosiptal$osm_polygons,label = nanc_hosiptal$osm_polygons$name)

我们就可以得到:

图片

最后,如果你想要在arcgis,或者QGIS中使用,可以将数据转化成shp格式或者GeoPackage,ESRI Shapefile只支持255列,列名限制为10个字符,文件大小限制为10G,所以这里转成shp保存下来必须要根据这些要求进行处理。因此这里最推荐使用GeoPackage,它是一个轻量级的空间数据库容器,没有奇奇怪怪的限制。它只需要一句话:


nch = nanc_hosiptal$osm_polygons
st_write(nch, "G:/R/nanc_hospital.gpkg")

我们可以打开QGIS看看,如下图,没有任何问题。通过这个方法实际上我们可以获取很多有意思的数据,上面提到的数据我们都可以通过这个方法下载。在这里不得不感叹OSM的强大。

今天就到这里结束了,小编也是摸索了很久才给大家带来这篇推文的,如果大家觉得有用希望点赞转发支持一下,我是加拿大一枝黄花,我们下期再见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/485439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七、docker registry

七、docker registry 7.1 了解Docker Registry 7.1.1 介绍 registry 用于保存docker 镜像&#xff0c;包括镜像的层次结构和元数据。启动容器时&#xff0c;docker daemon会试图从本地获取相关的镜像&#xff1b;本地镜像不存在时&#xff0c;其将从registry中下载该镜像并保…

目标跟踪算法:SORT、卡尔曼滤波、匈牙利算法

目录 1 目标检测 2 卡尔曼滤波 3《从放弃到精通&#xff01;卡尔曼滤波从理论到实践》视频简单学习笔记 3.1 入门 3.2 进阶 3.2.1 状态空间表达式 3.2.2 高斯分布 3.3 放弃 3.4 精通 4 匈牙利算法 5 《【运筹学】-指派问题&#xff08;匈牙利算法&#xff09;》视…

OpenCV-图像阈值

简单阈值法 此方法是直截了当的。如果像素值大于阈值&#xff0c;则会被赋为一个值&#xff08;可能为白色&#xff09;&#xff0c;否则会赋为另一个值&#xff08;可能为黑色&#xff09;。使用的函数是 cv.threshold。第一个参数是源图像&#xff0c;它应该是灰度图像。第二…

【HarmonyOS NEXT】实现Tabs组件的TabBar从左到右依次排列

一、背景 系统提供的Tabs目前只能居中展示&#xff0c;暂不支持居左显示&#xff0c;现有的需求是需要Tabs从左往右排列显示&#xff0c;考虑通过Scroll和Row组件来实现 二、实现思路 通过Scroll和Row组件用来实现一个页签&#xff0c;在onclick事件中通过修改索引值和Tabs组…

16-03、JVM系列之:内存与垃圾回收篇(三)

JVM系列之&#xff1a;内存与垃圾回收篇(三) ##本篇内容概述&#xff1a; 1、执行引擎 2、StringTable 3、垃圾回收一、执行引擎 ##一、执行引擎概述 如果想让一个java程序运行起来&#xff0c;执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。 简…

FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称&#xff08;IOB&#xff09;2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …

【JVM】JVM基础教程(一)

目录 初识JVM JVM是什么&#xff1f; JVM的功能 解释、即时编译和运行 内存管理 常见的JVM JVM虚拟机规范 HotSpot的发展历程 JVM的组成 字节码文件详解 应用场景 以正确姿势打开字节码文件 ​编辑字节码文件的组成 基本信息 Magic魔数 主副版本号 常量池 接口…

无监督学习笔记 - A Cookbook of Self-Supervised Learning

无监督学习笔记 参考资料&#xff1a; 无监督学习Cookbook 几乎总结了所有的自监督学习方法,阅读过程中&#xff0c;根据参考文献索&#xff0c;进一步深入阅读每个方法具体得细节&#xff0c;掌握该论文&#xff0c;基本上就掌握了所有自监督学习的方法与基础。 统计学习方法…

Trimble X9三维激光扫描仪高效应对化工厂复杂管道扫描测绘挑战【沪敖3D】

化工安全关系到国计民生&#xff0c;近年来随着化工厂数字化改革不断推进&#xff0c;数字工厂逐步成为工厂安全管理的重要手段。而化工管道作为工厂设施的重要组成部分&#xff0c;由于其数量多、种类繁杂&#xff0c;一直是企业管理的重点和难点。 传统的化工管廊往往缺乏详…

synchronized的特性

1.互斥 对于synchronized修饰的方法及代码块不同线程想同时进行访问就会互斥。 就比如synchronized修饰代码块时&#xff0c;一个线程进入该代码块就会进行“加锁”。 退出代码块时会进行“解锁”。 当其他线程想要访问被加锁的代码块时&#xff0c;就会阻塞等待。 阻塞等待…

【vue3 for beginner】Pinia基本用法:存储user的信息

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 Pinia 简介 Pinia 是一个用于 Vue.js 应用的状态管理库&#xff0c;是 Vuex 的…

动态规划(二) ---斐波那契型深度解析

一、使用最小花费爬楼梯 题目链接&#xff1a;746. 使用最小花费爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a;给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一…

记录一下,解决js内存溢出npm ERR! code ELIFECYCLEnpm ERR! errno 134 以及 errno 9009

项目是个老项目&#xff0c;依赖包也比较大&#xff0c;咱就按正常流程走一遍来详细解决这个问题&#xff0c;先看一下node版本&#xff0c;我用的是nvm管理的&#xff0c;详细可以看我的其他文章 友情提醒&#xff1a;如果项目比较老&#xff0c;包又大&#xff0c;又有一些需…

Luma 视频生成 API 对接说明

Luma 视频生成 API 对接说明 随着 AI 的应用变广&#xff0c;各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多&#xff0c;从最初的写作&#xff0c;到医疗教育&#xff0c;再到现在的视频。 Luma 是一个专业高质量的视频生成平…

三维扫描检测在汽车制造中的应用

三维扫描&#xff0c;通过先进三维扫描技术获取产品和物体的形面三维数据&#xff0c;建立实物的三维图档&#xff0c;满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…

应用案例 | 船舶海洋: 水下无人航行器数字样机功能模型构建

水下无人航行器数字样机功能模型构建 一、项目背景 为响应水下装备系统研制数字化转型及装备系统数字样机建设的需要&#xff0c;以某型号水下无人航行器&#xff08;Underwater Unmanned Vehicle&#xff0c;UUV&#xff09;为例&#xff0c;构建UUV数字样机1.0功能模型。针对…

【unity小技巧】分享vscode如何开启unity断点调试模式,并进行unity断点调试(2024年最新的方法,实测有效)

文章目录 前言一、前置条件1、已安装Visual Studio Code&#xff0c;并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号]&#xff0c;2、在Visual Studio Code扩展中搜索Unity&#xff0c;并安装3、同时注意这个插件下面的描述&#xff0c;需要根…

P4645 [COCI2006-2007#3] BICIKLI(Tarjan+topsort求到某点的方案数)

P4645 [COCI2006-2007#3] BICIKLI - 洛谷 | 计算机科学教育新生态 思路&#xff1a; 我们考虑输出inf的情况&#xff0c;可以发现当从1出发到2经过的任意一个点处于一个环内时&#xff0c;路径条数是无穷多的。 有向图上从s到t的经过点&#xff0c;就是从s出发所能经过的所有…

基于eFramework车控车设中间件介绍

车设的发展&#xff0c;起源于汽车工业萌芽之初&#xff0c;经历了机械式操作的原始粗犷&#xff0c;到电子式调控技术的巨大飞跃&#xff0c;到如今智能化座舱普及&#xff0c;远程车控已然成为汽车标配&#xff0c;车设功能选项也呈现出爆发式增长&#xff0c;渐趋多元繁杂。…

【AI系统】模型压缩基本介绍

基本介绍 随着神经网络模型的复杂性和规模不断增加&#xff0c;模型对存储空间和计算资源的需求越来越多&#xff0c;使得部署和运行成本显著上升。模型压缩的目标是通过减少模型的存储空间、减少计算量或提高模型的计算效率&#xff0c;从而在保持模型性能的同时&#xff0c;…