GeoSQL.MM2 (GeoSQL v0.1.0)

View Source

SQL/MM 2 functions that can used in ecto queries.

Examples

defmodule Example do
  import Ecto.Query
  use GeoSQL.MM2

  def example_query(geom) do
    from location in Location, limit: 5, select: MM2.distance(location.geom, ^geom)
  end
end

Summary

Types

boundary_node_rule()

@type boundary_node_rule() ::
  :ogc_mod2 | :endpoint | :multivalent_endpoint | :monovalent_endpoint

Affine Transforms

transform(geometry, srid)

(macro)
@spec transform(geometry :: GeoSQL.geometry_input(), srid :: pos_integer()) ::
  GeoSQL.fragment()

Geometry Accessors

boundary(geometry)

(macro)
@spec boundary(GeoSQL.geometry_input()) :: GeoSQL.fragment()

dimension(geometry)

(macro)
@spec dimension(GeoSQL.geometry_input()) :: GeoSQL.fragment()

end_point(geometry)

(macro)
@spec end_point(GeoSQL.geometry_input()) :: GeoSQL.fragment()

envelope(geometry)

(macro)
@spec envelope(GeoSQL.geometry_input()) :: GeoSQL.fragment()

geometry_n(geometry, index)

(macro)
@spec geometry_n(GeoSQL.geometry_input(), index :: pos_integer()) :: GeoSQL.fragment()

geometry_type(geometry)

(macro)
@spec geometry_type(GeoSQL.geometry_input()) :: GeoSQL.fragment()

interior_ring_n(geometry, index)

(macro)
@spec interior_ring_n(GeoSQL.geometry_input(), index :: pos_integer()) ::
  GeoSQL.fragment()

is_closed(geometry)

(macro)
@spec is_closed(GeoSQL.geometry_input()) :: GeoSQL.fragment()

is_ring(geometry)

(macro)
@spec is_ring(GeoSQL.geometry_input()) :: GeoSQL.fragment()

is_simple(geometry)

(macro)
@spec is_simple(GeoSQL.geometry_input()) :: GeoSQL.fragment()

m(geometry)

(macro)

num_geometries(geometry)

(macro)
@spec num_geometries(GeoSQL.geometry_input()) :: GeoSQL.fragment()

num_interior_rings(geometry)

(macro)
@spec num_interior_rings(GeoSQL.geometry_input()) :: GeoSQL.fragment()

num_points(geometry)

(macro)
@spec num_points(GeoSQL.geometry_input()) :: GeoSQL.fragment()

point_n(geometry, index)

(macro)
@spec point_n(GeoSQL.geometry_input(), index :: pos_integer()) :: GeoSQL.fragment()

start_point(geometry)

(macro)
@spec start_point(GeoSQL.geometry_input()) :: GeoSQL.fragment()

x(geometry)

(macro)

y(geometry)

(macro)

z(geometry)

(macro)

Geometry Constructors

point(x, y)

(macro)
@spec point(x :: number(), y :: number()) :: GeoSQL.fragment()

Geometry Processing

buffer(geometry, radius)

(macro)
@spec buffer(GeoSQL.geometry_input(), radius :: number()) :: GeoSQL.fragment()

buffer(geometry, radius, num_quarters_or_params)

(macro)
@spec buffer(
  GeoSQL.geometry_input(),
  radius :: number(),
  num_quarters_or_params :: number() | String.t()
) :: GeoSQL.fragment()

centroid(geometry)

(macro)
@spec centroid(GeoSQL.geometry_input()) :: GeoSQL.fragment()

convex_hull(geometry)

(macro)
@spec convex_hull(GeoSQL.geometry_input()) :: GeoSQL.fragment()

point_on_surface(geometry)

(macro)
@spec point_on_surface(GeoSQL.geometry_input()) :: GeoSQL.fragment()

Geometry Validation

is_valid(geometry)

(macro)
@spec is_valid(GeoSQL.geometry_input()) :: GeoSQL.fragment()

Measurement

area(geometry)

(macro)

distance(geometryA, geometryB, in_meters \\ false)

(macro)
@spec distance(
  GeoSQL.geometry_input(),
  GeoSQL.geometry_input(),
  in_meters :: boolean()
) ::
  GeoSQL.fragment()

length(geometry)

(macro)
@spec length(GeoSQL.geometry_input()) :: GeoSQL.fragment()

Overlays

difference(geometryA, geometryB)

(macro)

intersection(geometryA, geometryB)

(macro)

sym_difference(geometryA, geometryB)

(macro)

union(geometryList)

(macro)
@spec union(geometryList :: GeoSQL.geometry_input()) :: GeoSQL.fragment()

union(geometryA, geometryB)

(macro)

Spatial Reference Systems

srid(geometry)

(macro)

Topology Relationships

contains(geometry, contains)

(macro)
@spec contains(GeoSQL.geometry_input(), contains :: GeoSQL.geometry_input()) ::
  GeoSQL.fragment()

crosses(geometryA, geometryB)

(macro)

disjoint(geometryA, geometryB)

(macro)

equals(geometryA, geometryB)

(macro)

intersects(geometryA, geometryB)

(macro)

overlaps(geometryA, geometryB)

(macro)

relate(geometryA, geometryB)

(macro)

relate(geometryA, geometryB, boundary_rule)

(macro)
@spec relate(
  GeoSQL.geometry_input(),
  GeoSQL.geometry_input(),
  matrix_or_rule :: String.t() | boundary_node_rule()
) :: GeoSQL.fragment()

touches(geometryA, geometryB)

(macro)

within(geometryA, geometryB)

(macro)

Well-Known Binary (WKB)

as_binary(geometry)

(macro)
@spec as_binary(GeoSQL.geometry_input()) :: GeoSQL.fragment()

geom_from_wkb(bytea, srid \\ 0)

(macro)
@spec geom_from_wkb(text :: binary(), srid :: integer()) :: GeoSQL.fragment()

linestring_from_wkb(wkb, srid \\ 0)

(macro)

point_from_wkb(bytea, srid \\ 0)

(macro)
@spec point_from_wkb(text :: binary(), srid :: integer()) :: GeoSQL.fragment()

Well-Known Text (WKT)

as_text(geometry)

(macro)
@spec as_text(GeoSQL.geometry_input()) :: GeoSQL.fragment()

geom_collection_from_text(text, srid \\ 0)

(macro)
@spec geom_collection_from_text(text :: binary(), srid :: integer()) ::
  GeoSQL.fragment()

line_from_text(text, srid \\ 0)

(macro)
@spec line_from_text(text :: String.t(), srid :: integer()) :: GeoSQL.fragment()
@spec line_from_text(text :: binary(), srid :: integer()) :: GeoSQL.fragment()

m_line_from_text(text, srid \\ 0)

(macro)
@spec m_line_from_text(text :: binary(), srid :: integer()) :: GeoSQL.fragment()

m_point_from_text(text, srid \\ 0)

(macro)
@spec m_point_from_text(text :: binary(), srid :: integer()) :: GeoSQL.fragment()

m_poly_from_text(text, srid \\ 0)

(macro)
@spec m_poly_from_text(text :: binary(), srid :: integer()) :: GeoSQL.fragment()

point_from_text(text, srid \\ 0)

(macro)
@spec point_from_text(text :: binary(), srid :: integer()) :: GeoSQL.fragment()

polygon_from_text(text, srid \\ 0)

(macro)
@spec polygon_from_text(text :: binary(), srid :: integer()) :: GeoSQL.fragment()