도형 버퍼
| 항목 | 값 |
|---|---|
| 화면 이름 | Geometry buffer |
| 식별자 | geometryBufferV1 |
| 지원 실행 방식 | Batch, Streaming |
| 범주 | 지리공간 (Geospatial) |
| 반환 자료형 | Geometry |
도형에서 지정한 거리 이내의 점을 포함하는 영역을 근사합니다. 음수 버퍼는 경계로부터 그 거리 이내의 영역을 제거합니다. z 좌표는 제거하며 선과 점에 거리 0 또는 음수 버퍼를 적용하면 null을 반환합니다.
입력 인자
| 이름 | 지정 여부 | 자료형 | 의미와 조건 |
|---|---|---|---|
Buffer distance | 필수 | Expression<Double> | 투영 좌표계의 단위로 지정하는 버퍼 거리입니다. 단측 버퍼의 거리가 0 이하이면 null입니다. 다각형의 음수 양측 버퍼는 도형을 축소합니다. 선이나 점의 거리가 0 이하이면 null입니다. |
Geometry column | 필수 | Expression<String> | 버퍼를 적용할 도형입니다. |
Projected coordinate system | 필수 | Literal<String> | 버퍼 거리를 해석할 투영 좌표계입니다. 도형을 이 좌표계로 옮겨 버퍼를 계산한 뒤 WGS84로 되돌립니다. authority:id 형식이며 UTM 18N의 예는 EPSG:32618입니다. |
Buffer cap style | 선택 | Enum<Flat, Round, Square> | 버퍼 끝 모양입니다. 기본값은 round입니다. flat은 선의 끝에서 평평하게 자르고 square는 선의 끝을 버퍼 거리만큼 넘어 사각형으로 만듭니다. |
Buffer join style | 선택 | Enum<Bevel, Mitre, Round> | 버퍼 연결부 모양입니다. 기본값은 round입니다. mitre는 뾰족한 모서리, bevel은 모서리를 잘라낸 형태입니다. |
Line segments per quadrant | 선택 | Literal<Integer> | 둥근 끝과 연결부에서 사분원을 근사할 선분 수입니다. 권장 기본값 8에서는 최대 오차가 2%입니다. 높이면 도형이 복잡해져 성능이 저하될 수 있고 낮추면 매끄러움이 줄어듭니다. |
Single or double sided | 선택 | Enum<Double sided, Single sided: left, Single sided: right> | 단측 또는 양측 버퍼를 선택합니다. 단측은 선 문자열/다중 선 문자열과 양의 거리에서만 동작하며, 첫 점에서 끝점으로 진행하는 방향의 왼쪽 또는 오른쪽에 버퍼를 만듭니다. 단측을 선택하면 다각형과 점은 제외합니다. |
입출력 예시
예시 1: 기본 동작
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"Point","coordinates":[-77.07368071728229,38.83040844313318]} | 10.0 | {"type":"Polygon","coordinates":[[[-77.07356558299462, 38.83041048767274],[-77.07356728534256, 38.83... |
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318, 1],[-77.0725293738795,38.83042888342659, 1]]} | 10.0 | {"type":"Polygon","coordinates":[[[-77.07253198637027, 38.83051894052714],[-77.07250947453703, 38.83... |
| {"type":"Polygon","coordinates":[[[-77.07368071728229,38.83040844313318, 1],[-77.0725293738795,38.83... | 10.0 | {"type":"Polygon","coordinates":[[[-77.07379585155829, 38.83040639848026],[-77.07382199292853, 38.83... |
예시 2: 기본 동작
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"Point","coordinates":[-77.07368071728229,38.83040844313318]} | -1.0 | null |
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659]]} | -1.0 | null |
| {"type":"Polygon","coordinates":[[[-77.07368071728229,38.83040844313318],[-77.07370685720375,38.83130901341597],[-77.0725293738795,38.83042888342659],[-77.07368071728229,38.83040844313318]]]} | -1.0 | {"type":"Polygon","coordinates":[[[-77.07366946524603, 38.830417653295896],[-77.07369471254682, 38.83128747619332],[-77.07255743103391, 38.83043739579778],[-77.07366946524603, 38.830417653295896]]]} |
| {"type":"Polygon","coordinates":[[[-77.07331719760555, 38.83072458211154],[-77.07331719760555, 38.83... | -500.0 | null |
예시 3: 기본 동작
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:SINGLE_SIDED_LEFT
| geometry | distance | 출력 |
|---|---|---|
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659]]} | 5.0 | {"type":"Polygon","coordinates":[[[-77.0725293738795, 38.83042888342659],[-77.07368071728229, 38.830... |
| {"type":"Polygon","coordinates":[[[-77.0725293738795, 38.83042888342659],[-77.07368071728229, 38.830... | 5.0 | null |
| {"type":"Point","coordinates": [-77.0725293738795, 38.83042888342659]]} | 5.0 | null |
예시 4: 기본 동작
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:SINGLE_SIDED_RIGHT
| geometry | distance | 출력 |
|---|---|---|
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659]]} | 5.0 | {"type":"Polygon","coordinates":[[[-77.07368071728229, 38.83040844313318],[-77.0725293738795, 38.830... |
예시 5: null 처리
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| null | 10.0 | null |
예시 6: null 처리
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:SINGLE_SIDED_LEFT
| geometry | distance | 출력 |
|---|---|---|
| {"type": "GeometryCollection","geometries": [{"type":"LineString","coordinates":[[-77.0736807172822... | 5.0 | {"type":"Polygon","coordinates":[[[-77.0725293738795, 38.83042888342659],[-77.07368071728229, 38.830... |
예시 7: 경계 조건
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:BEVELLine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"Polygon","coordinates":[[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659],[-77.07370685720375,38.83130901341597],[-77.07368071728229,38.83040844313318]]]} | 5.0 | {"type":"Polygon","coordinates":[[[-77.07373828442175, 38.83040742082089],[-77.0737644250676, 38.831... |
예시 8: 경계 조건
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:FLATBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659]]} | 5.0 | {"type":"Polygon","coordinates":[[[-77.07253068012344, 38.830473911977066],[-77.07252806763852, 38.8... |
예시 9: 경계 조건
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 12Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"Point","coordinates":[-77.07368071728229,38.83040844313318]} | 10.0 | {"type":"Polygon","coordinates":[[[-77.07356558299462, 38.83041048767274],[-77.0735662268165, 38.830... |
예시 10: 경계 조건
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:MITRELine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"Polygon","coordinates":[[[-77.07373697742014, 38.830362392304345],[-77.07376758060177, 38.83141669950616],[-77.072389088204, 38.83038632146655],[-77.07373697742014, 38.830362392304345]]]} | 5.0 | {"type":"Polygon","coordinates":[[[-77.07379323748556, 38.830316341450036],[-77.0738283041888, 38.83152438555785],[-77.07224880268927, 38.83034375933304],[-77.07379323748556, 38.830316341450036]]]} |
예시 11: 경계 조건
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:SINGLE_SIDED_LEFT
| geometry | distance | 출력 |
|---|---|---|
| {"type":"Point","coordinates":[-77.07368071728229,38.83040844313318]} | -1.0 | null |
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659]]} | -1.0 | null |
| {"type":"Polygon","coordinates":[[[-77.07368071728229,38.83040844313318],[-77.07370685720375,38.83130901341597],[-77.0725293738795,38.83042888342659],[-77.07368071728229,38.83040844313318]]]} | -1.0 | null |
예시 12: 경계 조건
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:SQUAREBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659]]} | 5.0 | {"type":"Polygon","coordinates":[[[-77.07253068012344, 38.830473911977066],[-77.0724731128864, 38.83... |
예시 13: 경계 조건
인자 값:
Buffer distance:distanceGeometry column:geometryProjected coordinate system: EPSG:32618Buffer cap style:ROUNDBuffer join style:ROUNDLine segments per quadrant: 8Single or double sided:DOUBLE_SIDED
| geometry | distance | 출력 |
|---|---|---|
| {"type":"Point","coordinates":[-77.07368071728229,38.83040844313318]} | 0.0 | null |
| {"type":"LineString","coordinates":[[-77.07368071728229,38.83040844313318],[-77.0725293738795,38.83042888342659]]} | 0.0 | null |
| {"type":"Polygon","coordinates":[[[-77.07368071728229,38.83040844313318],[-77.07370685720375,38.83130901341597],[-77.0725293738795,38.83042888342659],[-77.07368071728229,38.83040844313318]]]} | 0.0 | {"type":"Polygon","coordinates":[[[-77.07368071728229,38.83040844313318],[-77.07370685720375,38.83130901341597],[-77.0725293738795,38.83042888342659],[-77.07368071728229,38.83040844313318]]]} |
긴 구조값 안의 줄임표는 생략한 내용을 나타냅니다.