Установить значение поля в точечном пространстве набора функций

Я создаю шейп-файл с использованием библиотеки DotSpatial в Microsoft Visual Studio и языке программирования C#. Шейп-файл состоит из слоя Polygon. Каждый полигон в слое должен иметь определенную ценность удобрения. Насколько я понимаю, я должен сначала создать поле (скажем, "Значение удобрения"), а затем добавить к нему соответствующее значение удобрения для каждого созданного полигона. Я создал поле и создал полигон. Тем не менее, я все еще пытаюсь найти правильный способ добавить значение поля в соответствующий полигон. Код как ниже:

// Create a feature set of type Polygon and set the projection
FeatureSet fs = new FeatureSet(FeatureType.Polygon);
fs.Projection = ProjectionInfo.FromAuthorityCode("EPSG", 3857);

// Get the DataTable and set the fertilizer field
DataTable table = fs.DataTable;
DataColumn FertilizerField = table.Columns.Add("Fertilizer Value", typeof(double));

// Adding a Polygon feature to the layer 
Coordinate[] coord = new Coordinate[]
{
    new Coordinate(0.0, 0.0),
    new Coordinate(1.0, 0.0),
    new Coordinate(1.0, 1.0),
    new Coordinate(0.0, 1.0),
    new Coordinate(0.0, 0.0)
};
fs.AddFeature(new Polygon(new LinearRing(coord)));

// TODO: HOW TO ADD FERTILIZER VALUE OF 100 TO THE FERTILIZER FIELD OF THIS POLYGON?

У меня вопрос, как мне установить значение поля для этого многоугольника?

1 ответ

Решение

Вы можете создать переменную Feature, а затем обновить содержимое в свойстве DataRow. Затем вам нужно будет добавить функцию в коллекцию компонентов напрямую, а не с помощью метода ярлыков AddFeature.

        // Create a feature set of type Polygon and set the projection
        FeatureSet fs = new FeatureSet(FeatureType.Polygon);
        fs.Projection = ProjectionInfo.FromAuthorityCode("EPSG", 3857);

        // Get the DataTable and set the fertilizer field
        DataTable table = fs.DataTable;
        DataColumn FertilizerField = table.Columns.Add("Fertilizer Value", typeof(double));

        // Adding a Polygon feature to the layer 
        Coordinate[] coord = new Coordinate[]
        {
            new Coordinate(0.0, 0.0),
            new Coordinate(1.0, 0.0),
            new Coordinate(1.0, 1.0),
            new Coordinate(0.0, 1.0),
            new Coordinate(0.0, 0.0)
        };
        // Create a Feature Variable to update the shape with attribute content.
        Feature f = new Feature(new Polygon(new LinearRing(coord)));
        // Modify the data row like any DataTable DataRow object.
        f.DataRow["Fertilizer Value"] = 100;
        // Add the fully created feature to the list of features directly.
        fs.Features.Add(f);
Другие вопросы по тегам