SQL Server2008の新機能です。私の質問を理解していただければ幸いです/

したがって、データベース(空間)に3つのフィールド(名前、緯度、経度)を含むテーブルがあります。これらのフィールド(緯度と経度)に基づいてジオメトリ/地理列を作成したいと思います。長い)が、残念ながら成功しませんでした。

私の質問は、どうすればそれを実現できるかということです。

コメント

回答

次のような計算列を追加できます

alter table yourTable add geographyColumn as geography::STGeomFromText("POINT("+convert(varchar(20),Long)+" "+convert(varchar(20),Lat)+")",4326) 

LongとLatsを数値として格納するため、lngまたはlatからの変換を追加しました。

コメント

  • 回答ありがとうございます、管理しましたこの行を使用して私の問題を解決するには:UPDATE yourdatabase SETgeometry_column = geometry :: P oint([ColX]、[ColY]、SRID)
  • これのトリガーを作成することは可能ですか?フィールド(列XとY)に上記のスクリプトが実行される情報を入力するときのように。

回答

SQLメソッド:

DECLARE @g geography; SET @g = geography::STGeomFromText("POINT(-122.34900 47.65100)", 4326); SELECT @g.ToString(); 

または

DECLARE @g geography; SET @g = geography::STPointFromText("POINT(-122.34900 47.65100)", 4326); SELECT @g.ToString(); 

GeometryまたはGeographyフィールドを作成し、SQLを使用してlat / lon値を使用してそのフィールドにデータを入力します。

コメント

  • 代わりに次の方法を使用する場合の違いは何ですか… DECLARE @g geometry; SET @g = geometry::STPointFromText('POINT (100 100)', 0);
  • @ awesomo-はい、実際には必要に応じて使用できます。

回答

SQL Server 2012

次のように実行できます

SELECT geography::Point(lat, long, 4326) 

詳細については、データベース管理者に関する私の投稿

“SQL ServerポイントコンストラクタまたはST_Point(x、y)のバージョン? “

コメント

はx、y引数を取るので、次のように順序を切り替える必要があります:geography::Point(long, lat, 4326)。経度はx、緯度はyです。