首页 / PYTHON / python中的测地线缓冲
python中的测地线缓冲
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python中的测地线缓冲,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1558字,纯文字阅读大概需要3分钟。
内容图文
![python中的测地线缓冲](/upload/InfoBanner/zyjiaocheng/827/5a6710d744164e9abd4fbe63c07e53e9.jpg)
鉴于陆地多边形为Shapely MultiPolygon,我想找到代表例如多边形的多边形(多边形).海岸线周围12海里的缓冲区.
使用Shapely缓冲区方法不起作用,因为它使用欧几里德计算.
有人能告诉我如何计算python中的测地缓冲区吗?
解决方法:
这不是一个形状问题,因为在其文档中明确地说明该库仅用于平面计算.但是,为了回答您的问题,您应该指定用于多面体的坐标系.
假设您正在使用WGS84投影(lat,lon),这是我在另一个SO问题(fix-up-shapely-polygon-object-when-discontinuous-after-map-projection)中找到的配方.你需要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])
pol_buff_on_globe函数执行以下操作.首先,构建以多边形质心为中心的方位角等距投影.然后,将多边形的坐标系更改为该投影.之后,在那里构建缓冲区,然后将缓冲多边形的坐标系更改为WGS84坐标系.
需要特别注意:
>您需要了解如何将距离转换为aeqd投影中使用的距离.
>小心不要包括两极的缓冲(参见提到的SO问题).
>我们使用多边形的质心来使投影居中这一事实应该保证答案是足够好的,但是如果你有特定的精度要求,你不应该使用这个解决方案,或者至少对典型的错误进行表征.你正在使用的多边形.
内容总结
以上是互联网集市为您收集整理的python中的测地线缓冲全部内容,希望文章能够帮你解决python中的测地线缓冲所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。