Пересекается, но не содержит функцию с другой функцией в DotSpatial

Мне нужны только пересеченные функции, не полностью содержащиеся в DotSpatial, Если я использую feature.Intersects(), это дает мне пересеченные и содержащиеся функции и когда я использую feature.Contains()Дает мне только что содержащиеся особенности.

Я сделал это вручную, как это.

feature1.Intersects(feature2) && !feature1.Contains(feature2)

Есть ли DotSpatial Есть ли способ сделать это напрямую?

1 ответ

Таким образом, чтобы сделать это, не выполняя тест "Пересечения" и "Не содержит", вы можете использовать штрихи. Из Руководства по началу работы, которое вы можете найти здесь: Руководство по началу работы У штрихов должно быть нужное вам определение. Обратите внимание на пример внизу, что, несмотря на то, что учитываются все графства, само графство Placer не появляется в наборе результатов, но в каждом графстве вокруг него.

введите описание изображения здесь

    IFeatureSet counties;
    IFeature placer;

    private void Form1_Load(object sender, EventArgs e)
    {
        // Open a FeatureSet from a shapefile containing Counties
        counties = Shapefile.Open("D:\\Data\\Counties\\CntyBnds_ESRI.shp");

        // Loop through the features to find the Feature with the Name equal to "Placer"
        foreach (IFeature f in counties.Features)
        {
            if (f.DataRow["NAME"].ToString() == "Placer")
            {
                placer = f;
                break;
            }
        }

        // Add the counties layer to the map to show all the counties
        this.map1.Layers.Add(counties);
    }

    private void button1_Click(object sender, EventArgs e)
    {

        FeatureSet result = new FeatureSet();

        // Cycle thorugh the shapes using the Touches operation
        foreach (IFeature county in counties.Features)
        {
            if (county.Touches(placer))
            {
                // Add only the features that touch to the result dataset.
                result.AddFeature(county);
            }
        }

        // Add the result to the map.
        this.map1.Layers.Add(result);
    }

введите описание изображения здесь

Другие вопросы по тегам