Définition
ST_Perimeter renvoie la longueur de la ligne continue qui forme la frontière d’un polygone fermé ou d’une entité multisurfacique.
Cette fonction est une nouveauté de la version 10.8.1.
Syntaxe
Les deux options principales de chaque section renvoient le périmètre dans les unités du système de coordonnées défini pour l’entité. Les deux options secondaires vous permettent de spécifier l’unité de mesure linéaire. Pour obtenir une liste des valeurs prises en charge pour linear_unit_name, reportez-vous à ST_Distance.
Oracle et PostgreSQL
sde.st_perimeter (polygon sde.st_geometry)
sde.st_perimeter (multipolygon sde.st_geometry)
sde.st_perimeter (polygon sde.st_geometry, linear_unit_name text)
sde.st_perimeter (multipolygon sde.st_geometry, linear_unit_name text)
SQLite
st_perimeter (polygon sde.st_geometry)
st_perimeter (multipolygon sde.st_geometry)
st_perimeter (polygon sde.st_geometry, linear_unit_name text)
st_perimeter (multipolygon sde.st_geometry, linear_unit_name text)
Type de retour
Double précision
Exemples
Oracle
Dans l’exemple suivant, un écologiste qui étudie les oiseaux du littoral a besoin de déterminer la longueur du littoral pour les lacs d’une zone déterminée. Les lacs sont mémorisés comme des polygones dans la table waterbodies. Une instruction SELECT avec la fonction ST_Perimeter est utilisée pour renvoyer le périmètre de chaque lac (entité) dans la table waterbodies.
--Create table named waterbodies
CREATE TABLE waterbodies (wbid INTEGER not null, waterbody sde.st_geometry);
--Insert a polygon feature to the waterbodies table
INSERT INTO waterbodies VALUES (
1,
sde.ST_Polygon ('polygon ((0 0, 0 4, 5 4, 5 0, 0 0))', 1)
);
--Find the perimeter of the polygon
SELECT sde.ST_Perimeter (waterbody)
FROM waterbodies;
L’instruction SELECT renvoie les données suivantes :
ID PERIMETER 1 +1.8000000
Dans l’exemple suivant, vous allez créer une table intitulée bfp, insérer trois entités, et calculer le périmètre de chaque entité en unités de mesure linéaire :
--Create table named bfp
CREATE TABLE bfp (
building_id integer not null,
footprint sde.st_geometry);
--Insert polygon features to the bfp table
INSERT INTO BFP (building_id, footprint) VALUES (
1,
sde.st_polygon ('polygon ((0 0, 0 10, 10 10, 10 0, 0 0))', 4326)
);
INSERT INTO BFP (building_id, footprint) VALUES (
2,
sde.st_polygon ('polygon ((20 0, 30 20, 40 0, 20 0))', 4326)
);
INSERT INTO BFP (building_id, footprint) VALUES (
3,
sde.st_polygon ('polygon ((20 30, 25 35, 30 30, 20 30))', 4326)
);
--Find the perimeter of each polygon
SELECT sde.ST_Perimeter(footprint)
,sde.ST_Perimeter(footprint, 'meter') as Meter
,sde.ST_Perimeter(footprint, 'km') as KM
,sde.ST_Perimeter(footprint, 'yard') As Yard
FROM bfp;
L’instruction SELECT renvoie le périmètre de chaque entité dans trois unités :
st_perimeter | meter | km | yard -------------------+-------------------+--------------------+-------------------- 40.00000000000001 | 4421256.128972424 | 4421.256128972425 | 4835144.49800134 64.7213595499958 | 7159231.951087892 | 7159.2319510878915 | 7829431.267593933 24.14213562373095 | 2417672.365575198 | 2417.672365575198 | 2643998.6500166208
PostgreSQL
Dans l’exemple suivant, un écologiste qui étudie les oiseaux du littoral a besoin de déterminer la longueur du littoral pour les lacs d’une zone déterminée. Les lacs sont mémorisés comme des polygones dans la table waterbodies. Une instruction SELECT avec la fonction ST_Perimeter est utilisée pour renvoyer le périmètre de chaque lac (entité) dans la table waterbodies.
--Create table named waterbodies
CREATE TABLE waterbodies (wbid INTEGER not null, waterbody sde.st_geometry);
--Insert a polygon feature to the waterbodies table
INSERT INTO waterbodies VALUES (
1,
sde.ST_Polygon ('polygon ((0 0, 0 4, 5 4, 5 0, 0 0))', 1)
);
--Find the perimeter of the polygon
SELECT sde.ST_Perimeter (waterbody)
FROM waterbodies;
L’instruction SELECT renvoie les données suivantes :
ID PERIMETER 1 +1.8000000
Dans l’exemple suivant, vous allez créer une table intitulée bfp, insérer trois entités, et calculer le périmètre de chaque entité en unités de mesure linéaire :
--Create table named bfp
CREATE TABLE bfp (
building_id serial,
footprint sde.st_geometry);
--Insert polygon features to the bfp table
INSERT INTO bfp (footprint) VALUES (
sde.st_polygon ('polygon ((0 0, 0 10, 10 10, 10 0, 0 0))', 4326)
);
INSERT INTO bfp (footprint) VALUES (
sde.st_polygon ('polygon ((20 0, 30 20, 40 0, 20 0))', 4326)
);
INSERT INTO bfp (footprint) VALUES (
sde.st_polygon ('polygon ((20 30, 25 35, 30 30, 20 30))', 4326)
);
--Find the perimeter of each polygon
SELECT sde.st_perimeter(footprint)
,sde.st_perimeter(footprint, 'meter') as Meter
,sde.st_perimeter(footprint, 'km') as KM
,sde.st_perimeter(footprint, 'yard') As Yard
FROM bfp;
L’instruction SELECT renvoie le périmètre de chaque entité dans trois unités :
st_perimeter | meter | km | yard -------------------+-------------------+--------------------+-------------------- 40.00000000000001 | 4421256.128972424 | 4421.256128972425 | 4835144.49800134 64.7213595499958 | 7159231.951087892 | 7159.2319510878915 | 7829431.267593933 24.14213562373095 | 2417672.365575198 | 2417.672365575198 | 2643998.6500166208
SQLite
Dans l’exemple suivant, un écologiste qui étudie les oiseaux du littoral a besoin de déterminer la longueur du littoral pour les lacs d’une zone déterminée. Les lacs sont mémorisés comme des polygones dans la table waterbodies. Une instruction SELECT avec la fonction ST_Perimeter est utilisée pour renvoyer le périmètre de chaque lac (entité) dans la table waterbodies.
--Create table named waterbodies and add a spatial column (waterbody) to it
CREATE TABLE waterbodies (wbid integer primary key autoincrement not null
);
SELECT AddGeometryColumn(
NULL,
'waterbodies',
'waterbody',
4326,
'polygon',
'xy',
'null'
);
--Insert a polygon feature to the waterbodies table
INSERT INTO waterbodies VALUES (
1,
ST_Polygon ('polygon ((0 0, 0 4, 5 4, 5 0, 0 0))', 1)
);
--Find the perimeter of the polygon
SELECT ST_Perimeter (waterbody)
FROM waterbodies;
L’instruction SELECT renvoie les données suivantes :
ID PERIMETER 1 +1.8000000
Dans l’exemple suivant, vous allez créer une table intitulée bfp, insérer trois entités, et calculer le périmètre de chaque entité en unités de mesure linéaire :
--Create table named bfp and add a spatial column (footprints) to it
CREATE TABLE bfp (
building_id integer primary key autoincrement not null
);
SELECT AddGeometryColumn(
NULL,
'bfp',
'footprint',
4326,
'polygon',
'xy',
'null'
);
--Insert polygon features to the bfp table
INSERT INTO bfp (footprint) VALUES (
st_polygon ('polygon ((0 0, 0 10, 10 10, 10 0, 0 0))', 4326)
);
INSERT INTO bfp (footprint) VALUES (
st_polygon ('polygon ((20 0, 30 20, 40 0, 20 0))', 4326)
);
INSERT INTO bfp (footprint) VALUES (
st_polygon ('polygon ((20 30, 25 35, 30 30, 20 30))', 4326)
);
--Find the perimeter of each polygon
SELECT ST_Perimeter(footprint)
,ST_Perimeter(footprint, 'meter') as Meter
,ST_Perimeter(footprint, 'km') as KM
,ST_Perimeter(footprint, 'yard') As Yard
FROM bfp;
L’instruction SELECT renvoie le périmètre de chaque entité dans trois unités :
st_perimeter | meter | km | yard -------------------+-------------------+--------------------+-------------------- 40.00000000000001 | 4421256.128972424 | 4421.256128972425 | 4835144.49800134 64.7213595499958 | 7159231.951087892 | 7159.2319510878915 | 7829431.267593933 24.14213562373095 | 2417672.365575198 | 2417.672365575198 | 2643998.6500166208