GIS 点、线缓冲区生成算法的C#实现(V0.95)

这篇文档介绍了如何使用C#实现GIS线缓冲区边界生成算法,包括获取线左侧和右侧缓冲区边界点的方法。代码适用于一系列逆时针顺序的坐标,但未处理锐角和自相交情况。提供了计算向量夹角、交叉乘积等辅助方法。
摘要由CSDN通过智能技术生成

声明:

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 "";

    

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值