Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在R中的地理包上运行sql几何体函数_R_Sqlite_Rsqlite - Fatal编程技术网

是否可以在R中的地理包上运行sql几何体函数

是否可以在R中的地理包上运行sql几何体函数,r,sqlite,rsqlite,R,Sqlite,Rsqlite,我有一个地理包,包含数百万个交通点和一个高速公路区域层。我想在R脚本中提取高速公路区域内的点 可以使用库(RSQLite)和dbGetQuery查询属性数据,但空间扩展似乎不可用。我可能在尝试另一种更好的方法。下面是一个检索有效数据的查询,以及一个复制我使用任何几何函数收到的错误的简单查询 library(RSQLite) library(dbplyr) library(sqldf) #Connect to geopackage con <- db

我有一个地理包,包含数百万个交通点和一个高速公路区域层。我想在R脚本中提取高速公路区域内的点

可以使用库(RSQLite)和dbGetQuery查询属性数据,但空间扩展似乎不可用。我可能在尝试另一种更好的方法。下面是一个检索有效数据的查询,以及一个复制我使用任何几何函数收到的错误的简单查询

    library(RSQLite)
    library(dbplyr)
    library(sqldf)

    #Connect to geopackage
    con <- dbConnect(RSQLite::SQLite(), dbname = "Traffic_data.gpkg", 
    loadable.extensions = TRUE)

    #Select friday traffic
    Traffic_Friday <- dbGetQuery(con, "SELECT*
    FROM Traffic_data_points
    WHERE Day_ = 'Friday' ;")

    #But if I include ST_Within:
    Traffic_Friday <- dbGetQuery(con, "SELECT*
    FROM Traffic_data_points as tp, highway_buf as hb 
    WHERE tp.Day_ = 'Friday' and ST_Within(tp.geom, hb.geom) ;")
库(RSQLite)
图书馆(dbplyr)
库(sqldf)
#连接到地理包

con最后答案很简单。可以使用SF库中的st_read函数,而不是使用SQLite连接到地理包。它还允许sql查询,其中包括空间函数

    library(sf)

    Traffic_Friday <- st_read("Traffic_data.gpkg", "SELECT*
    FROM Traffic_data_points as tp, highway_buf as hb 
    WHERE tp.Day_ = 'Friday' and ST_Within(tp.geom, hb.geom) ;")
库(sf)

Traffic\u Friday this
ST\u Within()
是一个R函数吗?SQLite是一个非常基本的、非服务器、非企业的RDBMS(因此名称中有lite)。诸如GIS、XML、JSON等扩展功能是针对企业RDBMS的(例如Oracle、Postgres、DB2、SQL Server)。考虑开源PostgreSQL的扩展。@肖恩。本例中的“ST_in”是一个空间sql函数,而不是R。我认为在R中,SF库下有一个函数ST_in,它也有同样的功能,但我希望在数据库环境中这样做,因为它应该要快得多。@Parfait。谢谢你的回复。我认为这将是答案,虽然我希望不是,或者会有一个扩展或什么。我收到地理信息包中的数据,但Postgis目前还可以。谢谢,“空间sql函数”?您使用的是spatialite而不是sqlite吗?