Class: Arel::Visitors::PostGIS
- Inherits:
-
PostgreSQL
- Object
- PostgreSQL
- Arel::Visitors::PostGIS
- Includes:
- RGeo::ActiveRecord::SpatialToSql
- Defined in:
- lib/arel/visitors/postgis.rb
Instance Method Summary collapse
- #visit_Arel_Nodes_SpatialArea(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialBuffer(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialContains(node, collector) ⇒ Object
-
#visit_Arel_Nodes_SpatialDistance(node, collector) ⇒ Object
Visitor methods for spatial nodes.
- #visit_Arel_Nodes_SpatialDistanceOperator(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialDWithin(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialIntersects(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialLength(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialTransform(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialValue(node, collector) ⇒ Object
- #visit_Arel_Nodes_SpatialWithin(node, collector) ⇒ Object
- #visit_in_spatial_context(node, collector) ⇒ Object
Instance Method Details
#visit_Arel_Nodes_SpatialArea(node, collector) ⇒ Object
228 229 230 231 232 |
# File 'lib/arel/visitors/postgis.rb', line 228 def visit_Arel_Nodes_SpatialArea(node, collector) collector << "ST_Area(" visit(node.expr, collector) collector << ")" end |
#visit_Arel_Nodes_SpatialBuffer(node, collector) ⇒ Object
212 213 214 215 216 217 218 |
# File 'lib/arel/visitors/postgis.rb', line 212 def visit_Arel_Nodes_SpatialBuffer(node, collector) collector << "ST_Buffer(" visit(node.left, collector) collector << ", " collector << node.right.to_s collector << ")" end |
#visit_Arel_Nodes_SpatialContains(node, collector) ⇒ Object
174 175 176 177 178 179 180 |
# File 'lib/arel/visitors/postgis.rb', line 174 def visit_Arel_Nodes_SpatialContains(node, collector) collector << "ST_Contains(" visit(node.left, collector) collector << ", " visit_spatial_operand(node.right, collector) collector << ")" end |
#visit_Arel_Nodes_SpatialDistance(node, collector) ⇒ Object
Visitor methods for spatial nodes
160 161 162 163 164 165 166 |
# File 'lib/arel/visitors/postgis.rb', line 160 def visit_Arel_Nodes_SpatialDistance(node, collector) collector << "ST_Distance(" visit(node.left, collector) collector << ", " visit_spatial_operand(node.right, collector) collector << ")" end |
#visit_Arel_Nodes_SpatialDistanceOperator(node, collector) ⇒ Object
234 235 236 237 238 |
# File 'lib/arel/visitors/postgis.rb', line 234 def visit_Arel_Nodes_SpatialDistanceOperator(node, collector) visit(node.left, collector) collector << " <-> " visit_spatial_operand(node.right, collector) end |
#visit_Arel_Nodes_SpatialDWithin(node, collector) ⇒ Object
202 203 204 205 206 207 208 209 210 |
# File 'lib/arel/visitors/postgis.rb', line 202 def visit_Arel_Nodes_SpatialDWithin(node, collector) collector << "ST_DWithin(" visit(node.left, collector) collector << ", " visit_spatial_operand(node.right, collector) collector << ", " collector << node.distance.to_s collector << ")" end |
#visit_Arel_Nodes_SpatialIntersects(node, collector) ⇒ Object
194 195 196 197 198 199 200 |
# File 'lib/arel/visitors/postgis.rb', line 194 def visit_Arel_Nodes_SpatialIntersects(node, collector) collector << "ST_Intersects(" visit(node.left, collector) collector << ", " visit_spatial_operand(node.right, collector) collector << ")" end |
#visit_Arel_Nodes_SpatialLength(node, collector) ⇒ Object
168 169 170 171 172 |
# File 'lib/arel/visitors/postgis.rb', line 168 def visit_Arel_Nodes_SpatialLength(node, collector) collector << "ST_Length(" visit(node.expr, collector) collector << ")" end |
#visit_Arel_Nodes_SpatialTransform(node, collector) ⇒ Object
220 221 222 223 224 225 226 |
# File 'lib/arel/visitors/postgis.rb', line 220 def visit_Arel_Nodes_SpatialTransform(node, collector) collector << "ST_Transform(" visit(node.left, collector) collector << ", " collector << node.right.to_s collector << ")" end |
#visit_Arel_Nodes_SpatialValue(node, collector) ⇒ Object
190 191 192 |
# File 'lib/arel/visitors/postgis.rb', line 190 def visit_Arel_Nodes_SpatialValue(node, collector) visit_spatial_operand(node.value, collector) end |
#visit_Arel_Nodes_SpatialWithin(node, collector) ⇒ Object
182 183 184 185 186 187 188 |
# File 'lib/arel/visitors/postgis.rb', line 182 def visit_Arel_Nodes_SpatialWithin(node, collector) collector << "ST_Within(" visit(node.left, collector) collector << ", " visit_spatial_operand(node.right, collector) collector << ")" end |
#visit_in_spatial_context(node, collector) ⇒ Object
150 151 152 153 154 155 156 157 |
# File 'lib/arel/visitors/postgis.rb', line 150 def visit_in_spatial_context(node, collector) # Use ST_GeomFromEWKT for EWKT geometries if node.is_a?(String) && node =~ /SRID=\d*;/ collector << "ST_GeomFromEWKT(#{quote(node)})" else super(node, collector) if defined?(super) end end |