上图两个ploygon在qgis上是相交的,但是使用 geometry1.intersects(geometry2) = false
原因:geometry2 的ploygon 为一条线段
String geom2 = "POLYGON ((13424522.607350014 3689604.6833999963, 13424515.744900092 3689602.2228004425, 13424514.623300763 3689588.520600244, 13424517.519300671 3689580.0576009, 13424531.934903784 3689577.296599313, 13424538.456499573 3689588.266200122, 13424536.184500214 3689600.5367996185, 13424522.607350014 3689604.6833999963))";
String geom1 = "POLYGON ((13424533.784500118 3689581.9672003356, 13424538.084499832 3689584.7631998626, 13424538.084499832 3689584.7631998626, 13424533.784500118 3689581.9672003356, 13424533.784500118 3689581.9672003356))";
// String geom1 = "LINESTRING (13424533.784500118 3689581.9672003356, 13424538.084499832 3689584.7631998626, 13424538.084499832 3689584.7631998626, 13424533.784500118 3689581.9672003356, 13424533.784500118 3689581.9672003356)";
Geometry ploygon2 = READER.read(geom2);
Geometry geometry1 = READER.read(geom1);
System.out.println(ploygon2.intersects(geometry1));
打印结果:false
解决办法:将geometry进行buffer(0.01)之后再进行判断
String geom2 = "POLYGON ((13424522.607350014 3689604.6833999963, 13424515.744900092 3689602.2228004425, 13424514.623300763 3689588.520600244, 13424517.519300671 3689580.0576009, 13424531.934903784 3689577.296599313, 13424538.456499573 3689588.266200122, 13424536.184500214 3689600.5367996185, 13424522.607350014 3689604.6833999963))";
String geom1 = "POLYGON ((13424533.784500118 3689581.9672003356, 13424538.084499832 3689584.7631998626, 13424538.084499832 3689584.7631998626, 13424533.784500118 3689581.9672003356, 13424533.784500118 3689581.9672003356))";
// String geom1 = "LINESTRING (13424533.784500118 3689581.9672003356, 13424538.084499832 3689584.7631998626, 13424538.084499832 3689584.7631998626, 13424533.784500118 3689581.9672003356, 13424533.784500118 3689581.9672003356)";
Geometry ploygon2 = READER.read(geom2);
Geometry geometry1 = READER.read(geom1);
System.out.println(ploygon2.intersects(geometry1.buffer(0.01)));
打印结果:true