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.


Last edited by José Maria Villac Pinheiro