QueriesGeograficasNoSQLServer Page History
Obter o texto de uma geometria
Para obter o conteúdo da geometria no formato texto de uma tabela, rode a querie com a seguinte formatação:
select ID, geom.STAsText() from redes
o resultado será algo semelhante a:
1 LINESTRING (276808.36827086232 7505489.2898302283, 276763.9665969435 7505443.845863495)
2 LINESTRING (276763.9665969435 7505443.845863495, 276770.63418188522 7505438.0450490452)
3 LINESTRING (276846.72464645415 7505456.5618358376, 276801.36355431535 7505414.2910556328)
4 LINESTRING (276881.95414360106 7505424.04230001, 276833.41259304615 7505379.0371130295)
5 LINESTRING (276920.10206062993 7505388.6043442972, 276871.68291576585 7505340.76679031)
Obter o sistema de projeção de uma geometria
Para sabem em que sistema de projeção encontra-se uma determinada geometria você roda uma querie semelhante a apresentada a seguir:
select distinct geom.STSrid from redes
Que neste exemplo retorna:
31983
cuja projeção é SIRGAS 2000 / UTM zone 23S.
A projeção cartográfica é armazenada em cada elemento geográfico, coluna geográfica do WKB.
Para consultar as projeções mais utilizadas no Brasil, selecione aqui
Atualizar o sistema de projeção
Para atualizar o sistema de projeção cartográfica de uma determinada coluna no banco de dados, rode uma querie semelhante a mostrada a seguir:
UPDATE poligonos
SET geom = geometry::STGeomFromWKB(geom.STAsBinary(), 32723);
Neste caso todas as linhas da coluna que contem a geometria geom passarão a ser SIRGAS 2000 23S
Obter o SRID de um dado geográfico
Para obter o SRID de uma coluna geográfica, rode a querie semelhante a apresentada a seguir:
select gid, geom.STAsText(), geom.STSrid from poligonos
Você obterá:
53 POLYGON ((340603.35 7385236.99, 340620.87 7385238.61, 340648.67 7385239.88, 340676.47 7385240.97, 340704.45 7385242.06, 340733.52 7385243.52, 340734.61 7385229.32, 340735.7 7385209.11, 340736.24 7385190.36, 340737.33 7385170.88, 340737.88 7385151.58, 340736.6 7385150.49, 340718.24 7385150.13, 340689.89 7385149.22, 340662.08 7385148.31, 340633.91 7385147.22, 340606.65 7385146.13, 340583.57 7385145.4, 340582.85 7385146.31, 340582.66 7385155.78, 340581.93 7385175.63, 340581.56 7385195.48, 340580.83 7385215.51, 340580.46 7385234.08, 340581.01 7385235.17, 340582.64 7385236.08, 340586.45 7385236.26, 340603.35 7385236.99)) 32723
Neste caso a projeção cartográfica é 32723, ou seja, SIRGAS 2000 23S
Conversão de formatos no SQLServer
Conversão de formatos com CAST
Para converter um formato texto para o formato de geometria a seguinte querie pode ser executada:
DECLARE @data TABLE (
ID nvarchar(1024),
ImportedGeometry nvarchar(100),
FinalGeometry geometry
)
INSERT INTO @data (ID, ImportedGeometry) values ('1', '0xE6100000010C4703780B24B855C061C3D32B65093540')
INSERT INTO @data (ID, ImportedGeometry) values ('2', '0xE6100000010C96438B6CE7D359C0BD5296218E853440')
select
d.ID,
d.ImportedGeometry,
CONVERT(varbinary(max), d.ImportedGeometry, 1) as ConvertedGeometryBin,
(cast(CONVERT(varbinary(max), d.ImportedGeometry, 1) as geometry)) as FinalGeometry
from @data d
UPDATE @data
SET FinalGeometry = (cast(CONVERT(varbinary(max), ImportedGeometry, 1) as geometry))
select
d.ID,
d.FinalGeometry,
d.FinalGeometry.STAsText(),
d.FinalGeometry.STSrid
from @data d
Para acessar a fonte desta querie, selecione aqui.
Para acessar a sintaxe das funções CONVERT e CAST, selecione aqui.
Inserir uma coluna geográfica em uma tabela
Abaixo um exemplo de como inserir os dados geográficos em uma coluna geográfica:
INSERT into poligonos (geom) VALUES ('POLYGON((340603.35 7385236.99,340620.87 7385238.61,340648.67 7385239.88,340676.47 7385240.97,340704.45 7385242.06,340733.52 7385243.52,340734.61 7385229.32,340735.7 7385209.11,340736.24 7385190.36,340737.33 7385170.88,340737.88 7385151.58,340736.6 7385150.49,340718.24 7385150.13,340689.89 7385149.22,340662.08 7385148.31,340633.91 7385147.22,340606.65 7385146.13,340583.57 7385145.4,340582.85 7385146.31,340582.66 7385155.78,340581.93 7385175.63,340581.56 7385195.48,340580.83 7385215.51,340580.46 7385234.08,340581.01 7385235.17,340582.64 7385236.08,340586.45 7385236.26,340603.35 7385236.99))')
Inserir uma coluna geográfica em uma tabela com a projeção cartográfica
Quando simplesmente inserimos os dados de uma coluna geográfica como mostrado anteriormente, a projeção cartográfica não é atualizada ou inserida para este registro. Para realizar a inserção dos dados geográficos juntamente com a projeção cartográfica, execute uma querie semelhante a seguir:
INSERT into poligonos (geom) VALUES (geometry::STGeomFromText('POLYGON((340603.35 7385236.99,340620.87 7385238.61,340648.67 7385239.88,340676.47 7385240.97,340704.45 7385242.06,340733.52 7385243.52,340734.61 7385229.32,340735.7 7385209.11,340736.24 7385190.36,340737.33 7385170.88,340737.88 7385151.58,340736.6 7385150.49,340718.24 7385150.13,340689.89 7385149.22,340662.08 7385148.31,340633.91 7385147.22,340606.65 7385146.13,340583.57 7385145.4,340582.85 7385146.31,340582.66 7385155.78,340581.93 7385175.63,340581.56 7385195.48,340580.83 7385215.51,340580.46 7385234.08,340581.01 7385235.17,340582.64 7385236.08,340586.45 7385236.26,340603.35 7385236.99))', 32723))
Neste caso a projeção cartográfica é 32723, ou seja, SIRGAS 2000 23S.