• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:緯度と経度をgeometry型に変換)

緯度と経度をgeometry型に変換する方法

このQ&Aのポイント
  • 質問者は、位置参照情報ダウンロードサービスからダウンロードしたデータを利用して、SQLServerで地図データ(緯度経度)を検索しようとしています。
  • 具体的には、ダウンロードしたCSVファイルを取り込みテーブルに`bulk insert`し、緯度と経度の値をgeometry型に変換して別のテーブルに移行したいと考えています。
  • しかし、質問者はgeometry型のデータの作成とselect文の作成について困っています。直接値を書く方法は問題ありませんが、ダウンロードしたデータを利用する方法がわかりません。ご教示をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

'と'で括られた中のフィールド名は[]で括る。 select geography::STGeomFromText('POINT([緯度] [経度])',4326)) from 取込テーブル

boooone
質問者

お礼

geometry:: STGeomFromText('POINT(' + CAST([経度] AS varchar)+' '+CAST([緯度] AS varchar)+')',4326) でできました。緯度と経度が逆だったようでして。ありがとうございました。

boooone
質問者

補足

ありがとうございます。 試してみたところ、 ')' 付近に不適切な構文があります。 と出力されましたので、 4326))のカッコをひとつ取って実行してみましたら、 以下のエラーが表示されちゃいました。 メッセージ 6522、レベル 16、状態 1、行 4 ユーザー定義のルーチンまたは集計 "geography" を実行中に .NET Framework エラーが発生しました: System.FormatException: 24141: 入力の位置 16 には数値が必要です。[緯度] が入力されています。 System.FormatException: 場所 Microsoft.SqlServer.Types.WellKnownTextReader.RecognizeDouble() 場所 Microsoft.SqlServer.Types.WellKnownTextReader.ParsePointText(Boolean parseParentheses) 場所 Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText(OpenGisType type) 場所 Microsoft.SqlServer.Types.WellKnownTextReader.Read(OpenGisType type, Int32 srid) 場所 Microsoft.SqlServer.Types.SqlGeography.ParseText(OpenGisType type, SqlChars taggedText, Int32 srid) 場所 Microsoft.SqlServer.Types.SqlGeography.GeographyFromText(OpenGisType type, SqlChars taggedText, Int32 srid)

関連するQ&A