を使用してPostgreSQLのカスタムタイプの入力および出力関数を作成する私は、この複合構造を持つ私のPostgreSQLデータベースでカスタムタイプを作成しました:は、PostGISのタイプに
CREATE TYPE circle_geo AS (
box geography(POLYGON,4326),
center geography(POINT,4326),
radius float8
);
ので、それはいくつかのPostGISのタイプ(POINTとPOLYGON)を使用しています。 今、このカスタムタイプのINPUTとOUTPUT関数を作成して、単純な文字列表現(postgresqlのネイティブなジオメトリサークルタイプのような(x、y))を渡すことができるようにしたいと思います
私の入力擬似関数は次のようになり、それのインスタンス:
input_function(cstring) where cstring is of the form (x,y),r:
radius = r;
center = ST_MakePoint(x,y);
pdist = sqrt(2*radius*radius);
box = ST_MakePolygon(ST_MakeLine(ARRAY[
ST_Project(center, pdist, radians(45.0)),
ST_Project(center, pdist, radians(135.0)),
ST_Project(center, pdist, radians(-135.0)),
ST_Project(center, pdist, radians(-45.0)),
ST_Project(center, pdist, radians(45.0))
]))
と単に
(center.x_lon,center.y_lat),radius
私の問題で構成さのCStringを返す必要があり、私のoutput_functionはこの私がいないということですこれらの入力を書き込む方法を知っている出力関数を出力します。彼らはPLPgSQLで書かれることができますか、またはCで書かれている必要がありますか?もしそうなら、どうすればそれらの中にPostgis関数(ST_MakePoint、ST_MakePolygon、ST_MakeLine、ST_Projectなど)を呼び出すことができますか?