Home > C# > Npgsql > ドキュメント

PostGISレガシー型のプラグイン

新規作成日 2019-02-25
最終更新日

PostGISレガシー型のプラグイン

PostGIS Legacy Type Plugin

4.0以降、Npgsqlは、外部nugetパッケージの型プラグインをサポートしています。Npgsqlが、PostgreSQL値のCLR型へのマッピングを、どのように変更するか、PostGIS空間型のための以前のサポートは、Npgsqlの外のNpgsql.LegacyPostgisプラグインに、移動しました。空間型を読み書きする推奨された方法は、現在、空間専用のより完全なライブラリのNetTopologySuiteにPostGIS型をマッピングする、Npgsql.NetTopologySuiteです。NetTopologySuiteプラグインは、現在、Npgsqlで空間を作成するために、推奨される方法ですが、Npgsql.LegacyPostgisは、依然として、以前の型をサポートするために、存在しています。

この時点で、レガシー型は、ジオグラフィと(XYZ、XYMやXYZMではなく)XYだけではなく、ジオメトリだけをサポートしています。

設定

Setup

PostGISの従来のプラグインを使用するために、単純に、Npgsql.LegacyPostgisへの依存関係を追加し、設定するだけです。:

using Npgsql;

// Place this at the beginning of your program to use legacy PostGIS everywhere (recommended):
// 従来のPostGISを、どこでも使用する(推奨)ために、これをプログラムの最初に置いてください。
NpgsqlConnection.GlobalTypeMapper.UseLegacyPostgis();

// Or to temporarily use legacy PostGIS on a single connection only:
// あるいは、単一の接続でのみで、従来のPostGISを一時的に使用するには:
conn.TypeMapper.UseLegacyPostgis();

使用法

Usage

あなたが、Npgsql 3.2以前に、内部のPostGIS型を使ったことがある場合、プラグインは、同じように動作します:

NpgsqlConnection.GlobalTypeMapper.UseLegacyPostgis();

// Write
var cmd = new NpgsqlCommand("INSERT INTO table (pg_point, pg_polygon) VALUES (@point, @polygon)", conn);
cmd.Parameters.AddWithValue("point", new PostgisPoint(3.5, 4.5));
cmd.ExecuteNonQuery();

// Read
var cmd = new NpgsqlCommand("SELECT * FROM table", conn);
var reader = cmd.ExecuteReader();
while (reader.Read()) {
    var point = reader.GetFieldValue<PostgisPoint>(0);
    var polygon = reader.GetFieldValue<PostgisPolygon>(1);
}
このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」