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を使用できます。SpatialToolsの無料CLRアドオンは、変換サポートを制限します。
ソース:http : //www.bostongis.com/PrinterFriendly.aspx?content_name=sqlserver2008r2_oracle11gr2_postgis15_compare
デフォルトではありませんが、GitHubでMSDNが開発したSQL Server Spatial Toolsを確認してください。具体的には、アフィン変換が機能します。
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