Я думаю, это происходит потому, что создаваемые вами полигоны не являются действительными geography
полигонами. Попробуйте создать многоугольники, используя правильный набор значений широты и долготы.
Выполнение того же кода с geometry
типом данных, похоже, работает.
DECLARE @g geometry = geometry::STMPolyFromText('MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 1)))', 4326);
select
geoMultiPolys = @g,
geoMultiPolysString = @g.ToString(),
buffered = @g.STBuffer(1),
bufferedString = @g.STBuffer(1).ToString(),
IsValid = @g.STIsValid()
Точно так же этот работает для географии
DECLARE @g geography = geography::STMPolyFromText('MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))', 4326);
select
geoMultiPolys = @g,
geoMultiPolysString = @g.ToString(),
buffered = @g.STBuffer(1),
bufferedString = @g.STBuffer(1).ToString(),
IsValid = @g.STIsValid()