Etiquetas

SQL Server (geometry-funciones)

 



A continuación, te proporciono una lista de las principales funciones espaciales que puedes utilizar en SQL Server con los tipos de datos espaciales (GEOMETRY y GEOGRAPHY). Estas funciones son útiles para trabajar con geodatos:

Funciones de conversión

  1. .STAsText()

    • Convierte un objeto espacial a su representación en formato WKT (Well-Known Text).
    • Ejemplo:
      SELECT [geom].STAsText() AS WKT FROM [tabla];
  2. .STAsBinary()

    • Convierte un objeto espacial a su representación en formato WKB (Well-Known Binary).
    • Ejemplo:
      SELECT [geom].STAsBinary() AS WKB FROM [tabla];
  3. .STGeometryType()

    • Devuelve el tipo de geometría (Point, Polygon, LineString, etc.).
    • Ejemplo:
      SELECT [geom].STGeometryType() AS GeometryType FROM [tabla];
  4. .STSrid()

    • Devuelve el SRID (Spatial Reference System Identifier) del objeto espacial.
    • Ejemplo:
      SELECT [geom].STSrid() AS SRID FROM [tabla];

Funciones de creación

  1. GEOMETRY::STGeomFromText(WKT, SRID)

    • Crea un objeto GEOMETRY desde su representación WKT.
    • Ejemplo:
      SELECT GEOMETRY::STGeomFromText('POINT(1 1)', 4326) AS Geometry;
  2. GEOMETRY::STGeomFromWKB(WKB, SRID)

    • Crea un objeto GEOMETRY desde su representación WKB.
    • Ejemplo:
      SELECT GEOMETRY::STGeomFromWKB(0x0101000000000000000000F03F000000000000F03F, 4326) AS Geometry;
  3. GEOMETRY::Parse(WKT)

    • Convierte una cadena WKT directamente a un objeto GEOMETRY.
    • Ejemplo:
      SELECT GEOMETRY::Parse('POINT(1 1)') AS Geometry;

Funciones de manipulación

  1. .STBuffer(distance)

    • Genera un buffer alrededor de la geometría a una distancia específica.
    • Ejemplo:
      SELECT [geom].STBuffer(100) AS BufferedGeometry FROM [tabla];
  2. .STIntersection(other_geometry)

    • Devuelve la intersección de dos geometrías.
    • Ejemplo:
      SELECT [geom1].STIntersection([geom2]) AS Intersection FROM [tabla];
  3. .STUnion(other_geometry)

    • Devuelve la unión de dos geometrías.
    • Ejemplo:
      SELECT [geom1].STUnion([geom2]) AS UnionGeometry FROM [tabla];
  4. .STDifference(other_geometry)

    • Devuelve la diferencia entre dos geometrías.
    • Ejemplo:
      SELECT [geom1].STDifference([geom2]) AS Difference FROM [tabla];
  5. .STEnvelope()

    • Devuelve el rectángulo envolvente (bounding box) de la geometría.
    • Ejemplo:
      SELECT [geom].STEnvelope() AS Envelope FROM [tabla];

Funciones de análisis

  1. .STArea()

    • Devuelve el área de una geometría (solo para polígonos).
    • Ejemplo:
      SELECT [geom].STArea() AS Area FROM [tabla];
  2. .STLength()

    • Devuelve la longitud de una geometría lineal.
    • Ejemplo:
      SELECT [geom].STLength() AS Length FROM [tabla];
  3. .STDistance(other_geometry)

    • Calcula la distancia mínima entre dos geometrías.
    • Ejemplo:
      SELECT [geom1].STDistance([geom2]) AS Distance FROM [tabla];
  4. .STContains(other_geometry)

    • Devuelve 1 si una geometría contiene a otra.
    • Ejemplo:
      SELECT [geom1].STContains([geom2]) AS Contains FROM [tabla];
  5. .STIntersects(other_geometry)

    • Devuelve 1 si dos geometrías se intersectan.
    • Ejemplo:
      SELECT [geom1].STIntersects([geom2]) AS Intersects FROM [tabla];
  6. .STOverlaps(other_geometry)

    • Devuelve 1 si dos geometrías se solapan parcialmente.
    • Ejemplo:
      SELECT [geom1].STOverlaps([geom2]) AS Overlaps FROM [tabla];
  7. .STTouches(other_geometry)

    • Devuelve 1 si dos geometrías comparten un límite común pero no se solapan.
    • Ejemplo:
      SELECT [geom1].STTouches([geom2]) AS Touches FROM [tabla];
  8. .STWithin(other_geometry)

    • Devuelve 1 si una geometría está completamente contenida dentro de otra.
    • Ejemplo:
      SELECT [geom1].STWithin([geom2]) AS Within FROM [tabla];

Funciones de validación y corrección

  1. .STIsValid()

    • Devuelve 1 si la geometría es válida según las reglas espaciales.
    • Ejemplo:
      SELECT [geom].STIsValid() AS IsValid FROM [tabla];
  2. .MakeValid()

    • Corrige una geometría no válida y devuelve una válida.
    • Ejemplo:
      SELECT [geom].MakeValid() AS ValidGeometry FROM [tabla];
  3. .STIsEmpty()

    • Devuelve 1 si la geometría está vacía.
    • Ejemplo:
      SELECT [geom].STIsEmpty() AS IsEmpty FROM [tabla];

Esta lista incluye las funciones más comunes y útiles para trabajar con geodatos en SQL Server. ¡Espero que te sea útil!