小编Chr*_*ris的帖子

如何确定一个点是否在shapefile中的形状内?

我有一个shapefile定义覆盖城市的形状.我还有一组由纬度和经度定义的坐标.

我需要能够确定这些点是否在shapefile中的任何形状内.

目前我正在尝试使用easygis.net来解决这个问题,但它似乎并没有起作用.

我相信shapefile中的坐标是UTM,但偏移为北,我不知道如何纠正它,将其转换为纬度/经度,或转换我的纬度/长度对匹配.

我一直在寻找像dotpatial和sharpmap这样的其他库,但我没有看到问题的直观答案.

与此同时,我确信这是一个已经解决的问题.是否有任何库可以轻松完成此操作?或者我如何将地图的偏移UTM转换为纬度/经度,或者我的纬度/经度点转换为此偏移量UTM?

c# gis

8
推荐指数
2
解决办法
5121
查看次数

FirstOrDefault的性能()

查看我今天使用性能分析器处理的webapp的一部分.我认为联盟正在造成一些延误,但却找到了其他令人惊讶的结果.

减速的原因之一似乎是FirstOrDefault.

这是一个非常简单的LINQ查询,如下所示:

foreach(Report r in reports)
    IDTOStudy study = studies.FirstOrDefault(s => s.StudyID == r.StudyID);
Run Code Online (Sandbox Code Playgroud)

我创建了一个小方法来复制我认为FirstOrDefault正在做的行为.

private IDTOStudy GetMatchingStudy(Report report, IList<IDTOStudy> studies)
{
    foreach (var study in studies)
    if (study.StudyID == report.StudyID)
        return study;

    return null;
}
Run Code Online (Sandbox Code Playgroud)

此方法将FirstOrDefault替换为如下所示:

foreach(Report r in reports)
    IDTOStudy study = GetMatchingStudy(r, studies);
Run Code Online (Sandbox Code Playgroud)

查看使用性能分析器运行的新代码显示FirstOrDefault需要两倍的时间来完成我的新方法.这令人震惊.

我必须做一些不正确的FirstOrDefault()查询.它是什么?

FirstOrDefault()完成整个查询然后采取第一个元素?

我怎样才能加快速度并使用FirstOrDefault()

编辑1:

我注意到的另一点是,分析器说我在这两个实现上都在最大化CPU.这也是我不关心的事情,也没想到.我添加的额外方法没有减少尖峰,只是将其持续时间缩短了一半.

编辑3:

将研究纳入字典大大改善了运行时间.这肯定是承诺代码的外观.但是不回答关于FirstOrDefault的问题.

编辑2:

这是一个简单的控制台应用程序中请求的示例代码.我的运行仍然表明,在大多数情况下,FirstOrDefault需要更长时间.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reactive.Linq;
using System.Reactive.Concurrency;
using System.Diagnostics;

namespace …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

6
推荐指数
1
解决办法
6380
查看次数

标签 统计

c# ×2

.net ×1

gis ×1

linq ×1