为什么从点映射到多边形时Sharpmap返回不一致的结果?

骑士狐狸

我正在使用一个shapefile(shp),它具有一个名为“ ID”的附加字段。shapefile是干净的,没有任何重叠的多边形。当我将此shapeFile传递给以下函数时,我总是得到不一致的结果。(对于同一组纬度经度,返回的ID并不总是相同的)。

    public static long? GetIdFromLatLong(IProvider provider, double lat, double lon)
    {
        var matchingRowIds = new Collection<uint>();
        var vertex = new GeoAPI.Geometries.Coordinate(lon, lat);

        var ntsPoint = new NetTopologySuite.Geometries.Point(vertex.X, vertex.Y);

        var envelop = new GeoAPI.Geometries.Envelope(vertex);
        if (!provider.IsOpen)
        {
            provider.Open();
        }
        var ids = provider.GetObjectIDsInView(envelop);

        foreach (uint id in ids)
        {
            var geom = provider.GetGeometryByID(id);

            if (geom.Contains(ntsPoint))
            {
                matchingRowIds.Add(id);
            }
        }
        // Get region Id from RowId
        var matchedId = matchingRowIds.Count == 0
            ? null
            : matchingRowIds.Select(i => (long?) provider.GetFeature(i)["ID"]).FirstOrDefault(i => i != 0);
        return matchedId;
    }

我最初怀疑有多个多边形被匹配,并且FirstOrDefault导致我得到不同的结果,但事实并非如此,因为当我在此函数中设置断点时,matchingRowIds中始终只有一个条目。

我做错了吗/是否有更好的方法从shapefile中获取包含给定点的多边形?

注意:我正在使用SharpMap v1.0.4.1

骑士狐狸

我们在这里找到了问题。通过SharpMap v1.0.4.1访问shapefile并非完全是线程安全的,同一形状文件的多个线程调用了上述函数,这导致了并发问题。删除并行化解决了目前的问题。Sharpmap v1.1的最新版本似乎已解决了一些并发问题。

在v1.1的发行说明中找到了这一点-“同时读取同一shapefile的已修复问题(shx文件的锁定错误)”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Spark reduceByKey的结果不一致

来自分类Dev

为什么XmlNodeList.Count修改XML文档后返回不一致的结果?

来自分类Dev

为什么XmlNamespaceManager返回HasNamespace的结果不一致?

来自分类Dev

将点添加到SF映射时ggplot的行为不一致

来自分类Dev

映射到Rails路由关注点的控制器名称空间中的不一致

来自分类Dev

映射到Rails路由关注点的控制器名称空间中的不一致

来自分类Dev

Lucene返回不一致的结果计数

来自分类Dev

JSONObject的names()方法返回不一致的结果

来自分类Dev

CPPCheck返回不一致的结果

来自分类Dev

PHP开关返回不一致的结果

来自分类Dev

ListRows.Count返回不一致的结果

来自分类Dev

为什么Celery任务测试结果不一致?

来自分类Dev

为什么从类中取消设置变量会导致结果不一致

来自分类Dev

为什么SORT_REGULAR在PHP中产生不一致的结果?

来自分类Dev

使用尝试捕获:为什么每次查询结果集都不一致

来自分类Dev

为什么从类中取消设置变量会导致结果不一致

来自分类Dev

为什么FlatList的renderItem属性从数组返回不一致的数据?

来自分类Dev

映射彼此不一致

来自分类Dev

返回重复值的索引时不一致

来自分类Dev

为什么execv *()参数与execl *()不一致?

来自分类Dev

为什么AlarmManager触发不一致

来自分类Dev

为什么我的视图规格不一致?

来自分类Dev

GetFileAttributes不一致-为什么?

来自分类Dev

为什么git show缩进不一致?

来自分类Dev

为什么RegExp.test()不一致?

来自分类Dev

Ajax Post Request不一致,为什么?

来自分类Dev

为什么dunder方法不一致?

来自分类Dev

为什么DecimalFormat舍入不一致?

来自分类Dev

为什么setuid位不一致?

Related 相关文章

热门标签

归档