問題タブ [sqlgeography]

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 投票する
1 に答える
523 参照

silverlight - XAML を ShapeFile または SqlGeometry 形式に変換する

Canvas オブジェクトに埋め込まれたパスで構成される XAML ベースのダイアグラムがいくつかあります。

XAML を ShapeFile または SqlGeometry データに変換する方法/ツールはありますか? ShapeFiles または SqlGeometry データにのみバインドするサード パーティのマップ コントロールにグラフィックを表示したいので、変換する必要があります。

どんな助けでも大歓迎です。

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

sql - 2000 万件以上のレコードに対する効率的な SQL Geography ワイルドカード名検索

2,000 万以上の geoWe ロケーション (および増加中) を含む SQL 2008 データベースがあり、各ロケーションには標準の名前/住所/地理/ID/その他の列が含まれています。

距離に基づいてレコードを効率的に検索する方法だけでなく、全文索引を介した「含む」キーワードも必要です。基本的な考え方は、最大距離に基づいて近くの場所を検索することです。

現在、1 マイル以内にあるスターバックスなどの完全な文字列を検索すると、検索は数秒で返されます。ただし、1 マイル以内で「星」を検索すると、検索に数分かかる場合があります。

次のようなロジックをいじっています。

ただし、これにより、検索で重複やその他の問題が発生します。また、オンラインで見つけた POWER フォーラムも使用しようとしています。

距離または特定のカテゴリ ID のみに基づいており、1 秒未満で返される他のクエリがうまく機能しています。大きな問題は、ワイルドカード文字列の一致です。

2000 万以上のレコードを処理するときに名前 (ワイルドカードのサポート) と距離を受け入れる素晴らしい SQL または CLR proc を持っている人はいますか?

