6

新しいEntity-Framework 5をSpatialデータ型DbGeographyを使用して、モデルの一部として1つのインスタンスPOINTと別のインスタンスPOLYGONをインスタンス化します。C#Entity Framework 5を使用してポリゴンリングの向きを修正する方法DbGeography空間データ

私のPOLYGONの値を設定すると、エラーは発生しませんが、マップ上にポリゴンを時計回りに描画すると、このようなことは起こりません。 POLGONを反時計回りに描画すると、データが無効な地理タイプであることを示すSQLレベルがエラーになります。

問題を自分で調べた後、地理データ型がポリゴンのリング方向に関して非常に厳しいことが原因です。最も一般的な解決策は、ポリゴンをジオメトリとして作成し、それを地理タイプに変換することです。

私はSQLに送信される前にデータに適用できるC#のソリューションを探しています。基本的には、座標の配列のリングの向きを自動的に修正するものです。

私はエラーをキャッチし、配列を逆にして文字列を再構築しようとしました。これはいくつかのケースでは機能しますが、最初は信頼できず、2番目にエラーが発生するのは大きなパフォーマンスヒットです。ここ

おかげ クリス

答えて

0

同じ問題、ビングを使用すると、V7、ここで見つかったポリゴンを描画するためのその形状ツールキットをマップ:http://bingmapsv7modules.codeplex.com/wikipage?title=Shape%20Toolbox%20Module

+0

こんにちはアダムを参照してください詳細については

var sqlGeography = SqlGeography.STGeomFromText().MakeValid() var invertedSqlGeography = sqlGeography.ReorientObject(); 

を使用して、それを解決し、これは質問に対するコメントとして追加すべきコメントのように思えます、回答として投稿されていません。あなたはここに新しい人なので、あなたはもう少し評判を得るためにアクティブにしなければならないので、コメントを投稿することができます。 – VKen

2

私は順序が私の自己を発行持っていた、と私は使用してそれを解決しました

@pois座標を含む文字列です
SET @ge = dbo.MakeValidGeographyFromText(
    'POLYGON((' + @pois + '))', 4326); 

SQLSpatialTools からMakeValidGeographyFromText機能は、私はそれをSP内の次の方法を使用しました有効な形式ではありますが、回転が間違っています。

私は、これはEF-5と統合することがいかに簡単かわからないんだけど、私は二つの方法を参照してください。

  1. は正しいポリゴンでEFを呼び出す前に、C#のから直接関数を使用します。
  2. SQLサーバーにsqlspatialtoolsをインストールし、そこで処理を行います。
関連する問題