У меня много многоугольников и много точек, и я хочу найти такую точку, чтобы при проведении линии между этой точкой и многоугольником она не пересекалась ни с каким другим многоугольником. Поэтому в основном мне нужна точка, которая находится очень близко к многоугольнику, и между ними нет другого многоугольника.
Я попробовал следующий запрос, и он дает мне все точки, пересекаются ли они многоугольником или нет.
SELECT P.POINTLOC from pointTable P WHERE NOT MDSYS.SDO_OVERLAPBDYINTERSECT(P.POINTLOC," +
"MDSYS.SDO_GEOMETRY(2003,null,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1)," +
"MDSYS.SDO_ORDINATE_ARRAY(4, 226, 150, 254, 164, 240, 191, 212, 176,4,226))) = 'TRUE'";
Then I tried this query and it gives some correct points but miss a few correct points:
SELECT P.POINTLOC from pointTable P WHERE MDSYS.SDO_WITHIN_DISTANCE(P.POINTLOC," +
"MDSYS.SDO_GEOMETRY(2003,null,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1)," +
"MDSYS.SDO_ORDINATE_ARRAY(4, 226, 150, 254, 164, 240, 191, 212, 176,4,226)),'distance = 40') = 'TRUE'";
Может ли кто-нибудь указать, какой пространственный оператор Oracle лучше всего подходит для этой ситуации?