意図しないSRIDのデータが混ざらないようにする
どうやらGIS系データではSRIDが非常に重要で、混ざらないように注意する必要があるようです。
SQLらしく制約で解決しましょう。
ALTER TABLE [dbo].[Locations] ADD CONSTRAINT CHK_Locations_GeographicalPoint_SRID4326 CHECK ([GeographicalPoint].[STSrid] = 4326);
これでSRID4326指定されていないデータはテーブルに存在できなくなりました。
異なるSRIDの座標情報をSRID4326だと指定してしまったりなど、ヒューマンエラーは防ぎようがありませんが。
意図しない形のデータが混ざらないようにする
前回のLocations
テーブルの[GeographicalPoint]
列はPointと言っているので、Point型を期待していますが、LINESTRINGだろうがなんだろうが入れることはできます。
これもSQLらしく制約で解決しましょう。
ALTER TABLE [dbo].[Locations] ADD CONSTRAINT CHK_Locations_GeographicalPoint_POINT CHECK ([GeographicalPoint].STGeometryType() = 'POINT');