問題タブ [sqlgeometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
5662 参照

c# - WellKnownText空間データ列を含むSqlBulkCopyDataTable

DataTable次の列を持つaを一括コピーしようとしています。

  • 「ID」-System.Int32
  • 「Geom」-System.String

次の列を持つSQLデータベースに:

  • 「Id」-int
  • "形" -geometry

誰かがこれを行うための最良の方法についてアドバイスできますか?

それが役立つ場合はいくつかのテストコード...


私の元の投稿では、上記を実行すると次の例外がスローされることを説明できませんでした。

InvalidOperationException:データソースからのString型の指定された値は、指定されたターゲット列のudt型に変換できません。

私はこれからSqlBulkCopygeometry列の型を知らないため、から列の型に変換する方法を知らないと仮定していstringます。誰かがこれを確認できますか?

0 投票する
2 に答える
9364 参照

sql-server-2008 - SQLServer2012バージョンのMicrosoft.SqlServer.TypesのジオメトリUDTはSQLServer2008と下位互換性がありますか?

SQLServer2008とSQLServer2012の両方をローカルにインストールしている場合は、これを自分で試してみます。ただし、新しいバージョンしかインストールしていないので、そのままにしておきたいと思います。

  • SQL Server 2008にはMicrosoft.SqlServer.Types.dll、メジャーバージョン10のアセンブリが付属しています。
  • SQL Server 2012にはMicrosoft.SqlServer.Types.dll、メジャーバージョン11のアセンブリが付属しています。

特に、両方のアセンブリはSqlGeometryBuilderタイプを公開します。2つのアセンブリバージョンの顕著な違いの1つは、2012タイプには追加のオーバーロードメソッドAddCircularArcがあり、2008タイプにはないことです。

両方のアセンブリを並行して参照することは必ずしも簡単ではありません(おそらく悪い考えです)ので、SQL Server 2008インスタンスに対しても、を使用しない限り、2012バージョンを使用できるかどうか疑問に思いますAddCircularArc

彼らがこれを試した場合、誰かが彼らの経験を共有できますか?

0 投票する
1 に答える
979 参照

mysql - MySQL ジオメトリ関数の使用中に SQL エラーが発生しました

次のエラーが表示されます。

ステートメントは終了されました。
ユーザー定義ルーチンまたは集計 "geometry" の実行中に .NET Framework エラーが発生しました:
System.FormatException: 24141: 入力の位置 13 に数値が必要です。入力には @data1 があります。

0 投票する
3 に答える
4317 参照

c# - SqlGeometryとDbGeometryの間で変換する

SqlGeometryとDbGeometryの間で変換する簡単な方法はありますか?私は人気のあるSQL空間ヘルパーライブラリを使用しており、そこにあるすべての関数はSqlGeometryを期待しています。しかし、ESRI ArcSDEフィーチャクラスに対してEntityFrameworkを使用すると、ShapeフィールドがDbGeometryとして返されます。そのDbGeometryタイプで、必要なメソッド(LocateAlongGeomなど)を呼び出すことができません。たぶん、それをバイナリまたはテキストとしてシリアル化し、それをSqlGeometryとして読み戻す方法はありますか?

0 投票する
1 に答える
1812 参照

entity-framework - System.Data.Spatial.DbGeometry の JSON.NET シリアル化を制御する方法

CenterCoordinate という SQL ジオメトリ タイプ フィールドを含むテーブルにマップされた DB First Entity Framework 5 データ アクセス レイヤーがあります。結果のエンティティには次が含まれます。

public System.Data.Spatial.DbGeometry CenterCoordinate { get; 設定; }

私のクライアント JavaScript は API を要求し、JSON のみを受け入れます。次に、Asp.net Web API を使用して、既定のフォーマッタ (JSON.NET) を使用してこれを提供します。API コントローラでは、フィールドには XCoordinate と YCoordinate を含むプロパティの長いリストがあります。

クライアントでは、JSON にはこれのみが含まれます。

ジオメトリ: オブジェクト CoordinateSystemId: 3498 WellKnownBinary: null WellKnownText: "POINT (6438089.715 1801515.828)"

X と Y の値を取得するために WellKnownText を解析する必要はありません。

問題は、System.Data.Spatial 型の JSON との間のシリアル化/逆シリアル化を制御して、より便利なものを得るにはどうすればよいかということです。JSON.net フォーマッターは、何を含める/除外するかをどのように認識しますか?

注:データベースからモデルを再生成するたびに属性が失われるため、エンティティを属性で装飾したくありません(VS2012を介してモデルフィールドに属性を追加できず、後でそれらを記憶させることができない理由がわかりません)再生)。これは、部分クラスまたはフォーマッタのオーバーライドで可能ですか?

ありがとう、マット

0 投票する
1 に答える
1917 参照

geospatial - SQL Geography を SQL Geometry に変換するか、検索速度を向上させます

