Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R/ shiny :从readOGR变成read_sf,有光泽的传单弹出窗口坏了

R/ shiny :从readOGR变成read_sf,有光泽的传单弹出窗口坏了
EN

Stack Overflow用户
提问于 2020-02-08 04:36:55
回答 1查看 498关注 0票数 0

更新:在下面添加了代码修正和注释,我的弹出窗口正在工作.

这里有一个闪闪发亮的初学者,我有一个慢而闪亮的传单应用程序,所以我一直在使用profvis来寻找瓶颈。使用readOGR加载shapefile数据是主要问题。所以我做了一个改变--使用read_sf--事情要快得多。我所有的点和多边形都显示得很好,但是我的弹出窗口现在不起作用了,我不知道会发生什么。

预期的结果:从readOGR到read_sf的在使用数据填充弹出窗口方面没有任何区别。

结果:标签工作正常,但是弹出窗口根本没有出现.

下面是该应用程序的简化版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ui <- fluidPage(

  fluidRow(


    column(3,
           "",

           tags$head(
             tags$style(type='text/css', 
                        ".nav-tabs {font-size: 10px} ")),
            tabsetPanel(id='lefttabsetPanel',selected='placestab',

                       tabPanel(value="placestab",title='PLACES',
                                tags$iframe(name="myiframe2",seamless="seamless",src="http://45.56.98.26:8080/exist/rest/db/madrid/xml/tds-placeography.xml",style='height:95vh; width:25vw')
                       )
   ))
   ,
    column(9,
           "",


  tabsetPanel(id='my_tabsetPanel',
              tabPanel('Global Map',

                       withSpinner(leafletOutput(outputId="mymap",height = "95vh"),color="#cd0000",type = 5)
              )

  )
)
  )
)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server <- function(input,output, session){


# Core wrapping function
  wrap.it <- function(x, len)
  { 
    sapply(x, function(y) paste(strwrap(y, len), 
                                collapse = "\n"), 
           USE.NAMES = FALSE)
  }


### MAP 1
  output$mymap <- renderLeaflet({
    m <- leaflet() %>% 
      addMapPane("toplayer", zIndex=420) %>% addMapPane("layer2",zIndex=410)%>%
      setView(lng=-3.6898447, lat=40.4142174, zoom=3 ) %>%
addTiles(options = providerTileOptions(noWrap = TRUE), group="Open") %>% 

    addCircleMarkers(data = placeography,options = pathOptions(pane = "toplayer"),label=placeography$placename, fillColor="white",stroke = 2, weight=3, color="black",fillOpacity = 1,opacity=1,radius =3,group = "Puntos de interés",

# THIS IS WHAT'S BREAKING WITH read_sf

                     popup = mapply(function(x, y) {
                       HTML(sprintf("<div class='leaflet-popup-scrolled' style='font-size:10px;max-width:200px;max-height:150px; '><b><a href='http://45.56.98.26:8080/exist/rest/db/madrid/xml/tds-placeography.xml#%s' target='myiframe2'>%s</a></b></div>", htmlEscape(x), y))},
                       placeography$placeref,placeography$placename,  SIMPLIFY = F))%>%

      addLayersControl(baseGroups = c("Open"), overlayGroups = c("Puntos de interés"),position = c("topright"),options = layersControlOptions(collapsed = FALSE))

  })
  }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shiny)
library(leaflet)
library(rgdal)
library(htmltools)
library(tigris)
library(data.table) 
library(rmapshaper)
library(shinycssloaders)
library(sf)



#POPUPS WORKED FINE WITH READOGR
#placeography <- readOGR("shapefiles/places_points.shp")

#POPUPS NOT WORKING WITH READ_SF
#placeography <- read_sf("shapefiles/places_points.shp",quiet=TRUE)

#MOST POPUPS WORKING WITH THIS READ_SF
placeography <- read_sf("shapefiles/places_points.shp",quiet=TRUE, as_tibble = FALSE,stringsAsFactors=TRUE)

shapefiles (places_points)在这里:http://45.56.98.26/shapefiles/

更新:I通过“使用stringsAsFactors =TRUE”来解决这个问题(上面的例子也适用):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
placeography <- read_sf("shapefiles/places_points.shp",quiet=TRUE,as_tibble = FALSE,stringsAsFactors = TRUE)

