こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

緯度と経度をgeometry型に変換

位置参照情報ダウンロードサービス
http://nlftp.mlit.go.jp/isj/

ダウンロードしたデータを利用して、SQLServerで地図データ(緯度経度)を検索しようと思ってます。

中身は、
都道府県コード,都道府県名,市区町村コード,市区町村名,大字町丁目コード,大字町丁目名,緯度,経度,原典資料コード,大字・字・丁目区分コードとなってます。

以下のURLを参考にして、
http://linyi-zatta.blogspot.jp/2014/02/sqlserver.html
geometry型のデータを作成しようとしているのですが、作成できません。

手順は
ダウンロードしたCSVファイルを取込テーブルへbulk insert
緯度と経度2つにわかれているfloat型のデータをgeometry型に変換し、別テーブルへ移行

43.041403(カラム名:緯度)
141.31998(カラム名:経度)

といった具合に分かれてます。

こちらをgeometry型に変換、取込テーブルからselectしたものを
別のテーブルに移行したいのですが、geometry型でselectできません。
select geography::STGeomFromText('POINT(緯度 経度)',4326)) from 取込テーブル
というイメージでできるかなと思ってたのですが、上手く行かず。

直接、値を書くやり方は以下で問題ないのですが。
geography::STGeomFromText('POINT(134.993299 34.647755)',4326))

どう、SQL文を作成すればよいのか、ご教示どうかお願いします。

投稿日時 - 2015-02-06 10:16:54

QNo.8912058

困ってます

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

'と'で括られた中のフィールド名は[]で括る。

select geography::STGeomFromText('POINT([緯度] [経度])',4326)) from 取込テーブル

投稿日時 - 2015-02-06 10:34:33

補足

ありがとうございます。

試してみたところ、
')' 付近に不適切な構文があります。
と出力されましたので、
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)

投稿日時 - 2015-02-06 10:57:08

お礼

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

投稿日時 - 2015-02-06 11:57:20

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-