【问题标题】:Get Latitude Longitude from Access to MSSQL从访问 MSSQL 获取经纬度
【发布时间】:2012-07-04 16:34:19
【问题描述】:

我有一个包含场地信息的 Access 表。我正在玩弄nearest neighbor 的东西,向网站查看者展示离他们最近的即将发生的事件。

主要的内部数据库是 Access,但网站从 MSSQL 中提取数据。我目前所做的是维护 Access 数据库,将表导出为 Excel 2003,将 .xls 传输到 Web 服务器,删除表并导入 .xls(在 SQL Management Studio 中)。

这是一个费力的过程,我刚刚意识到,当我导入 .xls 时,我必须重新设置所有空间信息(设置主键,将 lat/lng 的数据类型设置为地理,给它一个空间索引)。

有没有办法自动化这个过程?有没有办法在导入过程中设置数据类型和键?显然,正确的做法是使用 MSSQL 作为后端并放弃所有工作。不幸的是,我的上级并没有接受做出改变。

【问题讨论】:

  • blogs.lessthandot.com/index.php/DataMgmt/DataDesign/… 您可以从 MS Access 调用函数,请参阅最后的评论
  • 能否在 Access 中创建 ODBC 链接以访问 SQL Server 表?
  • @HansUp 我无法远程连接到 MSSQL。到目前为止,我能够连接的唯一方法是使用远程桌面或网页。这就是为什么我必须完成整个导出/转移/导入过程。
  • @Remou 我通读了一遍,但听起来他们更像是使用 MSSQL 作为后端并使用 Access 前端处理数据(这就是我想做的,但我由于安全策略,无法使用 Access 连接到 MSSQL)。我想要做的是在 Access 表中有 lat/lng 并让它们正确地转换为 MSSQL。不过,我可以使用脚本(相关页面的整个点)进行导入过程。
  • 您使用什么方法将.xls 文件传输到服务器? FTP 还是其他?

标签: sql-server ms-access spatial-index


【解决方案1】:

我在 page working with basic spatial data 上发现了一些信息,表明您可以将 lat/lng 作为单独的 float 字段和/或 POINT(lng,lat) 地理字段。

话虽如此,我可以在 Access 中有一个单独的 lat/lng 字段,它们应该导入到 MSSQL 中。通过该页面,我什至不需要地理字段(浮点数将使用一些额外的代码。假设我应该能够使用查询从浮点字段填充地理字段。

【讨论】:

  • 根据this page,您可以像这样进行转换...UPDATE [dbo].[Landmark] SET [GeoLocation] = geography::STPointFromText('POINT(' + CAST([Longitude] AS VARCHAR(20)) + ' ' + CAST([Latitude] AS VARCHAR(20)) + ')', 4326) GO
  • 如果您只进行查询,例如到商店的大致距离/识别某个位置 x 半径内的那些商店,我会坚持使用单独的浮点字段来表示纬度/经度。 geography 数据类型更适合处理更复杂的空间实体(线串、多边形等)或更复杂的查询类型(例如交叉点测试、拓扑关系等),但我想说它增加了一层不必要的复杂性在你的情况下。
猜你喜欢
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 2010-12-02
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多