Définition
ST_Length renvoie la longueur d'une chaîne de lignes ou d'une chaîne multiligne.
Syntaxe
Oracle et 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)
Pour obtenir la liste des noms d'unités pris en charge, reportez-vous à la rubrique ST_Distance.
Type de retour
Double précision
Exemple
Un écologiste local qui étudie les réseaux migratoires des populations de saumon dans les cours d'eau du pays souhaite connaître la longueur de chaque rivière et système hydrographique du pays.
La table waterways est créée avec les colonnes ID et name, qui identifient chaque réseau ou chevelu hydrographique stocké dans la table. La colonne water est de type multilinestring puisque les rivière et les réseaux hydrographiques sont souvent un agrégat de plusieurs objets linestring.
La requête SELECT renvoie le nom du système, ainsi que la longueur du système générée par la fonction ST_Length. Dans Oracle et PostgreSQL, les unités sont celles utilisées par le système de coordonnées. Dans SQLite, les kilomètres sont spécifiés.
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