如果我在JTS中有一个linestring
(或者通常是某种开放折线)并且它的方向由它的起始点定义,那么是否有一些聪明的方法可以告诉交叉点是否有一个关闭的polygon
是否linestring
是'进入'多边形或退出多边形:
intersection
相交的坐标linestring
边缘的polygon
沿着polygon
测试一个非常小的距离并测试哪个是'in',哪个是'out'来完成它。如果<form method="post" action="/process.php">
具有(不太可能的)非常尖锐的内部边缘,则可能会返回错误的结果。 答案 0 :(得分:1)
检查component.jsx
段的起始点是在多边形内部还是外部,以确定它是进入还是退出var documentRow = _dsACL.Documents.Where(o => o.ID == id).FirstOrDefault();
。简单的代码示例:
linestring
此代码并未涵盖所有可能性。例如。如果单个段多次与多边形相交(输入+退出),则此示例中不包含此内容。在这种情况下,只需计算交叉点的数量,并在交点之间创建相应的线串数。
答案 1 :(得分:0)
回答我自己的问题 - 对于有类似问题的人。 我最后根据交叉点的数量编写了一些代码(因为我已经通过JTS获得了这些代码)。想法源于crossing number algorithm和odd-even rule的内容。
'规则'(我认为没有例外,可能是错误的)是:
作为伪代码,类似这样:
Get intersection_points between polyline and closed polygon // using JTS.intersect()
Sort intersection_points along chainage of polyline
if polyline start_point in polygon // using JTS.contains()
first intersect_point is an EXIT, next is an ENTER, EXIT, ENTER and so on alternating along chainage.
else //start point not in polygon
first intersect_point is an ENTER, next is an EXIT, ENTER, EXIT and so on along chainage.
没有查看JTS intersect
和contains
方法的来源,所以可能会在我正在做的事情和那里的一些优化方面加倍。