anwei003 发表于 2009-6-24 13:41:00

如何设置封闭polyline或者LWpolyline的第一个点啊!

       我写了一个程序提取一个封闭多段线的坐标!由于我希望左上角为第一个点!然后按顺时针方向赋值,可是有很多封闭多段线都是它的起点可能是任何位置,而且还有可能是逆时针的!因此这样得出的结果不符合要求!如果有圆弧好像更不好解决!我想求各位大虾帮帮忙!在下感恩戴德!永世不忘!谢谢

mccad 发表于 2009-6-25 21:01:00

把点取出来再排序,但怎样去判断哪个应该是第一个点,左上角,如果左上角有许多个点怎么办。

天之雨露 发表于 2009-6-27 06:40:00

本帖最后由 作者 于 2009-6-27 7:49:11 编辑 <br /><br /> <p>1、找出左上角:比较多段线上所有点x,y坐标,找出最小x,y,最大x,y,以最小最大xy为作水平方向</p><p>&nbsp; 上矩形,把多段线包在内部,计算多段线所有点到矩形左上角距离,找出距离最近那个点。这个点就</p><p>&nbsp; 是作为多段线的左上角(现在假设多段线第3点离矩形左上角最近)</p><p>2、把起点移到左上角:多段线上点是以数组方式依次排列的,第0点即起点。把多段线0点移到第1点,</p><p>&nbsp;&nbsp; 把第1点移到第2点,如些多次移动后产生新的多段线的第0点坐标与原来的第3点(第3点是离矩形左</p><p>&nbsp; 上角最近的点)重合,新的多段线的第1点坐标与原来的第4点重合,新的多段线的第2点坐标与原来</p><p>&nbsp; 的第5点重合,如些类推。</p><p>3、判断方向:把新生成点在左上角的多段线称之为α。比较多段线上所有点x,y坐标,找出最小x,y,最大</p><p>&nbsp;&nbsp; x,y,以最小最大xy为作水平方向上矩形,把α包在内部。以矩形左上角右下角坐标作一条直线,</p><p>&nbsp;&nbsp; 与α相交,交点为A,B(交点可能为多个)。现在产生新多段线β,β与α是一样的,不同之处β抱含</p><p>&nbsp;&nbsp; 了点A,B所以β点列表依次可以表标为&nbsp; 第0点 第1点 第2点 第3点 第A点 第5点 第6点 第7点 </p><p>&nbsp;&nbsp; 第B点 第9点 第10点 等等,如果A点到B点之间,第5点 第6点 第7点,大部分点落在直线AB右上</p><p>&nbsp;&nbsp; 角则判断为顺时针</p><p>&nbsp;&nbsp; 此判断方向方法不是100%有效,但我判断方向思路是这样的,你可以用类似思路或其它点线作参照<br/></p>

anwei003 发表于 2009-9-9 13:12:00

<p>thank you</p>
页: [1]
查看完整版本: 如何设置封闭polyline或者LWpolyline的第一个点啊!