首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在内存中使用FeatureSet和特性DotSpatial

在内存中使用FeatureSet和特性DotSpatial
EN

Stack Overflow用户
提问于 2017-04-28 06:01:10
回答 1查看 1.1K关注 0票数 0

我是DotSpatial的初学者,遇到了一个问题。我尝试使用内存特性(只在Map中使用),直到用户按下保存按钮。其基本思想是用户导入一些dxf文件,并在featureset还没有全部就绪的情况下,根据层名创建功能重置,并为来自dxf的每个polyline创建将添加到功能重置中的功能。

代码语言:javascript
复制
 public IFeature AddPoligons(EntityObject polyline, List<Text> textInDxf)
{
    IFeatureSet featureSet = null;
    //Getting the right featureset from map
    foreach (var x in appManager.Map.GetPolygonLayers())
    {
        if (!string.Equals(x.DataSet.Name, layerName)) continue;

        featureSet = x.DataSet as FeatureSet;
        break;
    }
    var polygon = CreatePolygon(polyline);

    //Creating feature and adding to FeatureSet
    var feature = featureSet.AddFeature(polygon);

    //Populating DataRow with information
    AddinfoIntoDataTable(feature, polygon, textInDxf);
    return feature;
}

一切看起来都很好,地图上更新了新的多边形,可以选择它们,从数据表中查看信息,但是,当我试图删除所选的特性(多边形)时,它会抛出一个IndexOutOfRange异常。

我在那里做错什么了?

请帮帮我!谢谢你,为我糟糕的英语道歉。

当我首先创建featureSet时,我将它保存在磁盘上,然后用Map.AddLayer()方法加载到map中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 21:09:14

与此同时,我在CodePlex-DotSpatial论坛上找到了解决方案,并由Jany发布。这个想法是在针对FeatureSet的每个操作之后调用这个代码(添加、删除、移动)。

代码语言:javascript
复制
featureLayer.DataSet.UpdateExtent();
featureLayer.DataSet.InitializeVertices();
featureLayer.LabelLayer?.CreateLabels();
if(save)
{
    featureLayer.DataSet.Save();
    featureLayer.DataSet.Close();
}
featureLayer.AssignFastDrawnStates();
AppManager.Map.Refresh();
AppManager.Map.ResetBuffer();

其中featureLayer是IFeatureLayer。

有一个问题:

如果我们用AppManager.Serialization.SaveProject()保存项目,然后打开项目AppManager.Serialization.OpenProject(),问题就会再次出现。作为解决这一问题的方法,我在打开项目后调用了保存方法,简而言之,如下所示:

代码语言:javascript
复制
public void Save()
{
     foreach(var featureLayer in AppManager.Map.GetPolygonLayers())
     {
         featureLayer.DataSet.Save();
    }
}

希望这能帮到别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43673035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档