您的位置:首页 > 编程语言 > C#

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

2016-12-06 01:09 721 查看
一、多边形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;
}

授人以鱼不如授人以渔,我就不给出详细的代码了(这是“我很小气”的一种委婉表达)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息