ST_Buffer 함수

ST_Buffer 함수는 입력 매개변수로 형상, 거리 및 선택적으로 단위 또는 세그먼트를 사용하고 지정된 단위로 측정된 지정된 거리만큼 지정된 형상을 둘러싸는 형상을 리턴합니다.

결과로 생성되는 형상의 경계에 있는 각 점은 지정된 형상에서 떨어진 지정된 거리입니다. 결과로 생성되는 형상은 지정된 형상의 공간 참조 시스템에 표시됩니다.

결과 Geometry의 경계에 있는 임의의 순환 곡선은 선형 스트링에 가깝습니다. 예를 들어, 순환 영역을 생성하는 점 주위의 버퍼는 경계가 선스트링인 다각형에 가깝습니다.

지정된 형상이 널(NULL)이거나 비어 있는 경우 널(NULL)이 리턴됩니다.

>

구문

Read syntax diagramSkip visual syntax diagramST_Buffer ( geometry , distance,segments,unit )

매개변수

geometry
주위로 버퍼를 작성하는 형상을 나타내는 ST_Geometry 유형 또는 그 부속 유형 중 하나의 값입니다.
거리
geometry 주위의 버퍼에 사용될 거리를 지정하는 DOUBLE PRECISION 값입니다.
unit
unit를 측정하는 단위를 식별하는 VARCHAR(128) 값입니다. 지원되는 측정 단위는 SYSGEO.ST_UNITS_OF_MEASURE 카탈로그 뷰에 나열됩니다.
segments
분기 원을 근사화하는 데 얼마나 많은 다각형 모서리를 사용할지를 식별하는 INTEGER 값입니다. 기본값은 96입니다.
unit 매개변수를 생략하면 다음 규칙을 사용하여 거리에 사용되는도량 단위를 판별합니다.
  • geometry가 투영 또는 지구 중심 좌표 시스템에있는 경우, 이 좌표 시스템과 연관된 선형 단위가 기본값입니다.
  • geometry가 지리 좌표 시스템에 있는 경우 이 좌표 시스템과 연관된 각도 단위가 기본값입니다.
단위 변환에 대한 제한사항: 다음과 같은조건이 발생하는 경우 오류(SQLSTATE 38SU4)가 리턴됩니다.
  • Geometry가 지정되지 않은 좌표 시스템에 있고 unit 매개변수가 지정됩니다.
  • Geometry가 투영 좌표 시스템에 있고 각도 단위가 지정됩니다.
  • Geometry가 지리 좌표 시스템에 있지만 ST_Point 값이 아니면 선형 단위가 지정됩니다.

리턴 유형

ST_Geometry

예:

다음 예에서는 읽기 쉽도록 결과를 다시형식화했습니다. 결과의 공백은 사용자의 표시장치에 따라 다릅니다.

예 1
다음 코드는 SAMPLE_GEOMETRIES 테이블을 작성하고 이 테이블을 참조 시스템 4326의 공간 데이터로 채웁니다.


CREATE TABLE 
    sample_geometries (id INTEGER, spatial_type varchar(18), 
    geometry ST_GEOMETRY)

INSERT INTO sample_geometries(id, spatial_type, geometry)
VALUES
    (1, 'st_point', ST_Point(50, 50, 4326)),
    (2, 'st_linestring',
         ST_LineString('linestring(100 80, 110 81, 
         120 83)', 4326)),
    (3, 'st_polygon', 
         ST_Polygon('polygon((110 70, 110 75, 130 75, 
         130 70, 110 70))', 4326)),
    (4, 'st_multipolygon', 
         ST_MultiPolygon('multipolygon(((30 30, 30 40, 
         35 40, 35 30, 30 30),(35 30, 35 40, 45 40, 
         45 30, 35 30)))', 4326))

예 2
다음 SELECT문은 ST_Buffer 함수를 사용하여 8개의 세그먼트에 버퍼 10을 적용합니다.

SELECT id, spatial_type,
       cast(ST_AsText(ST_Buffer(geometry, 10, 8)) AS varchar(468)) AS buffer_10
FROM   sample_geometries

