SQL Server는 공간 데이터를 만들 때 SRID를 사용하지만 좌표를 변환하는 다른 SRID로 검색 할 수 있습니까?
예를 들어 SRID 4258을 사용하는 많은 공간 다각형이 있지만 SRID가 4326 인 기존 데이터와 함께 사용하고 싶다고 가정 해 보겠습니다. 변환이 내장되어 있거나 처리해야합니까? 나 자신 변환?
PostGIS가 구현하는 SQL-MM 방법은 ST_Transform
입니다. SQL Server에서 어떻게합니까?
SQL Server는 공간 데이터를 만들 때 SRID를 사용하지만 좌표를 변환하는 다른 SRID로 검색 할 수 있습니까?
예를 들어 SRID 4258을 사용하는 많은 공간 다각형이 있지만 SRID가 4326 인 기존 데이터와 함께 사용하고 싶다고 가정 해 보겠습니다. 변환이 내장되어 있거나 처리해야합니까? 나 자신 변환?
PostGIS가 구현하는 SQL-MM 방법은 ST_Transform
입니다. SQL Server에서 어떻게합니까?
답변:
아니.
변환-하나의 공간 참조에서 다른 참조로 변환하는 기능 : 아니요 – 타사 도구가 필요합니다. Geometry는 0에서 999999 사이의 모든 SRID를 사용할 수 있습니다. 공간 도구 무료 CLR 애드온은 제한된 변환 지원을 제공합니다.
기본적으로는 아니지만 GitHub에서 MSDN에서 개발 한 SQL Server 공간 도구를 확인하십시오 . 구체적으로, 아핀 변환 기능.
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 쿼리를 실행
update [DestDbName].[dbo].[DestTableName]
set [ogr_geometry] = geometry::STGeomFromText([shape], 3857)
비슷한 문제가 있었고 .Net으로 해결했습니다. C #에서 dll을 개발 한 다음 MSSQL에서 CLR 함수로 정의했습니다. 이 함수를 호출 할 때마다 변환이 수행됩니다. Stack Overflow 에서이 접근법을 참조하십시오 . 및 /programming/52618277/how-do-spatial-reprojection-in-sql-server