5

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

エラー: SqlException: ルーチンの実行中またはユーザー定義集計 'geography' 中の .NET Framework エラー: System.ArgumentException: 24204: 空間参照識別子 (SRID) が無効です。指定された SRID は、sys.spatial_reference_systems カタログ ビューに表示される、サポートされている SRID のいずれかと一致する必要があります。

このエラーは、このように作成されたポイントを SQL DB に保存しようとすると発生します

new Point(it.Lat, it.Lng)

その後、私はGeometryFactoryこのようなものを使用しようとしました:

    public static class GeometryHelper
    {
        public static IGeometryFactory GeometryFactory { get; set; }
            = NtsGeometryServices.Instance.CreateGeometryFactory();
    }
...
    geometryFactory.CreatePoint(new Coordinate(it.Lat, it.Lng))

そして何もありません。

また、特定のSRIDを設定してみました:

    public static class GeometryHelper
    {
        public static IGeometryFactory GeometryFactory { get; set; }
            = NtsGeometryServices.Instance.CreateGeometryFactory(4326);
    }

しかし、次のエラーが発生します。

SqlException: ルーチンの実行中またはユーザー定義集計 'geography' 中の .NET Framework エラー: System.FormatException: 識別された要素の 1 つに無効な形式があります。System.FormatException:

4

2 に答える 2

4

質問を投稿してから数分後に解決しました。最初のエラーについて、それを解決する正しい方法は、問題の内容を実行することです: ジオメトリ ファクトリを作成し、SRID として 4326 を使用します。使用する SRID がデータベース テーブル ( sys.spatial_reference_systems catalog view) にあることを確認する必要があります。4326Microsftのドキュメントにあるように、明らかに標準のものです。

    public static class GeometryHelper
    {
        public static IGeometryFactory GeometryFactory { get; set; }
            = NtsGeometryServices.Instance.CreateGeometryFactory(4326);
    }

2 番目のエラーは、ポイントと緯度経度オブジェクト間のマッピングに関連していました。

NTS の経度と緯度の座標は、X 値と Y 値に関するものです。経度と緯度を表すには、経度には X を使用し、緯度には Y を使用します。これは、これらの値が通常表示される緯度、経度の形式とは逆になっていることに注意してください。

参考:Ef Coreの空間

于 2019-07-25T22:14:07.593 に答える