Definition
ST_Buffer takes a geometry object and distance and returns a geometry object that is the buffer surrounding the source object.
Syntax
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 is the unit of measure for the buffer distance (for example, meters, kilometers, feet, or mile). See the first table in the Projected coordinate system tables.pdf, which you can access from What are projected coordinate systems in the ArcMap help.
Return type
Oracle and PostgreSQL
ST_Geometry
SQLite
Geometryblob
Example
This example creates two tables, sensitive_areas and hazardous_sites; populates the tables; uses ST_Buffer to generate a buffer around the polygons in the hazardous_sites table; and finds where these buffers overlap the sensitive_areas polygons.
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