Definición
ST_Perimeter devuelve la longitud de la línea continua que forma el límite de un polígono cerrado o una entidad multipoligonal.
Esta función es nueva en 10.8.1.
Sintaxis
Las dos primeras opciones de cada sección devuelven el perímetro en las unidades del sistema de coordenadas definido para la entidad. Las dos opciones siguientes permiten especificar la unidad de medida lineal. Para obtener una lista de valores admitidos para linear_unit_name, consulte ST_Distance.
Oracle y 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)
Tipo de devolución
Precisión doble
Ejemplos
Oracle
En el ejemplo que aparece a continuación, un naturalista que está estudiando las aves costeras necesita determinar la longitud de la orilla de los lagos de una zona determinada. Los lagos están almacenados como polígonos en la tabla waterbodies. Se usa una sentencia SELECT con la función ST_Perimeter para devolver el perímetro de cada lago (entidad) en la tabla 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;
La sentencia SELECT devuelve lo siguiente:
ID PERIMETER 1 +1.8000000
En el siguiente ejemplo, creará una tabla llamada bfp, insertará tres entidades y calculará el perímetro de cada entidad en unidades de medida lineal:
--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;
La sentencia SELECT devuelve el perímetro de cada entidad en tres unidades:
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
En el ejemplo que aparece a continuación, un naturalista que está estudiando las aves costeras necesita determinar la longitud de la orilla de los lagos de una zona determinada. Los lagos están almacenados como polígonos en la tabla waterbodies. Se usa una sentencia SELECT con la función ST_Perimeter para devolver el perímetro de cada lago (entidad) en la tabla 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;
La sentencia SELECT devuelve lo siguiente:
ID PERIMETER 1 +1.8000000
En el siguiente ejemplo, creará una tabla llamada bfp, insertará tres entidades y calculará el perímetro de cada entidad en unidades de medida lineal:
--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;
La sentencia SELECT devuelve el perímetro de cada entidad en tres unidades:
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
En el ejemplo que aparece a continuación, un naturalista que está estudiando las aves costeras necesita determinar la longitud de la orilla de los lagos de una zona determinada. Los lagos están almacenados como polígonos en la tabla waterbodies. Se usa una sentencia SELECT con la función ST_Perimeter para devolver el perímetro de cada lago (entidad) en la tabla 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;
La sentencia SELECT devuelve lo siguiente:
ID PERIMETER 1 +1.8000000
En el siguiente ejemplo, creará una tabla llamada bfp, insertará tres entidades y calculará el perímetro de cada entidad en unidades de medida lineal:
--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;
La sentencia SELECT devuelve el perímetro de cada entidad en tres unidades:
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