我正在尝试在用户 lat & long 的 X 半径范围内找到商店。我已经阅读了很多关于该主题的问题、答案和文章。我的结果不必非常准确,但如果使用 Geography 列上的过滤器可能会出现误报,这是不可接受的。
鉴于上述要求,我认为不需要使用 Geography 数据类型并添加空间索引。我也不需要完美的圆半径。换句话说,边界框是可以接受的。所以我决定从 Alastaira 那里得到这个解决方案,他在这里就这个主题进行了非常丰富的会议。
现在我的应用程序是使用 CF EF4 和 SQL 2008R2 的 MVC。我最初想在 LINQ 中进行操作,就像我在任何其他数据库交互中一样,但老实说,我被以下几个步骤难住了:
DECLARE @point geography = geography::Point(40.7316, -73.9920, 4326);
我不认为 EF4 支持 geography 数据类型,所以这肯定会使事情复杂化。
然后我开始思考......鉴于数据库有点适合这种处理,我是否应该将 TSQL 包装在一个 SP 中,该 SP 会吐出一个记录集,然后我可以在其上使用 LINQ?
这是我的第一个空间数据库操作,因此欢迎任何想法或建议,我们将不胜感激。
如果 sp 是一个可行的解决方案,建议最好的实施方式会很棒。