这不是一个形状问题,因为在其文档中明确地说明该库仅用于平面计算.但是,为了回答您的问题,您应该指定用于多面体的坐标系.假设您正在使用WGS84投影(lat,lon),这是我在另一个SO问题中找到的一个配方(固定形状多边形对象,当不连续地在地图投影后).你需要pyproj图书馆.
import pyproj
from shapely.geometry import MultiPolygon, Polygon
from shapely.ops import transform as sh_transform
from functools import partial
wgs84_globe = pyproj.Proj(proj='latlong', ellps='WGS84')
def pol_buff_on_globe(pol, radius):
_lon, _lat = pol.centroid.coords[0]
aeqd = pyproj.Proj(proj='aeqd', ellps='WGS84', datum='WGS84',
lat_0=_lat, lon_0=_lon)
project_pol = sh_transform(partial(pyproj.transform, wgs84_globe, aeqd), pol)
return sh_transform( partial(pyproj.transform, aeqd, wgs84_globe),
project_pol.buffer(radius))
def multipol_buff_on_globe(multipol, radius):
return MultiPolygon([pol_buff_on_globe(g, radius) for g in multipol])
Run Code Online (Sandbox Code Playgroud)
pol_buff_on_globe功能执行以下操作.首先,构建以多边形质心为中心的方位角等距投影.然后,将多边形的坐标系更改为该投影.之后,在那里构建缓冲区,然后将缓冲多边形的坐标系更改为WGS84坐标系.
需要特别注意:
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |