• DotSpatial 创建面状要素——含空洞


    private void toolStripButton23_Click(object sender, EventArgs e)
    {
    //选择图层
    FeatureSet fs = null;
    fs = (FeatureSet) map1.Layers[0].DataSet;

    //面层增加要素

    //定义坐标List
    List<Coordinate> polygonArray1 = new List<Coordinate>();
    polygonArray1.Add(new Coordinate(625105, 5050458));
    polygonArray1.Add(new Coordinate(627115, 5050486));
    polygonArray1.Add(new Coordinate(627103, 5048421));
    polygonArray1.Add(new Coordinate(625021, 5048466));
    polygonArray1.Add(new Coordinate(625105, 5050458));
    //创建外环
    var outerRing = new LinearRing(polygonArray1);

    //判断坐标数组是否为顺时针,否则数组反转
    if (CgAlgorithms.IsCounterClockwise(outerRing.Coordinates))
    {
    outerRing = new LinearRing(outerRing.Reverse());
    }
    //定义内环1——空洞1
    var hole1 = new LinearRing(new List<Coordinate>()
    {
    new Coordinate(626304, 5050188),
    new Coordinate(626721, 5050188),
    new Coordinate(626715, 5049777),
    new Coordinate(626394, 5049625),
    new Coordinate(626186, 5049743),
    new Coordinate(626208, 5050014),
    new Coordinate(626304, 5050188),
    });
    //是否为逆时针,否则反转,必须是逆时针的,否则创建的要素的图形异常
    if (!CgAlgorithms.IsCounterClockwise(hole1.Coordinates))
    {
    hole1 = new LinearRing(hole1.Reverse());
    }
    //定义内环2
    var hole2 = new LinearRing(new List<Coordinate>()
    {
    new Coordinate(625454, 5050228),
    new Coordinate(625876, 5050250),
    new Coordinate(625876, 5049710),
    new Coordinate(625426, 5049743),
    new Coordinate(625454, 5050228)
    });
    //是否为逆时针,否则反转,必须是逆时针的,否则创建的要素的图形异常
    if (!CgAlgorithms.IsCounterClockwise(hole2.Coordinates))
    {
    hole2 = new LinearRing(hole2.Reverse());
    }

    //——将hole1、hole2 添加到数组中,进行坐标翻转
    //LinearRing[] lr2 = { hole1,hole2 };

    ////make sure the holes are oriented counterclockwise
    //for (int i = 0; i < lr2.Length; i++)
    //{
    // if (!CgAlgorithms.IsCounterClockwise(lr2[i].Coordinates))
    // {
    // lr2[i] = new LinearRing(lr2[i].Reverse());
    // }
    //}

    //创建要素
    Polygon pP = new Polygon(outerRing, new ILinearRing[] {hole1, hole2});

    IFeature polygonFeature = fs.AddFeature(pP);
    polygonID = polygonID + 1;
    polygonFeature.DataRow["Text"] = polygonID;
    fs.InitializeVertices();
    fs.Save();
    map1.ResetBuffer();

    }

  • 相关阅读:
    OAuth2.0系列之授权码模式实践教程(二)
    OAuth2.0系列之基本概念和运作流程(一)
    OAuth2.0系列之单点登录SSO实现
    Mybatis系列之设置自动提交事务
    springMVC系列之@Responsebody接口弹出f.txt下载问题
    Oracle应用之批量递增更新数据脚本
    前端 自定义弹出框-提示框(一)
    IE不兼容问题 字符串格式化
    JS 打开本地应用软件
    PPT导出为图片
  • 原文地址:https://www.cnblogs.com/kogame/p/5122538.html
Copyright © 2020-2023  润新知