地图投影上的等距网格
Equidistant Grid on Map Projection
我希望使用纬度和经度而不是度数在曼哈顿地图(比如 200m x 200m)投影上创建一个等距网格。我正在使用底图,但无法找到继续执行任务的方法。这是投影代码。
m = Basemap(projection='mill',
llcrnrlat= 40.6968,
llcrnrlon= -74.0224,
urcrnrlat= 40.8964,
urcrnrlon= -73.8927,
resolution='h')
执行上述操作的最佳方法是什么,我还需要存储每个网格顶点的经纬度值。
In order to plot data on a map, the coordinates of the data must be
given in map projection coordinates. Calling a Basemap class instance
with the arguments lon, lat will convert lon/lat (in degrees) to x/y
map projection coordinates (in meters). The inverse transformation is
done if the optional keyword inverse is set to True.
文档页面中还有一个示例。为了使这个示例适用于您的用例,我将左下角转换为米,生成了一个间距为 2000 米的规则网格(200 米有点太密)并将网格转换回 lon/lat 坐标,这可以然后被 drawparallels()
和 drawmeridians
使用。
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
fig, ax = plt.subplots()
lon0 = -74.0224
lat0 = 40.6968
m = Basemap(
projection='mill',
llcrnrlat= 40.6968,
llcrnrlon= -74.0224,
urcrnrlat= 40.8964,
urcrnrlon= -73.8927,
resolution='h',
ax = ax,
)
x0, y0 = m(lon0, lat0)
x = np.arange(20)*2000+x0
y = np.arange(20)*2000+y0
lons, lats = m(x,y,inverse=True)
m.drawcoastlines()
m.drawcountries()
m.drawstates()
m.drawmeridians(lons)
m.drawparallels(lats)
plt.show()
结果如下所示:
希望这对您有所帮助。
我希望使用纬度和经度而不是度数在曼哈顿地图(比如 200m x 200m)投影上创建一个等距网格。我正在使用底图,但无法找到继续执行任务的方法。这是投影代码。
m = Basemap(projection='mill',
llcrnrlat= 40.6968,
llcrnrlon= -74.0224,
urcrnrlat= 40.8964,
urcrnrlon= -73.8927,
resolution='h')
执行上述操作的最佳方法是什么,我还需要存储每个网格顶点的经纬度值。
In order to plot data on a map, the coordinates of the data must be given in map projection coordinates. Calling a Basemap class instance with the arguments lon, lat will convert lon/lat (in degrees) to x/y map projection coordinates (in meters). The inverse transformation is done if the optional keyword inverse is set to True.
文档页面中还有一个示例。为了使这个示例适用于您的用例,我将左下角转换为米,生成了一个间距为 2000 米的规则网格(200 米有点太密)并将网格转换回 lon/lat 坐标,这可以然后被 drawparallels()
和 drawmeridians
使用。
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
fig, ax = plt.subplots()
lon0 = -74.0224
lat0 = 40.6968
m = Basemap(
projection='mill',
llcrnrlat= 40.6968,
llcrnrlon= -74.0224,
urcrnrlat= 40.8964,
urcrnrlon= -73.8927,
resolution='h',
ax = ax,
)
x0, y0 = m(lon0, lat0)
x = np.arange(20)*2000+x0
y = np.arange(20)*2000+y0
lons, lats = m(x,y,inverse=True)
m.drawcoastlines()
m.drawcountries()
m.drawstates()
m.drawmeridians(lons)
m.drawparallels(lats)
plt.show()
结果如下所示:
希望这对您有所帮助。