我的 SQL 服务器上有一个数据集,其中包含几百万个地理点,我想根据我在客户端创建的 DBGeography 矩形网格来检索这些地理点。基本上我想传入 ac# List of DBGeography ,我的服务器将返回适合这些几何图形的点列表,以及它们所属的 DBGeography 。我目前正在查询每个单独的矩形,如果我要拉的地图被分成大量的瓷砖,则会引起很多查询。显然,性能受到影响。
我目前正在使用下面的代码。
var pointsInRectangle = (from p in MyTable.Points
where MyRectangle.Intersects(p.Location)
select p).ToList();
问题:我将如何更改它以传入 DBGeography 矩形列表并取回相应的数据?
MyRectangle 是我在 C# 中创建的 DBGeography,而 Location 是我的 SQL 表中的点地理。此代码当前有效,但一次仅适用于一个单元格。我尝试了几件事,但无济于事。实体框架不是我的专长,但我也不知道如何直接使用 SQL(尽管如果需要解决方案,我可以使用 SQL)。
我还尝试将所有点(从较大的外部矩形)拉到客户端,然后在客户端进行处理以将其细分为网格。即使初始查询几乎是即时的(可能是因为索引),性能也很慢。