결과:

ID          SPATIAL_TYPE       BUFFER_10                                 
----------- ------------------ ------------------------------------------
          1 st_point           POLYGON ((50.000000000 50.000089905, 
              49.999901374 50.000063572, 49.999860522 50.000000000, 
              49.999901374 49.999936428, 50.000000000 49.999910095, 
              50.000098626 49.999936428, 50.000139478 50.000000000, 
              50.000098626 50.000063572, 50.000000000 50.000089905)) 
                                                                                                                                                                                                                                                                                                                                                                                                 
          2 st_linestring      POLYGON ((99.999696379 80.000072386, 
              99.999490607 80.000013896, 99.999583232 79.999947266, 
              99.999919991 79.999911527, 100.000303617 79.999927614, 
              101.008881075 80.124462191, 102.042636376 80.245920134, 
              103.101855625 80.364185228, 104.186771032 80.479138613, 
              105.297553974 80.590659031, 106.434307814 80.698623117, 
              107.597060526 80.802905740, 108.785757236 80.903380395, 
              110.000252787 80.999919655, 110.000467280 80.999957868, 
              110.000495913 80.999955286, 110.884732453 81.232827537, 
              111.816598790 81.463529984, 112.799559514 81.691882283, 
              113.837353689 81.917685643, 114.934009949 82.140720765, 
              116.09                         
SQL0445W  Value "POLYGON ((99.999696379 80.000072386, 99.999490607 80.0000138"    
has been truncated.  SQLSTATE=01004                                               

          3 st_polygon         POLYGON ((109.999654003 75.000000000, 
             109.999666063 74.444565138, 109.999677281 73.889102163, 
             109.999687742 73.333610177, 109.999697518 72.778088289, 
             109.999706674 72.222535622, 109.999715266 71.666951309, 
             109.999723344 71.111334494, 109.999730951 70.555684335, 
             109.999738128 70.000000000, 109.999814829 69.999936618, 
             110.000000000 69.999910364, 110.000040604 69.999916121, 
             110.000042807 69.999911569, 112.194612170 70.110242396, 
             114.409739963 70.193393168, 116.639800135 70.249021173, 
             118.878920947 70.276893916, 121.121079053 70.276893916, 
             123.360199865 70.249021173, 125.590260037 70.193393168, 
             12                         
SQL0445W  Value "POLYGON ((109.999654003 75.000000000, 109.999666063 74.44456"    
has been truncated.  SQLSTATE=01004                                               

          4 st_multipolygon    POLYGON ((29.999882896 40.000000000, 
              29.999884740 38.889713813, 29.999886486 37.779215903, 
              29.999888139 36.668508151, 29.999889703 35.557592758, 
              29.999891184 34.446472240, 29.999892587 33.335149421, 
              29.999893914 32.223627435, 29.999895170 31.111909717, 
              29.999896358 30.000000000, 29.999926714 29.999936212, 
              30.000000000 29.999909790, 30.000002242 29.999910598, 
              30.000002262 29.999909811, 30.555435320 30.009291084, 
              31.110959848 30.016328190, 31.666549749 30.021020144, 
              32.222178889 30.023366285, 32.777821111 30.023366285, 
              33.333450251 30.021020144, 33.889040152 30.016328190, 
              34.444564680 30.0092910                         
SQL0445W  Value "POLYGON ((29.999882896 40.000000000, 29.999884740 38.8897138"    
has been truncated.  SQLSTATE=01004                                               


예제 3
다음 SELECT문은 ST_Buffer 함수를 사용하여 12개의 세그먼트에 음수 버퍼 5를 적용합니다.

SELECT id, spatial_type,
       cast(ST_AsText(ST_Buffer(geometry, -5, 12)) AS varchar(1600)) 
       AS buffer_negative_5
FROM   sample_geometries
WHERE  id = 3

결과:

ID          SPATIAL_TYPE       BUFFER_NEGATIVE_5  
----------- ------------------ --------------------------------------         
         3 st_polygon         POLYGON ((110.000130936 70.000052175, 
            111.516862578 70.079303767, 113.044407204 70.145594692, 
            114.580791208 70.198786957, 116.124124428 70.238774964, 
            117.672461656 70.265478577, 119.223817566 70.278843921, 
            120.776182434 70.278843921, 122.327538344 70.265478577, 
            123.875875572 70.238774964, 125.419208792 70.198786957, 
            126.955592796 70.145594692, 128.483137422 70.079303767, 
            129.999869064 70.000052175, 129.999866602 70.384708218, 
            129.999864039 70.769399934, 129.999861370 71.154075422, 
            129.999858587 71.538734960, 129.999855684 71.923378825, 
            129.999852652 72.308007302, 129.999849483 72.692620673, 
            129.999846168 73.077219229, 129.999842696 73.461803257, 
            129.999839056 73.846373052, 129.999835236 74.230928909, 
            129.999831223 74.615471124, 129.999827002 74.999961688, 
            128.484292350 75.061530074, 126.957366369 75.113036219, 
            125.421110106 75.154369626, 123.877515883 75.185445261, 
            122.328636191 75.206198568, 120.776567403 75.216586133, 
            119.223432597 75.216586133, 117.671363809 75.206198568, 
            116.122484117 75.185445261, 114.578889894 75.154369626, 
            113.042633631 75.113036219, 111.515707650 75.061530074, 
            110.000172998 74.999961688, 110.000168777 74.615471124, 
            110.000164764 74.230928909, 110.000160944 73.846373052, 
            110.000157304 73.461803257, 110.000153832 73.077219229, 
            110.000150517 72.692620673, 110.000147348 72.308007302, 
            110.000144316 71.923378825, 110.000141413 71.538734960, 
            110.000138630 71.154075422, 110.000135961 70.769399934, 
            110.000133398 70.384708218, 110.000130936 70.000052175))

예제 4
다음 SELECT문은 8개의 세그먼트에 버퍼를 적용한 결과 및 지정된 단위 매개변수를 표시합니다.

SELECT id, spatial_type,
    cast(ST_AsText(ST_Buffer(geometry, 10, 8, 'METER')) AS varchar(1600)) 
    AS buffer_10_meter
FROM   sample_geometries
WHERE  id = 3

결과:

ID          SPATIAL_TYPE       BUFFER_10_METER
----------- ------------------ --------------------------------------         
          3 st_polygon         POLYGON ((109.999654003 75.000000000, 
             109.999666063 74.444565138, 109.999677281 73.889102163, 
             109.999687742 73.333610177, 109.999697518 72.778088289, 
             109.999706674 72.222535622, 109.999715266 71.666951309, 
             109.999723344 71.111334494, 109.999730951 70.555684335, 
             109.999738128 70.000000000, 109.999814829 69.999936618, 
             110.000000000 69.999910364, 110.000040604 69.999916121, 
             110.000042807 69.999911569, 112.194612170 70.110242396, 
             114.409739963 70.193393168, 116.639800135 70.249021173, 
             118.878920947 70.276893916, 121.121079053 70.276893916, 
             123.360199865 70.249021173, 125.590260037 70.193393168, 
             127.805387830 70.110242396, 129.999957193 69.999911569, 
             130.000152411 69.999927109, 130.000258350 69.999985347, 
             130.000248395 70.000000000, 130.000261872 70.000000000, 
             130.000269049 70.555684335, 130.000276656 71.111334494, 
             130.000284734 71.666951309, 130.000293326 72.222535622, 
             130.000302482 72.778088289, 130.000312258 73.333610177, 
             130.000322719 73.889102163, 130.000333937 74.444565138, 
             130.000345997 75.000000000, 130.000244658 75.000063350, 
             130.000055047 75.000083687, 130.000058094 75.000088319, 
             127.807003645 75.085804552, 125.592254016 75.150415987, 
             123.361736945 75.193646708, 121.121648680 75.215309408, 
             118.878351320 75.215309408, 116.638263055 75.193646708, 
             114.407745984 75.150415987, 112.192996355 75.085804552, 
             109.999941906 75.000088319, 109.999717737 75.000051814, 
             109.999672150 75.000000000, 109.999654003 75.000000000))