不幸的是,我的一个标签(不包括在上面的示例中--参见下面)也使用了geojoin--它需要额外的一步来修复:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
placeographyareas<-read_sf("shapefiles/places_areas.shp",quiet=TRUE,as_tibble = FALSE,stringsAsFactors = FALSE)

histpeople<- read.csv("http://45.56.98.26/tds-data/readingmadrid-people-places-hist.csv",header=TRUE,stringsAsFactors = FALSE)

placeographyareashistpeople<-  geo_join(placeographyareas,histpeople,"placeref","placeref", how = "left")

#FIX: CONVERT TO FACTOR AFTER JOIN
placeographyareashistpeople$placeref <- as.factor(placeographyareashistpeople$placeref)

我在geojoin上收到警告:

警告:列placeref连接因子和字符向量,胁迫到字符向量

我的弹出式也没出现。改变组织人的"stringsAsFactors=TRUE“也不起作用。仍然希望更好地理解sf_read和readOGR之间的区别,因此我可以更好地解决这个问题。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-08 13:14:52

以防其他人在从readOGR切换到read_sf时遇到这种问题.我无意中找到了一个解决这个弹出式问题的过程,通过消除,并更新了上述问题的评论,以解释我在哪里作出的改变。

对于大多数弹出窗口,只要在read_sf中添加“read_sf = TRUE”就可以解决问题(read_sf的默认设置与readOGR相反)。在我的更复杂的弹出窗口中,它是进一步geojoin的产物,我需要在连接之后将placeref列更改为一个因子:

as.factor(placeographyareashistpeople$placeref).

有关工作代码,请参阅上文。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60126856

