Packages
geo
1.0.6
4.1.0
4.0.1
4.0.0
3.6.0
3.5.1
3.5.0
3.4.3
3.4.2
3.4.1
3.4.0
3.3.8
3.3.7
3.3.5
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.0
3.1.0
3.0.0
2.1.0
2.0.0
1.5.0
1.4.1
1.4.0
1.3.1
1.3.0
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.18.0
0.17.0
0.16.1
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.2
0.11.1
0.11.0
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.2
0.7.1
0.6.1
0.5.1
Encodes and decodes WKB, WKT, and GeoJSON formats.
Current section
Files
Jump to
Current section
Files
lib/geo/postgis.ex
if Code.ensure_loaded?(Ecto.Query) do
defmodule Geo.PostGIS do
@moduledoc """
Postgis functions that can used in ecto queries
[PostGIS Function Documentation](http://postgis.net/docs/manual-1.3/ch06.html)
Currently only the OpenGIS functions are implemented
ex.
defmodule Example do
import Ecto.Query
import Geo.PostGIS
def example_query(geom) do
from location in Location, limit: 5, select: st_distance(location.geom, ^geom)
end
end
"""
defmacro st_distance(geometryA, geometryB) do
quote do: fragment("ST_Distance(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_dwithin(geometryA, geometryB, float) do
quote do: fragment("ST_DWithin(?,?,?)", unquote(geometryA), unquote(geometryB), unquote(float))
end
defmacro st_equals(geometryA, geometryB) do
quote do: fragment("ST_Equals(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_disjoint(geometryA, geometryB) do
quote do: fragment("ST_Disjoint(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_intersects(geometryA, geometryB) do
quote do: fragment("ST_Intersects(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_touches(geometryA, geometryB) do
quote do: fragment("ST_Touches(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_crosses(geometryA, geometryB) do
quote do: fragment("ST_Crosess(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_within(geometryA, geometryB) do
quote do: fragment("ST_Within(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_overlaps(geometryA, geometryB) do
quote do: fragment("ST_Overlaps(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_contains(geometryA, geometryB) do
quote do: fragment("ST_Contains(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_covers(geometryA, geometryB) do
quote do: fragment("ST_Covers(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_covered_by(geometryA, geometryB) do
quote do: fragment("ST_CoveredBy(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_relate(geometryA, geometryB, intersectionPatternMatrix) do
quote do: fragment("ST_Relate(?,?,?)", unquote(geometryA), unquote(geometryB), unquote(intersectionPatternMatrix))
end
defmacro st_relate(geometryA, geometryB) do
quote do: fragment("ST_Relate(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_centroid(geometry) do
quote do: fragment("ST_Centroid(?)", unquote(geometry))
end
defmacro st_area(geometry) do
quote do: fragment("ST_Area(?)", unquote(geometry))
end
defmacro st_length(geometry) do
quote do: fragment("ST_Length(?)", unquote(geometry))
end
defmacro st_point_on_surface(geometry) do
quote do: fragment("ST_PointOnSurface(?)", unquote(geometry))
end
defmacro st_boundary(geometry) do
quote do: fragment("ST_Boundary(?)", unquote(geometry))
end
defmacro st_buffer(geometry, double) do
quote do: fragment("ST_Buffer(?, ?)", unquote(geometry), unquote(double))
end
defmacro st_buffer(geometry, double, integer) do
quote do: fragment("ST_Buffer(?, ?, ?)", unquote(geometry), unquote(double), unquote(integer))
end
defmacro st_convex_hull(geometry) do
quote do: fragment("ST_ConvexHull(?)", unquote(geometry))
end
defmacro st_intersection(geometryA, geometryB) do
quote do: fragment("ST_Intersection(?, ?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_shift_longitude(geometry) do
quote do: fragment("ST_Shift_Longitude(?)", unquote(geometry))
end
defmacro st_sym_difference(geometryA, geometryB) do
quote do: fragment("ST_SymDifference(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_difference(geometryA, geometryB) do
quote do: fragment("ST_Difference(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_union(geometryList) do
quote do: fragment("ST_Union(?)", unquote(geometryList))
end
defmacro st_union(geometryA, geometryB) do
quote do: fragment("ST_Union(?,?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_mem_union(geometryList) do
quote do: fragment("ST_MemUnion(?)", unquote(geometryList))
end
defmacro st_as_text(geometry) do
quote do: fragment("ST_AsText(?)", unquote(geometry))
end
defmacro st_as_binary(geometry) do
quote do: fragment("ST_AsBinary(?)", unquote(geometry))
end
defmacro st_srid(geometry) do
quote do: fragment("ST_SRID(?)", unquote(geometry))
end
defmacro st_set_srid(geometry, srid) do
quote do: fragment("ST_SetSRID(?, ?)", unquote(geometry), unquote(srid))
end
defmacro st_make_box_2d(geometryA, geometryB) do
quote do: fragment("ST_MakeBox2D(?, ?)", unquote(geometryA), unquote(geometryB))
end
defmacro st_dimension(geometry) do
quote do: fragment("ST_Dimension(?)", unquote(geometry))
end
defmacro st_envelope(geometry) do
quote do: fragment("ST_Envelope(?)", unquote(geometry))
end
defmacro st_is_simple(geometry) do
quote do: fragment("ST_IsSimple(?)", unquote(geometry))
end
defmacro st_is_closed(geometry) do
quote do: fragment("ST_IsClosed(?)", unquote(geometry))
end
defmacro st_is_ring(geometry) do
quote do: fragment("ST_IsRing(?)", unquote(geometry))
end
defmacro st_num_geometries(geometry) do
quote do: fragment("ST_NumGeometries(?)", unquote(geometry))
end
defmacro st_geometry_n(geometry, int) do
quote do: fragment("ST_GeometryN(?, ?)", unquote(geometry), unquote(int))
end
defmacro st_num_points(geometry) do
quote do: fragment("ST_NumPoints(?)", unquote(geometry))
end
defmacro st_point_n(geometry, int) do
quote do: fragment("ST_PointN(?, ?)", unquote(geometry), unquote(int))
end
defmacro st_exterior_ring(geometry) do
quote do: fragment("ST_ExteriorRing(?)", unquote(geometry))
end
defmacro st_num_interior_rings(geometry) do
quote do: fragment("ST_NumInteriorRings(?)", unquote(geometry))
end
defmacro st_num_interior_ring(geometry) do
quote do: fragment("ST_NumInteriorRing(?)", unquote(geometry))
end
defmacro st_interior_ring_n(geometry, int) do
quote do: fragment("ST_InteriorRingN(?, ?)", unquote(geometry), unquote(int))
end
defmacro st_end_point(geometry) do
quote do: fragment("ST_EndPoint(?)", unquote(geometry))
end
defmacro st_start_point(geometry) do
quote do: fragment("ST_StartPoint(?)", unquote(geometry))
end
defmacro st_geometry_type(geometry) do
quote do: fragment("ST_GeometryType(?)", unquote(geometry))
end
defmacro st_x(geometry) do
quote do: fragment("ST_X(?)", unquote(geometry))
end
defmacro st_y(geometry) do
quote do: fragment("ST_Y(?)", unquote(geometry))
end
defmacro st_z(geometry) do
quote do: fragment("ST_Z(?)", unquote(geometry))
end
defmacro st_m(geometry) do
quote do: fragment("ST_M(?)", unquote(geometry))
end
defmacro st_geom_from_text(text, srid \\ -1) do
quote do: fragment("ST_GeomFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_point_from_text(text, srid \\ -1) do
quote do: fragment("ST_PointFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_line_from_text(text, srid \\ -1) do
quote do: fragment("ST_LineFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_linestring_from_text(text, srid \\ -1) do
quote do: fragment("ST_LinestringFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_polygon_from_text(text, srid \\ -1) do
quote do: fragment("ST_PolygonFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_m_point_from_text(text, srid \\ -1) do
quote do: fragment("ST_MPointFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_m_line_from_text(text, srid \\ -1) do
quote do: fragment("ST_MLineFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_m_poly_from_text(text, srid \\ -1) do
quote do: fragment("ST_MPolyFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_m_geom_coll_from_text(text, srid \\ -1) do
quote do: fragment("ST_GeomCollFromText(?, ?)", unquote(text), unquote(srid))
end
defmacro st_m_geom_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_GeomFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_m_geometry_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_GeometryFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_point_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_PointFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_line_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_LineFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_linestring_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_LinestringFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_poly_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_PolyFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_polygon_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_PolygonFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_m_point_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_MPointFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_m_line_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_MLineFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_m_poly_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_MPolyFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_geom_coll_from_wkb(bytea, srid \\ -1) do
quote do: fragment("ST_GeomCollFromWKB(?, ?)", unquote(bytea), unquote(srid))
end
defmacro st_bd_poly_from_text(wkt, srid) do
quote do: fragment("ST_BdPolyFromText(?, ?)", unquote(wkt), unquote(srid))
end
defmacro st_bd_m_poly_from_text(wkt, srid) do
quote do: fragment("ST_BdMPolyFromText(?, ?)", unquote(wkt), unquote(srid))
end
end
end