标签: cartopy

存储的离线数据的位置

离线数据存储在纸板中的哪个位置?它是存储在site-packages下的数据文件夹中吗?有没有办法触发下载所有可用数据?我想将其复制到未连接到互联网的Linux机器上.我目前正在使用连接到互联网的Windows机器,所以我希望从那里下载数据.谢谢.

python python-2.7 cartopy

8
推荐指数
1
解决办法
1456
查看次数

在Cartopy中使用Google地图图块

Google通过正常的API访问(即使使用API​​密钥)也不支持直接获取Google磁贴.因此,cartopy.io.img_tiles.GoogleTiles效果不佳,因为它只能在一次或两次试验中获取磁贴,之后Google会拒绝请求.

将Google地图与Cartopy一起使用的推荐方法是什么?

谢谢

matplotlib python-3.x cartopy

8
推荐指数
1
解决办法
341
查看次数

为什么注释在拼图中出现意外?

代码优先:

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

ax = plt.axes(projection=ccrs.Mercator())
ax.set_extent([72, 135, 18, 53])
ax.annotate('hello', xy=(100, 49), xycoords='data',
            transform=ccrs.PlateCarree(), zorder=12)
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果不是预期的结果,我对我的方法有其他怀疑.所以我的问题是:

  1. 如果我想绘制地图看起来像网络地图(例如谷歌地图).地图区域可能与中国一样大,大部分都不是全球性的.谷歌搜索后,这些网站大多使用"网络墨卡托"投影.所以我想我应该plt.axes(projection=ccrs.Mercator()在这里使用,我是对的吗?或者如果我错了我该怎么用?

  2. 我想绘制的坐标数据类似于121°E,49°N(在绘制航线之前将度数转换为十进制),未投影,WGS84坐标系统,可能来自GPS.我有权使用transform=ccrs.PlateCarree()吗?或者如果我错了我该怎么用?

  3. annotate上述说明不了什么.在对该ax.set_extent行进行注释之后,将"hello"文本绘制在零(0,0)点处.我想要的是在点(100°E,49°N)如何纠正这个?

matplotlib cartopy

7
推荐指数
1
解决办法
1251
查看次数

Cartopy 的县寄宿生

您如何在 Cartopy 中绘制美国县边界?

绘制州和国家边界非常简单

ax.add_feature(cfeature.BORDERS.with_scale('50m'))
ax.add_feature(cfeature.STATES.with_scale('50m'))
Run Code Online (Sandbox Code Playgroud)

但我似乎找不到类似的方法来添加县界。这是 Basemap 的优点之一。

python cartopy

7
推荐指数
1
解决办法
4638
查看次数

如何使用cartopy添加自定义shapefile以进行映射

使用底图我用来添加我的自定义边界shapefile,如下所示:

map = Basemap(..)
map.readshapefile(file.shp, 'attribute', drawbounds=True)
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用cartopy做同样的事情?

我试过这个:

ax.add_feature(cfeature.shapereader.Polygon('file.shp'))
Run Code Online (Sandbox Code Playgroud)

但那不起作用..

cartopy

6
推荐指数
1
解决办法
4347
查看次数

Cartopy:使用散点图数据渲染图层的顺序

我试图使用Cartopy在地图上绘制几个点(散点图)的位置(参见下面的代码).当我尝试渲染绘图时,数据点将在LAND层后面呈现.但我想在LAND-layer上绘制我的分散数据......我做错了什么?

Cartopy:ver.0.12.x,Matplotlib:ver.1.4.2

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

ax = plt.axes(projection=ccrs.PlateCarree()) 
ax.set_extent([125, 150, 35, 63])         

ax.stock_img()

ax.add_feature(cfeature.LAND) #If I comment this => all ok, but I need 
ax.add_feature(cfeature.LAKES)
ax.add_feature(cfeature.RIVERS)
ax.coastlines()

ax.scatter(yc,xc,transform=ccrs.PlateCarree()) #yc, xc -- lists or numpy arrays

plt.show()
Run Code Online (Sandbox Code Playgroud)

LAND图层下显示的点

没有LAND层的情节

python matplotlib cartopy

6
推荐指数
1
解决办法
3028
查看次数

更改 Cartopy 边框的线宽

我正在尝试制作北美的基本地图,但我不知道如何使海岸线和行政边界的线宽变小。似乎没有为此提供内置选项。有没有简单的解决方法?以下是我迄今为止的代码。

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

east = -63
west = -123
north = 55
south = 20
fig = plt.figure()
ax=fig.add_subplot(1,1,1,projection=ccrs.AlbersEqualArea)          
ax.set_extent([west, east, south, north])
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.LAND,color='grey')
ax.add_feature(cfeature.BORDERS)
ax.add_feature(cfeature.COASTLINE)
Run Code Online (Sandbox Code Playgroud)

