So i did write a simple function to deal with my string declared in variable poly, as you can see I used a split() method and now i want to convert each of those string values to numerical values:
function toArray(polygon) {
final = polygon.replace('POLYGON ', '').replace('((', '').replace('))', '').split(',');
const arrOfNum = [];
final.forEach(str => {
arrOfNum.push(Number(str));
});
return arrOfNum
}
poly = 'POLYGON ((21.0446582 52.2367037, 21.0544858 52.2264265, 21.0702358 52.2307111, 21.0755573 52.2333133, 21.0771022 52.2349428, 21.0759006 52.2375447, 21.0716091 52.2421962, 21.0532413 52.238412, 21.0472331 52.2371242, 21.0446582 52.2367037))';
console.log(toArray(poly))
I'm trying to convert strings to a numerical values but I'm getting this result:
[NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]
Later on i want to get to this exact point:
[[20.7218472,52.2294069],
[20.9436337,52.0756329],
[21.0651699,52.2134223],
[20.7767788,52.2537934],
[20.7218472,52.2294069]]
The main goal of those operations is that i want to use this data to find out if a Point is within a Polygon. To do this I'm using this function:
function ray_casting(point, polygon){
var n=polygon.length,
is_in=false,
x=point[0],
y=point[1],
x1,x2,y1,y2;
for(var i=0; i < n-1; ++i){
x1=polygon[i][0];
x2=polygon[i+1][0];
y1=polygon[i][1];
y2=polygon[i+1][1];
if(y < y1 != y < y2 && x < (x2-x1) * (y-y1) / (y2-y1) + x1){
is_in=!is_in;
}
}
return is_in;
}
Thx everyone for the help!