GeoSQL.MM (GeoSQL v1.3.0)

View Source

Functions from the SQL/MM standard that can used in Ecto queries.

Examples

defmodule Example do
  import Ecto.Query
  use GeoSQL.MM

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

Summary

Geometry Constructors

NOTE: this function does not currently exist in Spatialite

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()

Data Formats

gml_to_sql(geomgml)

(macro)

gml_to_sql(geomgml, srid)

(macro)

Geometry Accessors

boundary(geometry)

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

coord_dim(geometry, repo \\ nil)

(macro)
@spec coord_dim(GeoSQL.geometry_input(), Ecto.Repo.t() | nil) :: GeoSQL.fragment()

Note: this function takes an optional Ecto.Repo parameter due to some backends implementing the non-standard ST_NDims rather than ST_CoordDim

curve_n(compound_curve, index)

(macro)
@spec curve_n(GeoSQL.geometry_input(), index :: integer() | GeoSQL.geometry_input()) ::
  GeoSQL.fragment()

curve_to_line(curve)

(macro)
@spec curve_to_line(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_empty(geometry)

(macro)

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_curves(curve)

(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_patches(geometry)

(macro)

num_points(geometry)

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

patch_n(geometry, face_index)

(macro)
@spec patch_n(
  GeoSQL.geometry_input(),
  face_index :: number() | 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()

polygon(linestring, srid)

(macro)

NOTE: this function does not currently exist in Spatialite

Geometry Editors

curve_to_line(curve, tolerance, tolerance_type \\ 0, flags \\ 0)

(macro)

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()

Linear Referencing

locate_along(geometry, measure)

(macro)

locate_between(geometry, measure_start, measure_end)

(macro)

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()

perimeter(geometry)

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

perimeter(geometry, use_spheroid)

(macro)
@spec perimeter(
  GeoSQL.geometry_input(),
  use_spheroid :: boolean() | 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)

Topological 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)

ordering_equals(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()

geom_from_text(text, srid \\ 0)

(macro)

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()