Ahoj,

statistiky mám OK, ono to bude tím, že je to prostě náročné.

Čisté a jednoduché řešení je tohle (účelem je získat seznam SO, které se mají 
zobrazit na mapě):

select kod
from ruian.rn_stavebni_objekt so
left join gis.cz_polygon polygon -- polygony v OSM
        on st_intersects(so.hranice, polygon.way)
        and polygon.building is not NULL
        and polygon.building <> 'no'::text
where so.hranice is not NULL and not so.deleted
group by kod
having
        sum(st_area(st_intersection(so.hranice, 
polygon.way))/st_area(so.hranice))      
< 0.7
        or sum(st_area(st_intersection(so.hranice, polygon.way))) is NULL;

jenže to bude pokaždé počítat ty plochy a to je pomalé

tak to zkusím rozdělit na:

- to samé, jen RIGHT join a počítat plochy tedy nebude u těch co se nekryjí

UNION

select kod
from ruian.rn_stavebni_objekt so
left join gis.cz_polygon polygon on st_intersects(so.hranice, polygon.way) AND 
polygon.building is not NULL and polygon.building <> 'no'::text
where so.hranice is not NULL and not so.deleted and polygon.osm_id is NULL
-- tedy všechny, co se nepřekrývají vůbec.

Ten join bere přes index, tedy && bbox a pak recheck.

Asi to stejně moc nepomůže, moc se neušetří. Pořád to bude odhadem kolem 10M 
výpočtů ploch kvůli tomu, že jeden SO v RUIAN bude geometricky vztažen k více 
budovám v OSM.

No asi to nechám a nebude se to počítat každý den :-\


Dne Pá 31. října 2014 09:23:23, Marián Kyral napsal(a):

> Znám hlavně Oracle a tam taky občas narážím na roztodivné záhady s query
> plány. Máš aktuální statistiky? Možná by to chtělo přidat nebo ubrat nějaký
> index ;-)



_______________________________________________
Talk-cz mailing list
Talk-cz@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-cz

Odpovedet emailem