SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)', 4326), 10);将10变成3000,为什么得到的图形不是圆而是长方形
时间: 2024-03-09 21:48:01 浏览: 158
postgresql11-15和postgis30_11的rpm
当将缓冲区半径设置为3000时,得到的不再是圆形,而是一个近似于矩形的多边形。这是因为在使用ST_Buffer函数时,PostGIS会使用直线段来逼近圆的边缘,因此缓冲区的形状与缓冲区半径大小成比例。在半径较大的情况下,多边形的边缘会更平直,从而导致缓冲区形状更接近于矩形。
如果想要获得近似于圆形的缓冲区,可以使用ST_Buffer函数的第三个可选参数,该参数指示生成的缓冲区的形状。默认值为"round",即生成一个近似于圆形的多边形。以下是一个示例查询,用于画一个半径为3000米的圆:
```
SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)', 4326), 3000, 'quad_segs=8');
```
这将返回一个近似于圆形的多边形几何对象,其中心点是经纬度1,2,坐标系为4326。第三个参数"quad_segs=8"表示使用8个四分圆来逼近圆形的边缘。您可以根据需要调整此值以获取更好的结果。
阅读全文