Свойство или индексатор ShapeRange.Parts нельзя присвоить - оно доступно только для чтения - PullRequest
0 голосов
/ 14 сентября 2018

это мой первый пост с просьбой о помощи .. при разработке программного обеспечения для чтения шейп-файлов я обнаружил следующую ошибку:

Свойство или индексатор 'ShapeRange.Parts' не могут быть назначены - это только для чтения

Фрагмент моего кода, где приведена ошибка.

var shx = new DSShapeRange(featureType) { Extent = geometry.EnvelopeInternal.ToDotSpatial() };
            shx.Parts = new List<DSPartRange>();

Функция, в которой находится строка:

private static DSShapeRange ShapeRangeFromGeometry(IGeometry geometry, double[] vertices, int offset)
{
            var featureType = geometry.OgcGeometryType.ToDotSpatial();
            var shx = new DSShapeRange(featureType) { Extent = geometry.EnvelopeInternal.ToDotSpatial() };
            shx.Parts = new List<DSPartRange>();
            var vIndex = offset / 2;
            var shapeStart = vIndex;

            for (var part = 0; part < geometry.NumGeometries; part++)
            {
                var prtx = new DSPartRange(vertices, shapeStart, vIndex - shapeStart, featureType);

                var bp = geometry.GetGeometryN(part) as IPolygon;

                if (bp != null)
                {
                    // Account for the Shell
                    prtx.NumVertices = bp.Shell.NumPoints;

                    vIndex += bp.Shell.NumPoints;

                    // The part range should be adjusted to no longer include the holes
                    foreach (var hole in bp.Holes)
                    {
                        var holex = new DSPartRange(vertices, shapeStart, vIndex - shapeStart, featureType)
                        {
                            NumVertices = hole.NumPoints
                        };
                        shx.Parts.Add(holex);
                        vIndex += hole.NumPoints;
                    }
                }
                else
                {
                    int numPoints = geometry.GetGeometryN(part).NumPoints;

                    // This is not a polygon, so just add the number of points.
                    vIndex += numPoints;
                    prtx.NumVertices = numPoints;
                }

                shx.Parts.Add(prtx);
            }
            return shx;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...