从 RStudio 连接服务器连接到空间 SQL 表
Connect to Spatial SQL Tables from RStudio Connect Server
我有一个闪亮的应用程序,其中包含以下与 SQL 服务器中的空间 table(包含从 ESRI shapefile 上传的数据)的连接:
dsn <- paste0("MSSQL:server=host\instance;",
"database=database;",
"UID=my_username;",
"PWD=my_password;",
"trusted_connection=no")
spdf <- rgdal::readOGR(dsn = dsn, layer = "my_spatial_table")
它在我的本地 Windows 机器上工作正常,并按预期检索空间数据。
当我将其发布到 RSConnect 时,连接失败。但是,我可以访问 table 本身并将其作为表格数据读入 R 会话(使用 RODBC
包和几乎相同的 DSN,但前面没有 MSSQL
)。
所以我的问题是:
是否可以从 RSConnect 服务器 R 会话的 SQL 服务器中读取 tables 的空间数据?
如果没有,有没有办法将编码的空间数据从表格形式转换为 R 中的 SpatialPointsDataFrame
?
版本
我正在使用 rgdal v1.2-15,R 版本 3.4.2,SQL Server 2016,RSConnect v1.5.8-12
非常感谢您的任何建议 - 如果需要更多技术细节,请告诉我。
Edit:为了以表格形式访问数据,我使用了 'ODBC Driver 13 for SQL Server' 驱动程序。我不确定是否应该为空间数据使用不同的驱动程序。
事实证明,细节决定成败 - 尽管两台机器 运行 具有相同版本的 R 和所有 R 包,但它们具有不同版本的底层 GDAL 和 PROJ4 系统组件,rgdal
使用。
教训:使用依赖于系统组件的包时要格外小心!
似乎 GDAL v1.11.4 和 PROJ4 v4.8.0 不足以让 readOGR()
从 MS SQL 服务器上正确读取空间表。
GDAL v2.2.0 和 PROJ4 v4.9.3 就足够了(但可能不是必需的 - 还没有测试中间的版本)。
我有一个闪亮的应用程序,其中包含以下与 SQL 服务器中的空间 table(包含从 ESRI shapefile 上传的数据)的连接:
dsn <- paste0("MSSQL:server=host\instance;",
"database=database;",
"UID=my_username;",
"PWD=my_password;",
"trusted_connection=no")
spdf <- rgdal::readOGR(dsn = dsn, layer = "my_spatial_table")
它在我的本地 Windows 机器上工作正常,并按预期检索空间数据。
当我将其发布到 RSConnect 时,连接失败。但是,我可以访问 table 本身并将其作为表格数据读入 R 会话(使用 RODBC
包和几乎相同的 DSN,但前面没有 MSSQL
)。
所以我的问题是:
是否可以从 RSConnect 服务器 R 会话的 SQL 服务器中读取 tables 的空间数据?
如果没有,有没有办法将编码的空间数据从表格形式转换为 R 中的
SpatialPointsDataFrame
?
版本
我正在使用 rgdal v1.2-15,R 版本 3.4.2,SQL Server 2016,RSConnect v1.5.8-12
非常感谢您的任何建议 - 如果需要更多技术细节,请告诉我。
Edit:为了以表格形式访问数据,我使用了 'ODBC Driver 13 for SQL Server' 驱动程序。我不确定是否应该为空间数据使用不同的驱动程序。
事实证明,细节决定成败 - 尽管两台机器 运行 具有相同版本的 R 和所有 R 包,但它们具有不同版本的底层 GDAL 和 PROJ4 系统组件,rgdal
使用。
教训:使用依赖于系统组件的包时要格外小心!
似乎 GDAL v1.11.4 和 PROJ4 v4.8.0 不足以让 readOGR()
从 MS SQL 服务器上正确读取空间表。
GDAL v2.2.0 和 PROJ4 v4.9.3 就足够了(但可能不是必需的 - 还没有测试中间的版本)。