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

前端之家收集整理的这篇文章主要介绍了sql – 在数据库varchar字段中存储GPS位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果有人提出任何建议,我将不胜感激:

如何在可以索引的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事物.

猜你在找的MsSQL相关文章