使用GMap控件读取.shp多边形文件(shapefile)

一、多边形shp文件结构

从此博客:SHP文件结构

其中记录多边形的shp文件简单概括为这张图(看不清楚可以右键图片-在新标签页中打开,或者下载查看)


二、构造GMapPolygon

                    //生成一个环
                    GMapPolygon polygon = new GMapPolygon(points, "");
                    polygon.Fill = new SolidBrush(Color.FromArgb(55, Color.Orange));
                    polygon.Stroke = new Pen(Color.Orange, 1);

                    //添加到图层中
                    /*
                     * 之前的操作,构造一个border图层,专门用来储存polygon,添加到控件的图层集合中
                    GMapOverlay bor=new GMapOverlay();
                    this.gMapControl1.Overlays.Add(border);
                     */
                    border.Polygons.Add(polygon);


三、关于内环

GMap控件不支持从一个多边形中“挖洞”的操作,在判断一个marker或点是否位于“正常区域”中(位于外环但不位于内环中)时,可以借助GMapPolygon的IsInside方法

        private bool is_inside(PointLatLng a)
        {
            int sum = 0;
            try
            {
                foreach (GMapPolygon polygon in border.Polygons)
                {
                    if (polygon.IsInside(a))
                    {
                        sum++;
                    }
                }
            }
            catch (Exception)
            {
                return false;
            }
            return sum == 1 ? true : false;
        }

授人以鱼不如授人以渔,我就不给出详细的代码了(这是“我很小气”的一种委婉表达)

发布了30 篇原创文章 · 获赞 9 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章