从RStudio Connect Server连接到Spatial SQL表

时间:2018-04-06 14:11:11

标签: r sql-server shiny rgdal

我有一个闪亮的应用程序,其中包括以下与SQL Server中空间表(包含从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时,连接失败。然而,我可以访问表本身并将其作为表格数据读入R会话(使用RODBC包,并使用相同的DSN,但前面没有MSSQL

所以我的问题是:

  1. 是否可以从RSConnect Server R会话中读取SQL Server中表格的空间数据?

  2. 如果没有,有没有办法将编码的空间数据从表格形式转换为R中的SpatialPointsDataFrame

  3. 版本

    我正在使用rgdal v1.2-15,R版本3.4.2,SQL Server 2016,RSConnect v1.5.8-12

    非常感谢您的任何建议 - 如果需要更多技术细节,请告诉我。

    编辑:要以表格形式访问数据,我使用'ODBC驱动程序13 for SQL Server'驱动程序。我不确定我是否应该使用不同的驱动程序来处理空间数据。

1 个答案:

答案 0 :(得分:0)

详细说明了魔鬼 - 尽管这两台机器运行相同版本的R和所有R软件包,但它们具有rgdal使用的基础GDAL和PROJ4系统组件的不同版本。 / p>

课程:使用依赖系统组件的软件包时要格外小心!

似乎GDAL v1.11.4和PROJ4 v4.8.0不足以让readOGR()在MS SQL Server上正确读取空间表。

GDAL v2.2.0和PROJ4 v4.9.3就足够了(但也许不是必需的 - 之间没有经过测试的版本)。