2016-09-06 12 views
1

私はgeoFencesをSql geographyインスタンスに変換しています。この問題は現在いくつかのインスタンスが原因です。地理図はかなり奇妙で不正確です。Sql geographyの不正確な数字

最初の1つ(緑色の領域)は有効なジオフェンスであり、2番目のものはsqlで作成されたものです。

This is the valid geofence

This is the Sql geography instance

座標は以下のとおりです。 -

ロング緯度

51.576004 24.125605、 51.580467 24.122041、 51.585875 24.119730、 51.591239 24.118751、 51.597633 24.120043、 51.603470 24.123843、 51.607161 24.126114、 51.609950 24.126976、100メートルの偏差、すなわち緩衝液で 51.616087 24.127133、 51.625915 24.125997、 51.639776 24.119691、 51.576004 24.125605

SQLコード: -

geography::STGeomFromText('POLYGON((51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605))', 4120).MakeValid().STBuffer(100) 

答えて

2

ポリゴンは、閉ループです。これは、あなたのフェンスが道路周りのリングでなければならないことを意味します。このケースでは、道路の次の行を持っているし、最初のポイントを繰り返して、あなたがLINESTRINGに

geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605)', 4120) 

これを変更する場合、すなわち

POLYGON((51.576004 24.125605, ... ,51.576004 24.125605)) 

それはこの

Linestringのように見えます

最終的に得られる形状を説明する必要があります。

必要な結果を得るには、線ストリングに変換し、最後のポイントを削除して、バッファーを適用します。

geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691)', 4120).STBuffer(100) 

Buffered Linestring