Définition
ST_Buffer accepte un objet géométrie et une distance et retourne un objet géométrie qui est la zone tampon entourant l'objet source.
Syntaxe
Oracle
sde.st_buffer (geometry sde.st_geometry, distance double_precision) sde.st_buffer (geometry sde.st_geometry, distance double, varchar2 unit_name)
PostgreSQL
sde.st_buffer (geometry sde.st_geometry, distance double_precision) sde.st_buffer (geometry sde.st_geometry, distance double, text unit_name)
SQLite
st_buffer (geometry geometryblob, distance double_precision) st_buffer (geometry geometryblob, distance double, text unit_name)
Unit_name est l’unité de mesure de la distance de la zone tampon (par exemple, mètres, kilomètres, pieds ou miles). Consultez le premier tableau du fichier Projected coordinate system tables.pdf, accessible dans la rubrique Que sont les systèmes de coordonnées projetées de l’aide ArcMap.
Type de retour
Oracle et PostgreSQL
ST_Geometry
SQLite
Geometryblob
Exemple
Cet exemple crée deux tables, sensitive_areas et hazardous_sites, remplit ces tables, utilise ST_Buffer pour générer une zone tampon autour des polygones de la table hazardous_sites et trouve les zones de chevauchement entre ces zones tampons et les polygones sensitive_areas.
Oracle
CREATE TABLE sensitive_areas (
id integer,
zone sde.st_geometry
);
CREATE TABLE hazardous_sites (
site_id integer,
name varchar(40),
location sde.st_geometry
);
INSERT INTO SENSITIVE_AREAS VALUES (
1,
sde.st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 4326)
);
INSERT INTO SENSITIVE_AREAS VALUES (
2,
sde.st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 4326)
);
INSERT INTO SENSITIVE_AREAS VALUES (
3,
sde.st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 0)
);
INSERT INTO HAZARDOUS_SITES VALUES (
102,
'W. H. KleenareChemical Repository',
sde.st_pointfromtext ('point (60 60)', 4326)
);
SELECT sa.id "Sensitive Areas", hs.name "Hazardous Sites"
FROM SENSITIVE_AREAS sa, HAZARDOUS_SITES hs
WHERE sde.st_overlaps (sa.zone, sde.st_buffer (hs.location, .01)) = 1;
PostgreSQL
CREATE TABLE sensitive_areas (
id serial,
zone sde.st_geometry
);
CREATE TABLE hazardous_sites (
site_id serial,
name varchar(40),
location sde.st_geometry
);
INSERT INTO sensitive_areas (zone) VALUES (
sde.st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 4326)
);
INSERT INTO sensitive_areas (zone) VALUES (
sde.st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 4326)
);
INSERT INTO sensitive_areas (zone) VALUES (
sde.st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 4326)
);
INSERT INTO hazardous_sites (name, location) VALUES (
'W. H. KleenareChemical Repository',
sde.st_point ('point (60 60)', 4326)
);
SELECT sa.id AS "Sensitive Areas", hs.name AS "Hazardous Sites"
FROM sensitive_areas sa, hazardous_sites hs
WHERE sde.st_overlaps (sa.zone, sde.st_buffer (hs.location, .01)) = 't';
Sensitive Areas Hazardous Sites
3 W.H. KleenareChemical Repository
SQLite
CREATE TABLE sensitive_areas (
id integer primary key autoincrement not null
);
SELECT AddGeometryColumn (
NULL,
'sensitive_areas',
'zone',
4326,
'polygon',
'xy',
'null'
);
CREATE TABLE hazardous_sites (
site_id integer primary key autoincrement not null,
name varchar(40)
);
SELECT AddGeometryColumn (
NULL,
'hazardous_sites',
'location',
4326,
'point',
'xy',
'null'
);
INSERT INTO sensitive_areas (zone) VALUES (
st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 4326)
);
INSERT INTO sensitive_areas (zone) VALUES (
st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 4326)
);
INSERT INTO sensitive_areas (zone) VALUES (
st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 4326)
);
INSERT INTO hazardous_sites (name, location) VALUES (
'W. H. KleenareChemical Repository',
st_point ('point (60 60)', 4326)
);
SELECT sa.id AS "Sensitive Areas", hs.name AS "Hazardous Sites"
FROM sensitive_areas sa, hazardous_sites hs
WHERE st_overlaps (sa.zone, st_buffer (hs.location, .01)) = 1;
Sensitive Areas Hazardous Sites
3 W.H. KleenareChemical Repository