2016-06-16 3 views
1

Wie kann ich diese SQL-Abfrage in Ruby Sequel schreiben:Spatial where-Klausel in Ruby Sequel

SELECT 
    polygon.geometry, count(line) 
FROM 
    polygon, line 
WHERE 
    st_intersects(line.geometry, polygon.geometry) 
GROUP BY 
    polygon.geometry 

Antwort

0

Es könnte ein besserer Weg, aber das ist mein Stich an einer Lösung:

DB.from(:polygon, :line) 
    .where('st_intersects(line.geometry, polygon.geometry') 
    .select('polygon.geometry, count(line)') 
    .group_by(:polygon__geometry) 

generierte SQL Query (ich tat dies mit einer Oracle-DB aber die Ergebnisse sollten gleich sein):

#<Sequel::Oracle::Dataset: "SELECT 'polygon.geometry, count(line)' FROM \"POLYGON\", \"LINE\" WHERE (st_intersects(line.geometry, polygon.geometry) GROUP BY \"POLYGON\".\"GEOMETRY\""> 
0
DB[:polygon, :line]. 
    select_group(:polygon__geometry). 
    select_append{count(line)}. 
    where{st_intersects(:line__geometry, :polygon__geometry)}