加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

时空维度挖掘(二)之 leaflet

发布时间:2021-01-09 16:19:45 所属栏目:大数据 来源:网络整理
导读:副标题#e# 概述 本文是时空维度挖掘系列的第二篇,将引进空间挖掘中的重量级嘉宾 leaflet。在互联网竞争日益激烈的今天,一方面,online业务蓝海越来越少,扩展成本也越来越高,许多互联网企业开始介入地推,甚至出现了比如望京扫码一条街这样的经典案例;

leaflet 中提供许多与shiny结合的事件控制特性,比如对不同leaflet对象的点击、悬停、双击等等。

通过 leafletProxy() 可以对 leaflet 地图对象做额外的操作,比如切换图层,添加图层 addXXX,移除图层 clearXXX。

假设现在通过 leaflet 地图对象Id 为 map:

leafletOutput("map",width = "100%",height = "100%")

leaflet 交互事件 遵循这个命名规则: input$MAPID_OBJCATEGORY_EVENTNAME
对应的输出为一个list,比如

{
    "lat":23.12321,"lng":123.123123,"id":"map","featureId":"xxx",# 只有geojson才有
    "properties":"xxx" # 只有geojson才有
}

那么可以通过下面代码捕捉对应事件:

input$map_shape_click # 获取多边形点击
input$map_marker_click # 获取标识点击
input$map_geojson_click # 获取geojson点击
input$map_topojson_click # 获取 topojson点击
input$map_click # 任意点击地图位置 返回经纬度和图层id,以list的形式返回,input$map_mouSEOver # 鼠标悬停
input$map_mouSEOut # 鼠标移出
input$map_bounds # 地图视野边界, 通过bounds 可以控制数据只显示视野内来加快数据渲染效果。返回的结果以 north,east,south,west 的一组list呈现
input$map_zoom # 返回视野深度 通常在 0-19之间

地理围栏

目前 leaflet.extras 也支持更多的插件中的事件。比如可以通过多边形的编辑实现地理围栏:

leaflet::leaflet() %>%
    leafletCN::amap()%>%
    leaflet::setView(lng = 116,lat = 39,zoom = 12) %>% 
    addDrawToolbar(
    targetGroup='draw',editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions()))  %>%
  addLayersControl(overlayGroups = c('draw'),options =
                     layersControlOptions(collapsed=FALSE)) %>%
  addStyleEditor()

# 通过 input$MAPID_draw_all_features 会返回地理围栏的相关信息
# input$MAPID_draw_start 返回 绘制开始 信息
# input$MAPID_draw_stop 返回 绘制停止 信息
# input$MAPID_draw_new_feature 返回 创建绘制 信息
# input$MAPID_draw_edited_features 返回 编辑绘制 信息
# input$MAPID_draw_deleted_features 返回 删除绘制 信息

observeEvent(input$map_draw_all_features,{
  #print("All Features")
  num_features <- length(input$map_draw_all_features$features)
  if (is.null(unlist(input$map_draw_all_features$features[num_features]))){
    return(NULL)
  }#判空
  if(input$map_draw_all_features$features[[num_features]]$properties$feature_type != 'polygon') {
    return(NULL)
  }
  cords_list <- input$map_draw_all_features$features[[num_features]]$geometry$coordinates[[1]]
})

数据结构

这里有一个用于表述地理数据的特殊数据框,被称为 SpatialPointsDataFrame,通过它可以实现空间几何中点、线、面的表达。

它主要有下面5个部分组成:

  1. data: 原始的dataframe

  2. coords.nrs: 原始数据在那一列(nrow)

  3. coords: 坐标信息

  4. bbox: 通过一个矩形来定义地图视野中的边界

  5. proj4string: 这是坐标参考系统(Coor Reference System 简称 CRS)

算法

空间计算中点、线、面的数据

一、叠置分析

二、邻域分析

三、窗口分析

案例

参考资料

  • leaflet in R

  • awesome-gis

  • leaflet and mapbox in R

  • SF:R空间数据处理与可视化

  • SF:上海地铁数据可视化

  • bhaskarvk Rpub

  • leaflet.esri

  • karambelkar gis blog

  • 地图编辑器 geojson.io

  • spatial computation

  • raster cheatsheet

  • Raster Data in R

  • youtube: CRS Introduction

  • rpubs: visual Raster computation

  • stackoverflow: Raster image seems to be shifted using leaflet for R

  • sf: simple feature

  • Python pyproj

  • 泰森多边形 Voronoi

  • leaflet 教程

  • Geostatystyka

  • metro-systems-over-time

  • zoom-level

相关产品

  • 地图无忧

  • 智图

  • (编辑:PHP编程网 - 湛江站长网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!