Zdravím, narazil jsem na takový problém. Co se snažím udělat je vytvořit funkci v PLPythonu, která by načetla rastr z databáze, převedla ho do pole hodnot pro clustering, převedla nově vygenerovaný rastr na polygony a vrátila je jako tabulku geometrií. Načtení dat z databáze (přestože ne zrovna ideálním způsobem) se mi podařilo i jejich clusterování, pro převod na polygony jsem chtěl ale využít ST_ Polygon, k tomu ale potřebuji převést výslednou matici zpět na raster a ještě jí nastavit spatial data jako srs bbox atd.
Tady sem bohužel narazil. Gdal nemá podle všeho zatím funkční driver pro výstup do postgis (možná se pletu) a nevím jak tenhle zádrhel obejít zatím. Uložení do souboru je z důvodu že imread() nebere vstup string. jeto jen provizorní řešení. Pokud by někdo uměl poradit, nebo měl lepší nápad jak to řešit, budu vděčný. Podpora práce s rastrem v PostGISu není zatím tak převratná a google neumí poradit už. Předem díky za jakoukoli odpověď Martin Chodúr pro ukázku dosavadní stav funkce: CREATE OR REPLACE FUNCTION cluster (raster text) RETURNS table(geom geometry) AS $$ from sklearn.cluster import AffinityPropagation import matplotlib.pyplot as plt from scipy import misc from osgeo import gdal import os out = plpy.execute("select st_aspng(rast) png from "+raster, 1) f = open('/foo/bin/temp.png','wb') f.write(out[0]['png']) f.close() im = misc.imread('/foo/bin/temp.png') im_reshaped = im.reshape((len(im) * len(im[0]), 3)) af = AffinityPropagation(damping=0.5, convergence_iter=2).fit(im_reshaped) labels_reshaped = af.labels_.reshape(len(im), len(im[0])) ##### dál už to nefunguje a je to jen představa jak by to mohlo jít misc.imsave('/home/fus/out/temp_clustered.png',labels_reshaped) plpy.info(os.system('raster2pgsql /home/fus/out/temp_clustered.png clustering.out | psql -d testovaci -q ')) out = plpy.execute("select st_polygon(rast) geom from clustering.out limit 1") return out $$ LANGUAGE plpythonu;
_______________________________________________ FreeGeoCZ mailing list FreeGeoCZ@fsv.cvut.cz http://mailman.fsv.cvut.cz/mailman/listinfo/freegeocz