Python底图坐标

时间:2017-06-06 15:38:46

标签: python coordinates shapefile matplotlib-basemap

我正在使用python 3.6在底图上打开亚马逊河的shapefile。但是我对如何在python中使用坐标感到困惑。我抬头看着亚马逊河的坐标,发现它是lon,lat = -55.126648,-2.163106。但是要打开我的地图,我需要角落的纬度/经度值,我不知道该怎么做。

到目前为止,这是我的代码:

from mpl_toolkits.basemap import Basemap

import matplotlib.pyplot as plt

map= Basemap(projection='tmerc',
            lon_0=180,
            lat_0=0,
            resolution='l')
map.drawmapboundary(fill_color='aqua')
map.fillcontinents(color='#ddaa66',lake_color='aqua')
map.drawcoastlines()

map.readshapefile('filename','Amazon')
plt.show()

以下是我尝试运行时收到的错误消息: ValueError:必须指定角的lat / lon值 (llcrnrlon,llcrnrlat,ucrnrlon,urcrnrlat)的度数或宽度和高度(米)

2 个答案:

答案 0 :(得分:0)

创建地图(map = Basemap(...))时,您需要指定这些值。它们是左下角经度,左下角纬度,右上角经度和右上角纬度。这些定义了地图的范围。你可以只绘制整个地球,然后看看你想要的区域,然后为你的新角点挑选它。

答案 1 :(得分:0)

这种点绘图的最佳方法是通过从点“缩小”来创建自己的角。这意味着您需要指定llcrnrlat(左下角的纬度),依此类推:

my_coords = [38.9719980,-76.9219820]

# How much to zoom from coordinates (in degrees)
zoom_scale = 1

# Setup the bounding box for the zoom and bounds of the map
bbox = [my_coords[0]-zoom_scale,my_coords[0]+zoom_scale,\
        my_coords[1]-zoom_scale,my_coords[1]+zoom_scale]

plt.figure(figsize=(12,6))
# Define the projection, scale, the corners of the map, and the resolution.
m = Basemap(projection='merc',llcrnrlat=bbox[0],urcrnrlat=bbox[1],\
llcrnrlon=bbox[2],urcrnrlon=bbox[3],lat_ts=10,resolution='i')

如果您想查看有关从.csv文件中绘制纬度/经度点的完整教程,请查看我的教程,了解整个过程并包括完整代码:

Geographic Mapping from a CSV File Using Python and Basemap

您最终得到的结果如下所示:

enter image description here