python绘制地图投影
时间: 2024-10-01 09:01:51 浏览: 71
在Python中,你可以使用basemap(现在已经不太推荐了,因为其功能和维护状态不如Cartopy),或者更现代的cartopy库来绘制地图投影。这两个库都允许你在坐标系统之间转换,比如从经度纬度(lon/lat)到平面直角坐标,然后在此基础上绘制地图。
Basemap示例:
```python
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 创建一个Basemap实例
m = Basemap(projection='merc', llcrnrlat=-80, urcrnrlat=80,
llcrnrlon=-180, urcrnrlon=180)
# 绘制地图范围,通常包括一些辅助线和陆地轮廓
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='coral', lake_color='blue')
# 将 lon/lat 数据转换为平面上的 x/y 坐标
lons, lats = ... # 输入的经纬度数据
x, y = m(lons, lats)
# 在地图上画点或线
plt.plot(x, y, 'ro') # 红色圆点
plt.show()
```
Cartopy示例:
```python
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.Mercator())
ax.stock_img() # 加载基础地图
ax.coastlines() # 添加海岸线
# 使用 Cartopy 的坐标转换
transform = ccrs.PlateCarree()
points = [(lon, lat) for lon, lat in zip(lons, lats)]
xy = ax.projection.transform_points(transform, points)
ax.plot(*zip(*xy), color='red') # 绘制点或线
plt.show()
```
阅读全文