如何在Java中检查线串是否与多边形相交

如何在Java中检查线串是否与多边形相交,java,mapbox,polygon,intersection,Java,Mapbox,Polygon,Intersection,我试图生成一个linestring,以避免在地图上出现多个多边形,但为此,我需要一种方法来检查linestring是否与多边形相交。最初,我尝试使用此方法,该方法采用线串端点的坐标和多边形列表,以避免: public boolean Intersects(Double endPosLng, Double endPosLat, List<Polygon> polygons) { Boolean intersects = false; Point end = Point.fro

我试图生成一个
linestring
,以避免在地图上出现多个
多边形
,但为此,我需要一种方法来检查
linestring
是否与
多边形
相交。最初,我尝试使用此方法,该方法采用
线串
端点的坐标和多边形列表,以避免:

public boolean Intersects(Double endPosLng, Double endPosLat, List<Polygon> polygons) {
Boolean intersects = false; 
    Point end = Point.fromLngLat(endPosLng, endPosLat);
    for (Polygon poly : polygons) {
        if (TurfJoins.inside(end, poly)) {
            intersects = true;
        }
    }
    return intersects;
}
public boolean相交(Double-endPosLng、Double-endPosLat、列表多边形){
布尔相交=假;
点end=点fromLngLat(endPosLng,endPosLat);
用于(多边形:多边形){
if(内部(端部,多边形)){
相交=真;
}
}
返回交叉点;
}
但是
连接。内部(端点,多边形)
只考虑
线串的端点,因此线可能会切割多边形的角(参见下图),但仍然会在多边形外部结束,因此方法不会将其检测为交点

我考虑过传递
linestring
的先前坐标以生成
linestring
的一部分,但我认为Mapbox没有一种方法可以检查
linestring
是否在任何点与
多边形相交


如何检查
线串
是否与多边形相交?

首先,您的
似乎是错误的点类。您应该使用
java.awt.Point
,而不是使用任何GeoJSON库中的
Point
。接下来,如果多边形没有大量边,只需检查直线是否与任何边相交:

导入java.awt.geom.Line2D;
导入java.awt.Polygon;
类相交{
公共静态布尔相交(线2D线、多边形多边形){
对于(int i=0;i