There are some really fast algorithms for finding a point inside of a polygon.
Google ‘point in polygon lua’ and see if you get any results.
You can then map out these polygon areas and detect if a player is inside of them or not.
You can raycast directly down from the player’s character and use the material to determine the biome. That solution will likely need you to ignore water since it looks like multiple biomes have water in your map. I would recommend going with the solution mentioned above if your map is too complex (in example: there is a lot of material blending).