我有一个闪亮的应用程序,其中包括以下与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
。
所以我的问题是:
是否可以从RSConnect Server R会话中读取SQL Server中表格的空间数据?
如果没有,有没有办法将编码的空间数据从表格形式转换为R中的SpatialPointsDataFrame
?
版本
我正在使用rgdal v1.2-15,R版本3.4.2,SQL Server 2016,RSConnect v1.5.8-12
非常感谢您的任何建议 - 如果需要更多技术细节,请告诉我。
编辑:要以表格形式访问数据,我使用'ODBC驱动程序13 for SQL Server'驱动程序。我不确定我是否应该使用不同的驱动程序来处理空间数据。
答案 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就足够了(但也许不是必需的 - 之间没有经过测试的版本)。