作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个基于位置的应用程序,人们可以查询在其位置 5 英里范围内创建的记录。
创建记录后,我会将纬度和经度存储在 Azure 表服务中。
获得此数据后,如何获取距我当前位置 5 英里范围内的所有记录?
谢谢。
最佳答案
为了优化 Azure 表存储查询,它们需要在分区键和行键上运行。解决方案可能是将纬度存储在分区键中,将经度存储在行键中。分区键和行键组合必须是唯一的(想想 SQL 中的主键)。我将使用此策略,如果您有相同纬度和经度的多个条目,那么您可以使用 ATS 的动态属性或 InsertOrMerge 将它们存储在同一行中。这样你就可以像这样查询:
IQueryable<Entries> query =
(from q in _table.CreateQuery<Entries>()
where q.PartitionKey.CompareTo(minLatitude) > 0
&& q.PartitionKey.CompareTo(maxLatitude) < 0
&& q.RowKey.CompareTo(minLongitude) > 0
&& q.RowKey.CompareTo(maxLongitude) < 0
select q);
您还可以巧妙地使用 PartitionKey 并使用它来存储一定范围的纬度或区域,以限制所需的分区数量。 SQL Azure 还支持geospatial queries
关于azure - 如何在Azure表服务上存储和查询空间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25176190/
我是一名优秀的程序员,十分优秀!