J'ai créé un type personnalisé dans ma base de données postgresql avec cette structure composite:la création de fonctions d'entrée et de sortie pour le type de postgresql personnalisé à l'aide des types de PostGIS
CREATE TYPE circle_geo AS (
box geography(POLYGON,4326),
center geography(POINT,4326),
radius float8
);
donc il utilise certains types de PostGIS (POINT et POLYGON). Maintenant je voudrais pouvoir créer une fonction INPUT et OUTPUT pour ce type personnalisé afin que je puisse passer une simple représentation de chaîne (qui serait (x, y), c comme pour le type de cercle de géométrie native postgresql) pour créer une instance de celui-ci
ma pseudo-fonction d'entrée ressemblerait à ceci:
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))
]))
et mon fonction_sortie devrait retourner simplement un cstring composé de
(center.x_lon,center.y_lat),radius
mon problème est que je ne suis pas savoir comment écrire ces entrée un nd fonctions de sortie. Peuvent-ils être écrits en PLPgSQL ou devraient-ils être écrits en C? Et si oui, comment puis-je faire des appels aux fonctions postgis (comme ST_MakePoint, ST_MakePolygon, ST_MakeLine, ST_Project ...) à l'intérieur d'eux?