从中提取数据卡通片

2024-06-16 13:13:42 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从cartopy的feature接口导入的数据中提取等高线?如果解决方案涉及geoviews.feature或另一个包装器,那当然可以。在

例如,在下面的示例中,如何提取绘制为cfeature.COASTLINE的数据?在

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature

ax = plt.axes(projection=ccrs.PlateCarree())
ax.add_feature(cfeature.COASTLINE)
plt.show()

我很感激你的任何暗示!在

basemap中,我会这样做:

^{pr2}$

Tags: 数据import示例as绘制plt解决方案ax
2条回答

供将来参考:一段时间后,我也遇到了这个(更普遍的?)访问任何功能的方法:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.io.shapereader as shpreader

shpfilename = shpreader.natural_earth(resolution='110m',
                                      category='physical',
                                      name='coastline')  
coastlines = shpreader.Reader(shpfilename).records()

fig, ax = plt.subplots(subplot_kw = dict(projection=ccrs.PlateCarree()))
for c in coastlines:
    for g in c.geometry:
        ax.plot(*zip(*list(g.coords)))

产生和上面一样的情节。在

您可以直接从包含一组shapely.MultiLineStrings的功能中获取绘制线的坐标。作为概念证明,请查看以下代码:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature

fig, (ax1,ax2) = plt.subplots(nrows=2, subplot_kw = dict(projection=ccrs.PlateCarree()))
ax1.add_feature(cfeature.COASTLINE)

for geom in cfeature.COASTLINE.geometries():
    for g in geom.geoms:
        print(list(g.coords))
        ax2.plot(*zip(*list(g.coords)))

plt.show()

这张图片是:

result of the above code

换句话说,您可以通过访问该特性的MultiLineString来迭代该特性的geometries()。这些MultiLineString中的每一个都包含一个或多个LineString,它们有一个可以转换成列表的coords属性。希望这有帮助。在

相关问题 更多 >