声明:
1.当初自己在找缓冲区生成算法时,非常难找,网上实现的代码更是没有,只有寥寥的几句理论,在N天之后在网上搜到了两篇论文,是《一种GIS缓冲区矢量生成算法及实现》和《GIS缓冲区和叠加分析》,自己根据自己的理解,写出了这个实现的代码,希望能给需要的人员一点帮助,当然,写的非常简单,没有处理锐角情况(下一步计划将会实现),也没有处理自相交情况(正在解决......),大家若是有什么好的意见,请告诉我。谢谢。
2.本代码只实现了生成缓冲区边界点,没有处理锐角情况(下一步计划将会实现),也没有处理自相交情况(正在解决......),希望大家能给写帮助。谢谢。
3.代码之中有很多的不足,和考虑不到的情况,希望大家能给我一些指点,谢谢。
/***********************************************************************
* 文档作者: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 "";