changyiran 发表于 2014-11-6 21:40:24

如何判断一多段线位于另外一多段线的内部?

我想编写一个程序,就是当一个多段线大部分面积(大于自身面积的50%)位于另一多段线的内部时,认为此多段线位于另一多段线的内部。但是代码不知如何编写,还望大神们指教!

lsjj 发表于 2014-11-6 22:27:19

用region union面積比對,你會有概念

自贡黄明儒 发表于 2014-11-7 14:16:48

平面对象
1 先判断有无交点,如果没有交点,那取线上一点是否在别一多边形内。
2 如果只有一个交点,判断线上另一点是否在多边形内
3 如果有2个交点,肯定不在多边形内了。

changyiran 发表于 2014-11-7 14:32:41

lsjj 发表于 2014-11-6 22:27 static/image/common/back.gif
用region union面積比對,你會有概念

用面域对象感觉对程序运行速度有较大影响,所以想试下有没有其他判断方法!

changyiran 发表于 2014-11-7 14:34:42

自贡黄明儒 发表于 2014-11-7 14:16 static/image/common/back.gif
平面对象
1 先判断有无交点,如果没有交点,那取线上一点是否在别一多边形内。
2 如果只有一个交点,判断 ...

你这个方法是针对一多边形完全在另一多边形内,而我想要的是如果一多段线的大部分面积(大于自身50%)在另一多边形内,即可认为该多边形在另一多边形内。黄工可有比较好的算法?

changyiran 发表于 2014-11-8 14:38:49

这个问题难道只能用面域解决吗?高手出马帮个忙啊!

lyqiezi 发表于 2014-11-10 21:21:13

一个正方形旋转45度形成的另一个正方形,也算在自己内部吗?

logoin 发表于 2014-11-10 22:11:13

这个要看你要操作对象的个数,如果个数少,用面域是一个好办法

lht 发表于 2014-11-11 00:12:42

将两条多段线闭合,同时选两条多段线为充填对象,得到一充填面积,以充填面积的大小作为判断条件,设大的多段线面积为A,充填面积为B。A=B时小多段线50%面积包含在大多段线内;A<B时小多段线50%以下的面积包含在大多段线内;A>B时小多段线50%以上的面积包含在大多段线内。楼主试试看行不行。

changyiran 发表于 2014-11-16 13:49:36

lht 发表于 2014-11-11 00:12 static/image/common/back.gif
将两条多段线闭合,同时选两条多段线为充填对象,得到一充填面积,以充填面积的大小作为判断条件,设大的多段线 ...

用充填对象是不是得用command函数,这样循环多次的话运行效率很低啊
页: [1] 2
查看完整版本: 如何判断一多段线位于另外一多段线的内部?