C#で位置データを格納するときに使用するのに最適なデータ型は何ですか?正確さのために10進数を使用しますが、10進浮動小数点数の演算は2進浮動小数点数(double)よりも遅くなります。
たいていの場合、緯度または経度の精度を6桁または7桁以上必要としないことを私は読んだ。ダブルスの不正確さは重要なのですか、それとも無視できますか?
double
、double
最適な場合があります。
C#で位置データを格納するときに使用するのに最適なデータ型は何ですか?正確さのために10進数を使用しますが、10進浮動小数点数の演算は2進浮動小数点数(double)よりも遅くなります。
たいていの場合、緯度または経度の精度を6桁または7桁以上必要としないことを私は読んだ。ダブルスの不正確さは重要なのですか、それとも無視できますか?
double
、double
最適な場合があります。
回答:
に行く、double
いくつかの理由があります。
空間プログラミングを始めたとき、かなり前にこの質問に直面しました。少し前に本を読んだのですが、この本に私を導きました。
//sql server has a really cool dll that deals with spacial data such like
//geography points and so on.
//add this namespace
Using Microsoft.SqlServer.Types;
//SqlGeography.Point(dblLat、dblLon、srid)
var lat_lon_point = Microsoft.SqlServer.Types.SqlGeography.Point(lat, lon, 4326);
これは、空間データを使用してアプリケーションで作業する場合に最適な方法です。次に、データを保存するには、これをSQLで使用します
CREATE TABLE myGeoTable
{
LatLonPoint GEOMETRY
}
それ以外、SQL以外の何かを使用している場合は、ポイントを16進数に変換して保存するだけです。私は長い間、空間を使用して、これが最も安全であることを知っています。
ダブル
答えを組み合わせると、MicrosoftがSqlGeographyライブラリでそれ自体を表現する方法になります
[取得:Microsoft.SqlServer.Server.SqlMethod(IsDeterministic = true、IsPrecise = true)] public System.Data.SqlTypes.SqlDouble Lat {get; プロパティ値 SqlDouble 緯度を指定するSqlDouble値。