¿Es posible reproyectar datos espaciales usando SQL Server?

19

SQL Server toma un SRID al crear datos espaciales, pero ¿es posible recuperarlo con un SRID diferente traduciendo las coordenadas?

Por ejemplo, supongamos que tengo un montón de polígonos espaciales que usan SRID 4258, pero me gustaría usar junto con algunos datos preexistentes que tienen un SRID de 4326: ¿hay conversiones integradas o tengo que manejar esto? conversión a mí mismo?

El método SQL-MM, que implementa PostGIS es ST_Transform. ¿Cómo hago eso en SQL Server?

Rowland Shaw
fuente
Por favor, eche un vistazo a mi respuesta aquí: stackoverflow.com/questions/52618277/…
mohsen hs

Respuestas:

9

No de forma predeterminada, pero verifique las Herramientas espaciales de SQL Server desarrolladas por MSDN en GitHub. Específicamente, la transformación afín funciona.

usuario890
fuente
+1 Considero que estas herramientas son una parte esencial del servidor SQL.
Kirk Kuykendall
6

Ejemplo de reproyección de EPSG: 2193 a EPSG: 3857

c:\OSGeo4W64\bin\ogr2ogr.exe ^
 -f "MSSQLSpatial"^
 "MSSQL:server=DestServerName;database=DestDbName;trusted_connection=yes"^
 "MSSQL:server=SourceServerName;database=SourceDbName;trusted_connection=yes"^
 -sql "SELECT [Id], [Shape].STAsText() Shape FROM [SourceDbName].[dbo].[SourceTableName]"^
 -nln "DestTableName"^
 -overwrite^
 -s_srs EPSG:2193^
 -t_srs EPSG:3857

Después de esto, ejecute SQL Query

update  [DestDbName].[dbo].[DestTableName]
set     [ogr_geometry] =  geometry::STGeomFromText([shape], 3857)
Maxim Mikhisor
fuente