使用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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章