加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 在数据库varchar字段中存储GPS位置

发布时间:2020-12-12 06:59:04 所属栏目:MsSql教程 来源:网络整理
导读:如果有人提出任何建议,我将不胜感激: 如何在可以索引的varchar字段中有效地存储gps(或任何浮点数). 背景: 我们开发了一个内容管理系统,可以有效地存储任何类型的文件和一组元数据.此文件/元数据存储如下: file_table metadata_table---------- -----------
如果有人提出任何建议,我将不胜感激:

如何在可以索引的varchar字段中有效地存储gps(或任何浮点数).

背景:

我们开发了一个内容管理系统,可以有效地存储任何类型的文件和一组元数据.此文件/元数据存储如下:

file_table              metadata_table
----------              --------------
file_id         ->      file_id (number)
file_name               metadata_id (number)
file_location           metadata_value (varchar)
...etc

我被要求为地理标记文件提供支持(即将gps坐标存储为元数据).此外,我们还希望支持具有多个地理标记的文件.

现在据我所知,我有几个选择:

1)将纬度和经度存储在相同的metadata_value varchar中(例如’52.4343242,-1.32324′).

我如何查询此字符串?有什么聪明的我可以使用sql,允许我查询字符串的“组件”?我可以将坐标存储为xml字符串 – 这会有帮助吗?如何有效地编制索引?

2)将纬度和经度存储为metadata_table中的单独行.

这个解决方案解决了支持更容易查询的问题(以牺牲复杂性和笨重为代价,特别是当我将每个文件存储多个地理标记时),但是我仍然面临着索引的问题.

我可以在查询时将varchars转换为浮点数,但是我不确定这是否会忽略我在metadata_table.metadata_value上的索引并执行表扫描.

3)创建专用浮点字段以存储gps数据.

这是最不可取的选项,因为它违背了设计的细节,为特定元数据添加数据库字段.并非所有文件都存储gps数据.

任何帮助或建议表示赞赏.

解决方法

您可以使用Oracle定位器. Oracle Spatial的免费子集可以执行各种不同的地理操作和空间数据索引: http://www.oracle.com/technology/products/spatial/index.html

通过使用列类型mdsys.sdo_geometry,您可以在数据库中存储点,点云,线,多边形和3D事物.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读