Definición
ST_Length devuelve la longitud de una cadena de líneas o de cadena de texto multilínea.
Sintaxis
Oracle y PostgreSQL
sde.st_length (line1 sde.st_geometry) sde.st_length (multiline1 sde.st_geometry)
SQLite
st_length (line1 geometryblob) st_length (multiline1 geometryblob) st_length (line1 geometryblob, unit_name text) st_length (multiline1 geometryblob, unit_name text)
Para obtener una lista de los nombres de unidades admitidos, consulte ST_Distance.
Tipo de devolución
Precisión doble
Ejemplo
Un ecologista que estudia los patrones migratorios de la población de salmones en las vías navegables del país quiere obtener la longitud de todos los sistemas de ríos y arroyos del país.
La tabla de vías navegables se crea con las columnas de Id. y nombre, que identifican cada sistema de arroyo y ríos almacenado en la tabla. La columna del agua es una cadena de texto multilínea porque los sistemas de ríos y arroyos se agregan con frecuencia de varias cadenas de texto de líneas.
La consulta SELECT devuelve el nombre del sistema junto con la longitud del sistema generada por la función ST_Length. En Oracle y PostgreSQL, las unidades son las empleadas por el sistema de coordenadas. En SQLite, se especifican kilómetros.
Oracle
CREATE TABLE waterways (
oid integer,
name varchar(128),
water sde.st_geometry
);
INSERT INTO waterways (oid, name, water) VALUES (
1111,
'Genesee',
sde.st_multilinestring ('multilinestring ((33 2, 34 3, 35 6),
(28 4, 29 5, 31 8, 43 12), (39 3, 37 4, 36 7))', 4326)
);
SELECT name, sde.st_length (water) "Length"
FROM WATERWAYS;
NAME Length
Genesee 27.6437123
PostgreSQL
CREATE TABLE waterways (
oid serial,
name varchar(128),
water sde.st_geometry
);
INSERT INTO waterways (name, water) VALUES (
'Genesee',
sde.st_multilinestring ('multilinestring ((33 2, 34 3, 35 6),
(28 4, 29 5, 31 8, 43 12), (39 3, 37 4, 36 7))', 4326)
);
SELECT name AS "Watershed Name",
sde.st_length (water) AS "Length"
FROM waterways;
Watershed Name | Length
Genesee | 27.6437123387202
SQLite
CREATE TABLE waterways (
oid integer primary key autoincrement not null,
name text(128)
);
SELECT AddGeometryColumn (
NULL,
'waterways',
'water',
4326,
'multilinestring',
'xy',
'null'
);
INSERT INTO waterways (name, water) VALUES (
'Genesee',
st_multilinestring ('multilinestring ((33 2, 34 3, 35 6),
(28 4, 29 5, 31 8, 43 12), (39 3, 37 4, 36 7))', 4326)
);
SELECT name AS "Watershed Name",
st_length (water, 'kilometer') AS "Length"
FROM waterways1;
Watershed Name Length
Genesee 3047.75515002795