Обычным if-else эта задача не решится. Это попадание точки в полигон. Если полностью описывать алгоритм, то нужно перебрать вектора (два соседних элемента в массиве, это один вектор) и смотреть с какой стороны вектора эта точка находится. Иначе говоря, при движении по оси Х пересекает она вектор или нет. Для этого используется косое умножение векторов. Суммируем и смотрим, если точка пересекла четное количество раз векторы, то она не входит в полигон, если не четное - попадает в площадь полигона.
Это мой работающий код, модели из GeoJSON.Net
public bool IsBelong(Point point, IGeometryObject geoGeometry)
{
var polygon = ((Polygon) geoGeometry).Coordinates;
var inPolygon = false;
var x = point.Coordinates.Latitude;
var y = point.Coordinates.Longitude;
var points = polygon[0].Coordinates;
for (var i = 0; i < points.Count - 1; i++)
{
if (((points[i + 1].Longitude > y) != (points[i].Longitude >= y))
&&
(x < (points[i].Latitude - points[i + 1].Latitude) * (y - points[i + 1].Longitude) / (points[i].Longitude - points[i + 1].Longitude) + points[i + 1].Latitude))
{
inPolygon = !inPolygon;
}
}
return inPolygon;
}