今、私たちは非常に立ち往生しています:(

前もって感謝します、ジェフ

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

sql - 地理を新しいSQL Server 2008テーブルに一括挿入する方法

数十万行のポリゴンと、書式設定された住所や APN 番号などのその他の関連データを含む非常に大きなシェイプ ファイルがあります。Shape2SQL などを使用せずに、このデータを地理を含むテーブルに入れるにはどうすればよいですか? 永遠にかかるすべての行に対して挿入ステートメントをうまく実行することはできません。最適な解決策は、csv または適切にフォーマットされた bin ファイルを作成してから、一括挿入、またはbcp、または openrowset を実行することですが、試してみてください。 csvファイルまたはbinファイルを機能させることができないかもしれません。誰でも助けることができますか?

次のコードは、私が管理できる最高のものです。

しかし、これではポリゴンのみをインポートできます。他のすべても必要です。

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

sql - CTEおよびGeopgraphyデータ型の追加句

SQLServerのGeographyデータ型を使用して郵便番号を使用している距離の人々に基づいて照合するクエリを作成しています。99%ありますが、2つの問題があります。現時点では、これはzip、都市、州で検索しますが、[u.username]でも実際に一致させる必要があります。「ORUsernameLIKE@Name」を追加するための構文を正しく取得できません。第二に、パフォーマンスは良くありません。米国全土から21人のテストユーザーがいるため、クエリには4秒かかります。

これを高速化し、追加の検索パラメーターを追加する方法はありますか?私はこれまでにこれを持っています:

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

sql-server-2008 - SqlGeographyBuilder 使用時の「指定された入力は、有効な地理インスタンスを表していません」例外

Microsoft.SqlServer.Types.SqlGeography一連の KML ファイルから読み取り、次のコードを使用して型に変換する小さなアプリケーションを作成しました。

基本的に、このコードは KML ファイルから緯度/経度のリストを取得し、それらをループ処理してポリゴンを作成します。

ただし、インポートしている KML ファイルの一部は、次の例外で失敗します。

System.ArgumentException がキャッチされました Message=24200: 指定された入力は、有効な geography インスタンスを表していません。

これは次の行で発生します。return geographyBuilder.ConstructedGeography;

この例外への参照を見つけましたが、C# ではなく SQL Server 内でこの例外に遭遇し、処理していることがわかりました。

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

sql-server-2008 - LINESTRINGのパーセントを返す(SQL Server 2008 Geography)

@path geography, @start_pct float, @end_pct floatSQL 2008 R2で、3つのパラメーター( )を指定すると、の長さのパーセンテージに基づいて行文字列を返す関数を作成したいと思います@path

たとえば
@start_pct = 0@end_pct = 0.5の場合は、の前半を返し、との@path場合は、の後半を返します。との場合は、の中間の50%を返しますが、-であり、任意の値(0から1の間)である可能性があります。@start_pct = 0.5@end_pct = 1@path@start_pct = 0.25@end_pct = 0.75@path@start_pct@end_pct

私は試しました:ポイントの各セットをループしてSTPointN、関心のあるポイントがそのセクション内にあるかどうかを計算しました。私の頭の中では、ロジックは健全に見えましたが、期待される結果が返されていません(結果はわかっています)。

私には次のようなこだわりがあります。

  1. 上の2点の間にある点を計算する@path
  2. 結果の線文字列を文字列(nvarchar(max))として保存していましたが、スペースが不足している可能性があります(使用しているパスの一部に多くのポイントがあります)。STLineFromText最後に、それを地理に戻すために使用したかったのです。

恥ずかしいほどアマチュアなコードを投稿する前に、これはやや簡単なはずだと感じており、おそらくそれを複雑にしすぎているのかもしれません。

誰かが以前にこれをしたことがあり、彼らは手を貸すことができますか?

編集: 実際には-それを解決しただけですが、それでも本来よりもはるかに複雑に見えます。オフィスに戻ったときにコードを投稿します。

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

nhibernate - Hibernate は地理タイプを名前付きクエリ SetParameter() に渡します

ASP.NET MVC Web アプリケーションのデータ アクセス レイヤーに NHibernate 3 を導入しようとしています。

SQL Server 2008 R2 データベース内では、geographyデータ型を使用して、アプリケーション内のエンティティにマップされるテーブルに緯度/経度座標を格納します ( this と呼びますEntityA)。

EntityAデータ型をtypeのプロパティに正常にマップする流暢なマッピングを設定し、GisSharpBlog.NetTopologySuite.Geometries.Pointそれを派生にマップするカスタム マッピング規則を使用しましたMsSql2008GeographyType

上記のすべてが正しく機能しているように見えますが、まだ使用されているいくつかのストアド プロシージャがあり、1 つのパラメーターが type であることを期待していますgeography。ストアド プロシージャを名前付きクエリとしてマップしましたが、 type のパラメーターに渡す必要がある型がわかりませんgeography。クエリ呼び出しが発生するメソッドは、double緯度とdouble経度を取ります。古い sproc 呼び出しでは、マッピングは次のように行われました

SQL プロファイラーを実行すると、次のコマンドが実行されます

次のようにマッピングしようとすると

私はSqlExceptionを取得しますError converting data type varbinary to geography

[SqlException (0x80131904): データ型 varbinary を geography に変換中にエラーが発生しました。データ型 varbinary を geography に変換中にエラーが発生しました。]
System.Data.SqlClient.SqlConnection.OnError(SqlException 例外、Boolean breakConnection) +2073502
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 例外、Boolean breakConnection) +5064460
System.Data.SqlClient .TdsParser.ThrowExceptionAndWarning() +234
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj) +2275
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
システム。 Data.SqlClient.SqlDataReader.get_MetaData() +86
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds、RunBehavior runBehavior、文字列 resetOptionsString) +311
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior runBehavior、ブール値 returnStream、ブール値 async) +987
System.Data.SqlClient .SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data. SqlClient.SqlCommand.ExecuteReader(CommandBehavior 動作、文字列メソッド) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 動作) +12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() +12 NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) +356 NHibernate.Driver .BatcherDataReaderWrapper..ctor(IBatcher バッチャー、IDbCommand コマンド) +183
NHibernate.Driver.BasicResultSetsCommand.GetReader(Nullable`1 commandTimeout) +432 NHibernate.Impl.MultiQueryImpl.DoList() +683

SQL プロファイラーを実行すると、次のコマンドが実行されます

ご覧のとおり、コマンドに渡されたものと渡されたものから決定される値SetParameter()は異なります。

名前付きクエリにタイプを渡して、やりたいことを実行することはできますか?

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

mysql - 緯度/経度ポイント間の短い距離の計算

空間ポイントを含む MySQL テーブルがあり、距離を計算する必要があります。Haversine 式を使用してこれを行うことに関する多くの資料を見つけましたが、これらはすべてポイント間の距離が大きいことを前提としています。私の場合、短距離 (< 1 マイル) しか気にしないので、地球の曲率を補正する必要はありません。私の直感では、Haversine 式を使用すると、このような短い距離では不正確になります。助言がありますか?

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

c# - STUnionを使用してポリゴンを作成する場合、コードで作成する方が速いですか、それともデータベースに処理させる方が速いですか?

私はどちらが速いのか疑問に思っていました:

  1. SQLGeographyのSTUnionメソッドを使用してwktポリゴンを構築します。
  2. MSSQLServerに組み込まれているSTUnionメソッドを使用してwktポリゴンを構築します。

確かにしたかったのでお願いします。2を使用した場合、データベースのクエリと継続的な更新により、データの処理/作成にかかる時間が長くなると思います。これは1つの接続を介して行われるため、何かを追加する必要があるたびに再接続する必要はありません。