Problem: Turfjs works well for client-side but I wanted to use it in server-side
Recently I had to check if a point lies inside of the polygon.
I was using spatial data in mysql. Mysql provides way(ST_Contains and some other ways) to check if a point lies in a polygon. But unfortunately it was not scanning all the rows.
I found turf.js was able to do this properly:
Here's I have used this with mapbox:https://sahilkashyap64.github.io/USA-zipcode-boundary/mapbox+turf2.html
var point = turf.point([lon, lat]);
const PointwithinFeatureCollection = (point) => {
var ptsWithin, found = false;
var zip = false;
turf.featureEach(data, function (currentFeature, featureIndex) {
var geom = turf.getType(currentFeature)
console.log('geom', geom);
if (geom == 'MultiPolygon') {
let coordinates = turf.multiPolygon(currentFeature.geometry.coordinates);
ptsWithin = turf.booleanPointInPolygon(point, coordinates);
console.log("Found in Multipolygon: : ", ptsWithin);
if (ptsWithin) {
zip = currentFeature.properties.title;
}
} else if (geom == 'Polygon') {
let coordinates = turf.polygon(currentFeature.geometry.coordinates);
found = turf.booleanPointInPolygon(point, coordinates);
console.log('found', found);
if (found) {
zip = currentFeature.properties.title;
}
}
});
if (zip === false) {
return {
"success": false,
"message": "Not within zipcode boundary",
"response_code": 403
};
} else {
return {
"success": true,
"data": zip,
"message": zip + " Zipcode is allowed.",
"response_code": 200
};
}
};
PointwithinFeatureCollection(point);
HERE'S THE PHP CODE:
Here's what I did to convert this code in php:-
1)I manually wrote all the turf function I was using.
2) Extracted those methods from the js file and wrote them in seperate js file. eg: point ,getType,featureEach,multiPolygon,polygon,booleanPointInPolygon I found these function is turf/helper,turf/invariant,turf/meta
- I used "npm install -g javascript-to-php" and then this js2php myfile.js > myfile.php
Note:You will have to manually edit some generated code and If you try to convert whole turf index.js sometimes it generates error
Top comments (0)