ST_Length

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

Thèmes connexes

5/10/2014