/***********************************************************************
* 文档作者:dxj
* 创建时间:2010.3.7 20:17
* 文档说明:
* 本文件是线缓冲区边界生成算法的C#实现。
**********************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using DXJ.Teresa.GIS.GeoObject;
using DXJ.Teresa.GIS.Utility;
namespace DXJ.Teresa.GIS.Buffer
{
/// <summary>
/// 线缓冲区边界生成算法
/// </summary>
public class PolylineBuffer
{
/// <summary>
/// 根据给定的一系列有顺序的坐标,逆时针生成缓冲区的边界坐标。
/// </summary>
/// <param name="strPolyLineCoords">一系列有顺序的坐标</param>
/// <param name="radius">缓冲区半径</param>
/// <returns>缓冲区的边界坐标</returns>
public static string GetBufferEdgeCoords(string strPolyLineCoords, double radius)
{
//参数处理
if (strPolyLineCoords.Trim().Length < 1) return "";
string[] strCoords = strPolyLineCoords.Split(new char[] { ';' });
List<Coordinate> coords = new List<Coordinate>();
foreach (string coord in strCoords)
{
coords.Add(new Coordinate(coord));
}
//分别生成左侧和右侧的缓冲区边界点坐标串
string leftBufferCoords = GetLeftBufferEdgeCoords(coords, radius);
coords.Reverse();
&