Използвах кода, който написах за вас (Съхраняване на колона „Точка“ от ShapeFile ) като отправна точка, за да получите таблица с точки. Оттам:
select geography::STPolyFromText(
'POLYGON((' +
stuff((
select ',' + cast(g.STPointN(t.i).Long as varchar(10)) + ' ' + cast(g.STPointN(t.i).Lat as varchar(10))
from [a]
cross join tally as [t]
where t.i <= g.STNumPoints()
order by i
for xml path('')
), 1, 1, '') + '))'
, 4326)
Този код предполага няколко неща. Първо:че вашите точки са подредени така, както бихте обиколили границата на региона. Това има значение. Помислете за пъзел за свързване на точки. За да получите правилната картина, трябва да ги направите в правилния ред. Второ, във връзка с първото, те трябва да са в правилната ориентация. Полигоните следват правилото на лявата ръка. Тоест, ако вървите по точките в ред, вие определяте региона, който е от лявата ви страна. Така че, ако посочите точките в обратен ред, получавате всичко, но не и вашия регион! Ще разберете това веднага, тъй като преди SQL 2012 вие сте ограничени да имате региони, които се съдържат изцяло в полукълбо.
Но сега трябва да попитам:предвид въпроса, който зададохте преди (който свързах по-горе), получавате ли шейпфайлове с полигони в тях? Ако е така, запазете го и си спестите главоболието да го реконструирате.