Jeg brugte koden, som jeg skrev til dig (Gemmer 'Point'-kolonnen fra ShapeFile ) som udgangspunkt for at få en pointtabel. Derfra:
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)
Denne kode forudsætter et par ting. For det første:at dine point er ordnet, som du ville gå rundt om regionens grænse. Dette betyder noget. Tænk på et "connect-the-dots"-puslespil. For at få det rigtige billede, skal du lave dem i den rigtige rækkefølge. For det andet, relateret til den første, skal de være i den korrekte orientering. Polygoner følger venstrehåndsreglen. Det vil sige, hvis du gik punkterne i rækkefølge, definerer du det område, der er på din venstre side. Så hvis du angiver punkterne i omvendt rækkefølge, får du alt undtagen din region! Du ved det med det samme, da du før SQL 2012 er begrænset til at have områder, der er fuldt indeholdt i en halvkugle.
Men nu må jeg spørge:givet det spørgsmål, du stillede før (som jeg linkede til ovenfor), modtager du shapefiler med polygoner i dem? Hvis ja, så gem det og spar dig selv for hovedpinen ved at rekonstruere det.