Dividindo seu GeographyCollection em polígonos separados no Sql Server 2012 [Parte 1 de 2]

Alguns softwares espaciais não gostam do uso de a GeographyCollection. A GeographyCollectionpode conter vários tipos de geografia na coleção única. Pessoalmente, tendo a achar isso um pouco confuso.

Então, para contornar isso, você pode dividir seus GeographyCollectionpolígonos separados.

Com meu exemplo, tenho uma grande fronteira com a Austrália. Acontece que é um GeographyCollection consistindo em 226 separados Polygon's.

Imagem.

Limite da forma

Dados de amostra..

dados de amostra

Portanto, para obter esses dados, aqui está o código Sql:

SET NOCOUNT ON

-- Create the numbers table.
DECLARE
@counter INTEGER
DECLARE
@numberTable TABLE(Number INTEGER PRIMARY KEY)
SELECT
@counter = 1
WHILE
@counter <= 10000
BEGIN
INSERT INTO
@numberTable(number) VALUES (@counter)

SELECT
@counter = @counter + 1
END


-- Now extract the data.
-- NOTE: My shape boundaries are in a table called GeographyBoundaries.
SELECT

a
.LocationId,
a
.OriginalBoundary.STGeometryN(b.number) AS Shape,
a
.OriginalBoundary.STGeometryN(b.number).ToString() AS WellKnownText
FROM
GeographyBoundaries a
INNER JOIN
@numberTable b ON b.number <= a.OriginalBoundary.STNumGeometries()
WHERE a
.LocationId = 5709978

Tenho certeza que este código pode ser limpo – mas como uma tarefa de manutenção rápida, atende aos nossos propósitos, tudo bem 🙂

Dica de chapéu: Essa ideia foi inspirada originalmente nesta postagem do blog .