复制
相关文章
弹出窗口大全
【1、最基本的弹出窗口代码】 其实代码非常简单:  window.open(page.htmJavaScript
Java架构师必看
2021/03/22
4.3K0
message 弹出窗口
import  javax.swing.JOptionPane; public class gong {     public static void main(String [] args) {  
Gxjun
2018/03/22
4.4K0
message 弹出窗口
批量将本地gis数据导入postgis数据库
以前在处理gis数据的时候,都是直接导入本地shp素材、本地geojson素材,本地topojson素材,自从接触postgis数据之后,深感使用规范的存储系统来统一管理gis数据的好处,特别是数据量大了之后,优势便更加明显,你可以选择将很多需要做空间计算的步骤转移到Postgis数据库内进行计算,要知道Postgis提供的空间计算能力与R和Python这种应用导向的工具相比,优势要大得多。
数据小磨坊
2018/08/16
2.4K0
批量将本地gis数据导入postgis数据库
Flex 弹出窗口的例子
<?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"   l
用户3135539
2018/09/12
3.3K0
「R」Shiny 教程笔记
Inputs 是与用户交互的组件,用户获取用户输入。Outputs 是 Shiny 通过响应用户输入而在指定区域展示的输出,一般为图表。每个输入组件都有唯一标识符,需要展示的标签名作为参数,其他一些参数则应不同组件提供的不同功能而不同。每个输出组件也有它的唯一标识符。当在 UI 插入一个输出组件后,会自动分配一块空间用于展示,但展示的生成和逻辑都在服务端完成。
王诗翔呀
2021/04/07
6.7K0
「R」Rmarkdown与Shiny
Rmarkdown扩展了markdown的语法,所以markdown能写的,Rmarkdown能写,后者还提供了一些新的特性,特别是图表,很nice。
王诗翔呀
2020/07/02
3.2K0
jQuery的弹出窗口插件colorbox
支持 照片,照片组,幻灯片,ajax,内联 和 iframe 框架。 通过CSS 控制外观,使用用户可以很容易重新定制外观。 不需要更改 ColorBox 的 javascript 文件就可以重新设定其行为。 可以依靠 callback & event-hooks 进行拓展,不需要修改源代码。 非常友好,不需要修改现有的 HTML,所有的选项都通过 JS 设置。
全栈程序员站长
2021/12/23
5.5K0
「R」Shiny:用户界面(三)布局
在我们知道如何创建一系列输入和输出控件之后,我们需要学会如何在一个页面中对它们进行排列,以达到比较好的展示效果。这正是布局函数的工作,布局函数提供了一个应用高层次的可视化结构。
王诗翔呀
2020/07/06
3.7K0
「R」Shiny:用户界面(三)布局
jquery 模态窗口 弹出窗 simpleModal
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>SimpleModal Basic Modal Dialog </title> <link type='text/css' href='css/demo.css' rel='stylesheet' /> <link type='text/css' href='css/box.css' rel='stylesheet' /> </head> <body> <div id='container'>
用户5760343
2019/10/10
6.3K0
jquery 模态窗口 弹出窗 simpleModal
「R」Shiny:用户界面(二)输出控件
UI 中的输出控件创建了占位符,它随后被后端函数生成的内容所填充。与输入控件一样,输出控件的第 1 个参数也是一个唯一的 ID:如果你的 UI 有一个输入控件的 ID 是 "plot",那么你可以在后端中使用 output$plot 访问它。
王诗翔呀
2020/07/02
3.2K0
「R」Shiny:工作流(二)调试
当你开始编写应用程序时,几乎可以确定会出错。导致大多数错误的原因是我们心里的 Shiny 设计模型与 Shiny 实际的运行情况的不匹配。当你阅读本文时,你的思维模式将得到改善,从而减少犯错,而一旦犯错,就更容易发现问题。但是,要想首次使用代码就可以可靠地解决复杂的问题,就需要使用多种语言的多年经验。这意味着你需要构建一个强大的工作流来识别和修复错误。
王诗翔呀
2020/07/03
1.5K0
「R」Shiny:用户界面(一)输入控件
前面几篇文章我们构建了一个简易的 Shiny 应用,如果我们仔细观察过没有几行的实现代码就知道 Shiny 将前端(实现用户界面)和后端(服务逻辑)进行了分离,这让我们可以比较独立地来看待它们。接下来的几篇文章会关注前端,探索 Shiny 提供的 HTML 输出、输出和页面布局功能。
王诗翔呀
2020/07/06
5K0
「R」Shiny:用户界面(一)输入控件
R语言shiny~实现简单的GO富集分析
模仿的是 https://github.com/sk-sahu/sig-bio-shiny
用户7010445
2020/05/24
1.9K0
R 绘制交互式地图 Mapview
leaflet可以实现交互式地图,这里直接一中国为例,展示不同省份的population以及mapview上的实现。 leaflet基础篇可以去官网;
Jamesjin63
2022/10/25
1.1K0
R 绘制交互式地图 Mapview
Silverlight Telerik控件学习:弹出窗口RadWindow
几乎所有的业务系统都有弹出窗口,典型场景有二种 : 1、简单的弹出一个对话框显示信息,比如下面这样: 这个很简单,代码示例如下: DialogParameters pars = new DialogP
菩提树下的杨过
2018/01/23
3.6K0
Silverlight Telerik控件学习:弹出窗口RadWindow
js实现网页弹出窗口的代码详细教程
经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项、版权信息、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容易,只要往该页面的html里加入几段javascript代码即可实现。下面俺就带您剖析它的奥秘。 【1、最基本的弹出窗口代码】 其实代码非常简单: <script language="javascript"> window.open ('xx.html') </scri
Youngxj
2018/06/06
27.2K0
WPF 解决弹出模态窗口关闭后,主窗口不在最前
本文告诉大家如何解决这个问题,在 WPF 的软件,弹出一个模态窗口。使用另一个窗口在模态窗口前面。从任务栏打开模态窗口。关闭模态窗口。这时发现,主窗口会在刚才使用的另一个窗口下面。
林德熙
2018/09/18
14.8K2
显示为弹出窗口是什么意思(电脑总是弹出广告)
快快赶紧的把我的指甲刀那来,谁都不要拦我~~~~~~~~~~~~~~~~~~~~~~~~
全栈程序员站长
2022/08/01
3.7K0
显示为弹出窗口是什么意思(电脑总是弹出广告)
WPF 已知问题 全屏透明窗口弹出子窗口会闪烁
在 WPF 中通过设置 WindowStyle 为 None 以及 WindowState 为 Maximized 进入全屏,同时设置 AllowsTransparency 支持透明,此时弹出一个设置 WindowStyle 是 None 的子窗口,用 VisualStudio 2019 运行将会看到 子窗口 先显示出来,然后回到主窗口下面,然后再显示到主窗口上面
林德熙
2020/03/23
4.1K0
让Safari不再弹出新窗口
一直很喜欢Firefox点击页面中带有target=“_blank”链接的时候,不是新开窗口,而是打开一个新的标签。
EltonZheng
2021/01/26
3.5K0

相似问题

用有光泽的R制作交互式传单地图

12

R闪光传单弹出窗口中的includeHTML

10

如何美化有光泽的传单地图?

11

R闪光传单中的高级弹出窗口

11

有光泽的传单侧边点击事件

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文