关于GIS,虽然类库中已经封装了很多GIS算法,程序员不需要自己来写算法,而通过调用即可实现,然而,有些算法可能不满足需求,还是需要自己动手来写。自动构面算法是GIS算法中很关键的一个算法,测绘人员一般通过DWG格式提交给数据处理人员的,而在DWG数据中,不存在“面”这个几何实体,如何根据封闭的边缘线生成正确的面,成为地理数据生产过程必须解决的问题。我将分章为大家介绍,自动构面算法的实现。
首先,需要建立 线 和 点 的数据结构:
public class Edge //边的数据结构
{
private int edgeid;
public int EdgeID
{
get { return edgeid; }
set { edgeid = value; }
}
//边的实体
private IPolyline edgePolyline;
public IPolyline EdgePolyline
{
get { return edgePolyline; }
set { edgePolyline = value; }
}
private int starpoint;
public int Starpoint
{
get { return starpoint; }
set { starpoint = value; }
}
private int endPoint;
public int EndPoint
{
get { return endPoint; }
set { endPoint = value; }
}
//边的方向
private bool direction = false;
public bool Direction
{
get { return direction; }
set { direction = value; }
}
//边的逆方向是否已经搜索
private bool reverseDirection = false;
public bool ReverseDirection
{
get { return reverseDirection; }
set { reverseDirection = value; }
}