必要性: テーブルの SQL Geography フィールドのコンテンツを SQL Geometry フィールド タイプに変換する SQL ステートメントを探しています。既存のテーブルに追加する新しいテーブル フィールドです。またはより良い解決策、したがって投稿。

理由: ユーザーが挿入した場所の近くの場所の検索を高速化したいと考えています。場所は現在、Lat、Long、および SQLGeography フィールド タイプを持つテーブルに格納されており、Spatial インデックスはこれに基づいています。Geometry 型の計算は Geography 型の計算よりもリソース消費が少ないため、実行速度を優先して精度が低下する可能性があります。私の現在の計算は米国に限定されており、国際的なタイムラインや極を越えることはありません (おそらく将来的には?...)

その他の考慮事項:

  1. 私の場合、ルックアップは距離だけではなく、特定のエリア(近隣または都市)内です。
  2. 計算列を作成しようとしましたが、インデックスを作成するために永続化できません。これは 2012 年に可能と聞きましたが、2008 R2 で作業しています。

環境: VS 2012、ASP.NET 4.0、Entity Framework 5 (新しい地理フィールドを C# に適切にマップしませんが、とにかく SQL 側でのみ使用されるため問題ありません)。

質問:

  1. STDistance ではなく STIntersects を使用しているため、空間インデックス (Location テーブルの Geodata フィールドに基づく) が使用されないということですか?
  2. 「STIntersects」から「STDistance」を使用するように何らかの形で作り直す必要があります(たとえば、近隣や都市など、エリアのサイズによって異なるため、距離は毎回わかりません)

私が見た良い記事:

  1. http://msdn.microsoft.com/en-us/library/ff929109.aspx
  2. http://workshops.opengeo.org/postgis-intro/geography.html

SQL クエリからの抜粋:

0 投票する
1 に答える
512 参照

c# - sqlgeometry アークの中心点を取得するにはどうすればよいですか?

私は Mssql データベースを持っています。いくつかのジオメトリを sqlgeometry としてデータベースに格納しています。私は EF5 を使用して mvc4 プロジェクトで作業しています。データベースにアークを格納しています。データベースから dbgeometry として取得し、何らかの理由でそれを sqlgeometry に変換できます。中心点を取得したいこのアークの?私のためにそれを計算するための無料のジオメトリ.net libがありますか?

これは、円弧上の 3 点から円弧ジオメトリを構築するサンプル コードです。

0 投票する
0 に答える
1158 参照

c# - 有効な SQLGeometry オブジェクトで STNumGeometries() を実行すると、「無効な」例外が発生する

Geometry 列を含む SQL Server 2008 データベースを使用していますが、以前は問題がなかったのに、CSharp でそのデータを読み込んで操作する際に問題が発生しています。

Microsoft.SqlServer.Types.SqlGeometry タイプのオブジェクトがあり、STNumGeometry を取得する必要があります。

しかし、それはエラーを引き起こしています:

ArgumentException 24144: インスタンスが無効なため、この操作を完了できません。MakeValid を使用して、インスタンスを有効なインスタンスに変換します。MakeValid によって、ジオメトリ インスタンスのポイントがわずかにシフトする場合があることに注意してください。

SQLServer の Geometry 値を確認したところ、STIsValid が有効であることが報告されました。(コードは以前に機能していたので驚くことではありません)。

ジオメトリは、CSharp と SQLServer の両方で STIsValid に従って有効であり、STNumGeometries はデータベースで機能し、そこにブレークポイントを配置すると、STNumGeometries の値がウォッチで 1 として報告されます。しかし、前に進むと、プログラムはこのエラーでクラッシュします。

私のコードがコード行を処理することを突然望まなくなるのはなぜですか?

更新 「解決策」を見つけましたが、それでも問題を理解したいと思います...

そして、これは機能します。

0 投票する
1 に答える
319 参照

reporting-services - SQLGeometry を使用して SSRS のフロア プランにアイテムの場所を表示する

在庫品目には、物理​​的な倉庫の場所に対応する場所フィールドがあります。つまり、品目 X の場所フィールドには、「A01」が棚の場所 A01 に対応する状態が示されます。
このデータを活用して、倉庫の平面図にアイテムの場所を表示するにはどうすればよいですか?
おそらく、フロア プランの場所を表示するアイテム X の SSRS レポート クエリの形式でしょうか?
私は周りを検索して、これができることを見ました:

「最も単純なケースから始めると、会社の倉庫 (データ ウェアハウスではなく、商品が保管される物理的な倉庫) のレイアウトのマップが必要だとします。おそらく、倉庫の寸法を測り、平面図を描き、フロア プランの位置に基づいて商品の配置をマッピングします。」

しかし、これを達成するための手順が見つかりません。この点での助けに感謝します。

現在 SQL 2008 R2 を使用しています