gis matplotlib cartopy

6
推荐指数
1
解决办法
3274
查看次数

Python Cartopy 中的边界和海岸线干扰

我正在尝试使用 Cartopy 绘制法国地图,但我对此不太满意。

在网上到处搜索Python代码,我构建了以下程序:

import cartopy
import cartopy.feature as cfeature
import cartopy.crs as ccrs

import numpy as np

extent = [-4.25, 7.5, 42.25, 51]
central_lon = np.mean(extent[:2])
central_lat = np.mean(extent[2:])

plt.figure(figsize=(8, 8))

ax = plt.axes(projection=ccrs.AlbersEqualArea(central_lon, central_lat))

ax.set_extent(extent)
ax.gridlines()

rivers_50m = cfeature.NaturalEarthFeature('physical', 'rivers_lake_centerlines', '50m')

ax.add_feature(cartopy.feature.BORDERS, linestyle='-', alpha=1)
ax.add_feature(cartopy.feature.OCEAN,facecolor=("lightblue"))
ax.add_feature(cartopy.feature.LAND, edgecolor='black')
ax.add_feature(cartopy.feature.LAKES, edgecolor='black')
ax.add_feature(rivers_50m, facecolor='None', edgecolor='blue', linestyle=':')
ax.coastlines(resolution='10m', color='red', linestyle='-', alpha=1)

plt.show()
Run Code Online (Sandbox Code Playgroud)

这导致了以下地图: 在此输入图像描述

这几乎是我想要的,但是......我不明白为什么原始边界(黑色虚线)会干扰海滨的海岸线(波浪形红线),这真的很难看。

有什么方法可以解决这个问题?(知道我想保持陆地边界不变)。

matplotlib python-3.x cartopy

6
推荐指数
1
解决办法
8563
查看次数

提高Cartopy地图的分辨率

以下代码生成美国地图,其中每个州都有等高线。问题是该图像看起来像是使用 20 世纪 90 年代的技术生成的。如何显着提高图形的质量,即提高背景的分辨率?

import cartopy.crs as ccrs
import cartopy.io.shapereader as shpreader

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi'] = 400

fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1], projection=ccrs.LambertConformal())
ax.set_extent([-125, -66.5, 20, 50], ccrs.Geodetic())
ax.stock_img()


shapename = 'admin_1_states_provinces_lakes_shp'
states_shp = shpreader.natural_earth(resolution='110m', category='cultural',
                                     name=shapename)

ax.outline_patch.set_visible(False)  # don't draw the map border
ax.set_title('My map of the lower 48')

# example state coloring
colors = {
    'Minnesota': [0, 1, 0],
    'Texas': "#FF0000",
    'Montana': "blue",
}
default_color = [0.9375, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib cartopy

6
推荐指数
1
解决办法
7694
查看次数

如何以交互方式更改 cartopy 投影的中心?

有没有办法改进这个交互式 matplotlib/cartopy 脚本的渲染?

请先安装 ipympl https://github.com/matplotlib/ipympl

我还没有找到如何在不实例化新图形的情况下更改中心经度和纬度。

当单击鼠标左键并选择新的投影中心时,此脚本缺乏流动性。我正在寻找https://twojs.org/examples/misc_controls_trackball中的轨迹球行为。

欢迎任何帮助/建议。

%matplotlib widget

import numpy as np
import matplotlib.pyplot as plt
import cartopy
import cartopy.crs as ccrs

fig = plt.figure(figsize=(10,6), layout='constrained')

proj0 = ccrs.PlateCarree()
proj1 = ccrs.Orthographic(0, 80)

ax1 = fig.add_subplot(1, 1, 1, projection=proj1)
ax1.coastlines()
ax1.gridlines(xlocs=np.arange(-180,180,10), ylocs=np.arange(-80,90,10))
ax1.set_global()

def onpress(event):
    global proj1
    if event.button == 1:
        lon, lat = proj0.transform_point(event.xdata, event.ydata, src_crs=proj1)
        proj1 = ccrs.Orthographic(lon, lat)
        ax1 = fig.add_subplot(1, 1, 1, projection=proj1)
        ax1.coastlines()
        ax1.gridlines(xlocs=np.arange(-180,180,10), ylocs=np.arange(-80,90,10))
        ax1.set_global()
        plt.draw()

fig.canvas.mpl_connect('button_press_event', onpress)

plt.show()

Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

interactive projection matplotlib cartopy

6
推荐指数
0
解决办法
406
查看次数