sql >> データベース >  >> RDS >> Sqlserver

Sql Server 2008 の地理的な LineString のサイズ制限

    LINESTRING のサイズ制限については聞いたことがありません (確かに 567 ポイントほど短くはありません)。

    例を試してみました

    DECLARE @geom GEOGRAPHYSET @geom =GEOGRAPHY::STGeomFromText( 'LINESTRING (142.98873903132778 -11.006193013241768 , 142.9891970000001 -11.005916999999954 -- SNIP 1,119 points , 142.04362479801711 -11.629451936538608 )', 4326)SELECT @geom, @geom.STNumPoints ()  

    これは正常に機能しました (LINESTRING を作成し、1,122 ポイントをカウントします)。

    あなたの例は、任意の 567 ポイントで失敗しますか?それとも特定のポイント セットだけで失敗しますか (それらを私たちと共有できますか?)。あなたの 568 番目のポイントがあなたの GEOGRAPHY インスタンスを半球よりも大きくするかどうか疑問に思っていると思いますか?たとえば、別のポイント (0,0) を追加して例を変更すると、GEOGRAPHY が大きくなりすぎます:

    DECLARE @geom GEOGRAPHYSET @geom =GEOGRAPHY::STGeomFromText( 'LINESTRING (142.98873903132778 -11.006193013241768 , 142.9891970000001 -11.005916999999954 -- SNIP 1,119 points , 142.04362479801711 -11.629451936538608 , 0 0 )', 4326) -- ADDED ANOTHER POINT !SELECT @geom, @geom.STNumPoints()  

    ArgumentException 24205 が発生します:指定された入力は、単一の半球を超えているため、有効な地理インスタンスを表していません。各 geography インスタンスは、単一の半球内に収まる必要があります。このエラーの一般的な理由は、ポリゴンのリングの向きが間違っていることです。 これは明らかにまったく同じエラーではありません あなたと同じように-しかし、とにかくそれを上げようと思った[より良いアイデアについては、最後の更新にスキップ]

    2 つ目の質問は、GEOMETRY データ型で機能しますか?例えば。上記の「壊れる」例を GEOMETRY を使用するように変更すると、問題なく動作します:

    DECLARE @geom GEOMETRY -- using GEOMETRY type insteadSET @geom =GEOMETRY::STGeomFromText( 'LINESTRING (142.98873903132778 -11.006193013241768 , 142.9891970000001 -11.005916999999954 -- SNIP 1,119 points , 142.04362479801711 -11.629451936538608 , 0 0 )', 4326 ) -- このポイントは地理を壊しますが、現在は機能します!SELECT @geom, @geom.STNumPoints()  

    特定の問題についてさらに詳細を投稿できる場合は、根本的な問題を示唆している可能性があります。また、SQL Management Studio でポイントを入力するのか、コードを介してポイントを入力するのかを追加していただけますか (C# と SQL データ型のアセンブリですか)?受け取ったエラー メッセージの全文を教えてください (上記以外のメッセージがある場合は、私のエラーを参照してください)。

    しかし、簡単に言えば、「567 ポイントの制限はないと思います」です。

    更新: エドの投稿 取得した正確なエラーが含まれています (System.ArgumentException:24200) - 代わりに GEOMETRY で動作するデータを取得できる場合は、試してみる価値があるかもしれません:



    1. Hibernate基準を使用した左結合

    2. MySQLパスワードを作り直して、db:create on railsをレーキできるようにするにはどうすればよいですか?

    3. jQueryAJAXSuccessでMySqlから特定の応答を取得する

    4. エラー:文字46のスキーマuser1_gmail_comの権限が拒否されました