Re: [FreeGeoCZ] PlPython + Postgis

Leknín Řepánek <[email protected]>
Newsgroups gmane.comp.gis.grass.cz
Message-ID <[email protected]>
Hm volat z postgre pajtn, ve kterym se provede komandlajna, která posílá
rourou z gdal na psql. No, to je už trochu ozlomkrk. To přece musí jít
udělat jinak. Ta gdalka de dát do pythonu... Nebo ty to posíláš na jinej
servr?

Je;

On Tue, Apr 08, 2014 at 12:57:24AM +0200, Martin Chodúr wrote:
> 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
> [email protected]
> http://mailman.fsv.cvut.cz/mailman/listinfo/freegeocz

_______________________________________________
FreeGeoCZ mailing list
[email protected]
http://mailman.fsv.cvut.cz/mailman/listinfo/freegeocz
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.