在地图上标绘车站
Posted
技术标签:
【中文标题】在地图上标绘车站【英文标题】:plotting stations on map 【发布时间】:2021-12-26 16:59:03 【问题描述】:我有三个名为A, B, C
的电台。我想使用 matplotlib 底图将它们绘制在地图上。
station A: latitude=17.8 longitude=74.48
station B: latitude=-25.02 longitude=25.60
station C: latitude=44.58 longitude=-123.30
由于我是 python 和 matplotlib 的新手,我很困惑我应该如何绘制它。
我试过代码:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
plt.figure(figsize=(8, 8))
m = Basemap(projection='ortho', resolution=None, lat_0=50, lon_0=-100)
m.bluemarble(scale=0.5);
但它没有绘制我的任何电台。所以我希望专家可以帮助我。提前致谢。
【问题讨论】:
当然,因为您的代码中没有命令来绘制站点。您只绘制“原始”地图而没有任何其他对象。您是否尝试过使用PyGMT 来绘制您的电台?做你想做的事很容易。 noygmr @mgrund 你能推荐一个在 pygmt 上相同的代码 【参考方案1】:这是一个基于您的数据的示例,您可能会使用它:
import pygmt
import pandas as pd
# create df with station information
data = 'lon':[74.48, 25.60, -123.30],
'lat':[17.8, -25.02, 44.58],
'station':['A', 'B', 'C']
df = pd.DataFrame(data)
fig = pygmt.Figure()
pygmt.config(MAP_GRID_PEN = '0.25p,gray')
fig.grdimage("@earth_day_10m", region="g", projection="G130/50/12c", frame="g")
fig.plot(x = df.lon, y = df.lat, style = "t1c", color = "red3", pen = "1p,white")
fig.show()
用户指南和gallery examples 中的教程是第一次使用 PyGMT 的一个很好的起点!
【讨论】:
先生,为什么另一个电台不可见?是否需要延长纬度,我需要在全球地图中用倒三角形显示所有站点 看看你的坐标。使用正交投影(就像您在示例代码中选择的那样)不允许同时显示所有三个位置,这仅仅是因为地球的球形形状。例如。尝试projection="Cyl_stere/30/-20/12c"
,您将看到所有三个位置,但是,基于另一个地图投影。可以使用style = "i1c"
生成倒三角形以上是关于在地图上标绘车站的主要内容,如果未能解决你的问题,请参考以下文章