Можно ли перепроектировать пространственные данные с помощью SQL Server?

19

SQL Server использует SRID при создании пространственных данных, но возможно ли получить с другим SRID преобразование координат?

Например, допустим, у меня есть несколько пространственных многоугольников, использующих SRID 4258, но я хотел бы использовать наряду с некоторыми уже существующими данными, имеющими SRID 4326 - есть ли встроенные преобразования или я должен справиться с этим преобразование себя?

Метод SQL-MM, который реализует PostGIS ST_Transform. Как мне это сделать в SQL Server?

Роуланд Шоу
источник
Пожалуйста, посмотрите мой ответ здесь: stackoverflow.com/questions/52618277/…
mohsen hs

Ответы:

18

Нет.

Преобразование - возможность преобразования из одной пространственной ссылки в другую: Нет - нужны сторонние инструменты, Geometry может использовать любой SRID в диапазоне от 0 до 999999. Бесплатное дополнение CLR для Spatial Tools предоставляет ограниченную поддержку преобразования.

Источник: http://www.bostongis.com/PrinterFriendly.aspx?content_name=sqlserver2008r2_oracle11gr2_postgis15_compare

Подземье
источник
9

Не по умолчанию, но проверьте SQL Server Spatial Tools, разработанный MSDN на GitHub. В частности, функции аффинного преобразования.

user890
источник
+1 Я считаю, что эти инструменты являются неотъемлемой частью Sql Server.
Кирк Куйкендалл
6

Пример перепроецирования из EPSG: 2193 в 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

После этого выполните SQL Query

update  [DestDbName].[dbo].[DestTableName]
set     [ogr_geometry] =  geometry::STGeomFromText([shape], 3857)
Максим Михисор
источник
0

У меня была похожая проблема, и она была решена с помощью .Net. Я разработал DLL в C #, а затем определил его как функцию CLR в MSSQL. Всякий раз, когда я вызываю эту функцию, это делает преобразование для меня. Пожалуйста, посмотрите этот подход в переполнении стека . и этот /programming/52618277/how-do-spatial-reprojection-in-sql-server

мохсен хз
источник