Definition
"ST_Perimeter" gibt die Länge der kontinuierlichen Linie zurück, die die Grenze eines geschlossenen Polygon- oder Multipolygon-Features bildet.
Diese Funktion ist erstmals in Version 10.8.1 verfügbar.
Syntax
Mit den ersten beiden Optionen in jedem Abschnitt wird den Umfang in den Einheiten des für das Feature definierten Koordinatensystems zurückgegeben. Mit den beiden zweiten Optionen können Sie die lineare Messeinheit angeben. Eine Liste der unterstützten Werte für linear_unit_name finden Sie unter ST_Distance.
Oracle und 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)
Rückgabetyp
Doppelte Genauigkeit
Beispiele
Oracle
Im folgenden Beispiel muss ein Ökologe im Rahmen einer Untersuchung zu Küstenvögeln die Uferlänge für die Seen in einem bestimmten Gebiet ermitteln. Die Seen sind als Polygone in der Tabelle waterbodies gespeichert. Eine SELECT-Anweisung unter Verwendung der Funktion "ST_Perimeter" wird verwendet, um den Umfang der einzelnen Seen (Features) in der Tabelle waterbodies zurückzugeben.
--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;
Die SELECT-Anweisung gibt Folgendes zurück:
ID PERIMETER 1 +1.8000000
Im nächsten Beispiel erstellen Sie eine Tabelle namens "bfp", fügen drei Features ein und berechnen den Umfang jedes Features in linearen Messeinheiten:
--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;
Die SELECT-Anweisung gibt den Umfang jedes Features in drei Einheiten zurück:
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
Im folgenden Beispiel muss ein Ökologe im Rahmen einer Untersuchung zu Küstenvögeln die Uferlänge für die Seen in einem bestimmten Gebiet ermitteln. Die Seen sind als Polygone in der Tabelle waterbodies gespeichert. Eine SELECT-Anweisung unter Verwendung der Funktion "ST_Perimeter" wird verwendet, um den Umfang der einzelnen Seen (Features) in der Tabelle waterbodies zurückzugeben.
--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;
Die SELECT-Anweisung gibt Folgendes zurück:
ID PERIMETER 1 +1.8000000
Im nächsten Beispiel erstellen Sie eine Tabelle namens "bfp", fügen drei Features ein und berechnen den Umfang jedes Features in linearen Messeinheiten:
--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;
Die SELECT-Anweisung gibt den Umfang jedes Features in drei Einheiten zurück:
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
Im folgenden Beispiel muss ein Ökologe im Rahmen einer Untersuchung zu Küstenvögeln die Uferlänge für die Seen in einem bestimmten Gebiet ermitteln. Die Seen sind als Polygone in der Tabelle waterbodies gespeichert. Eine SELECT-Anweisung unter Verwendung der Funktion "ST_Perimeter" wird verwendet, um den Umfang der einzelnen Seen (Features) in der Tabelle waterbodies zurückzugeben.
--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;
Die SELECT-Anweisung gibt Folgendes zurück:
ID PERIMETER 1 +1.8000000
Im nächsten Beispiel erstellen Sie eine Tabelle namens "bfp", fügen drei Features ein und berechnen den Umfang jedes Features in linearen Messeinheiten:
--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;
Die SELECT-Anweisung gibt den Umfang jedes Features in drei Einheiten zurück:
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