Basemap入坑手册
的一个附录,主要对Basemap中各种地图投影方式提供一个示例。
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'cyl')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-90.,91.,30.))
m.drawmeridians(np.arange(-180.,181.,60.))
plt.title("Cylindrical Equidistant Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'merc', llcrnrlat = -80, urcrnrlat = 80, llcrnrlon = -180, urcrnrlon = 180, lat_ts = 20, resolution = 'c')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-90.,91.,30.))
m.drawmeridians(np.arange(-180.,181.,60.))
plt.title("Mercator Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'tmerc', llcrnrlat = 49.5, urcrnrlat = 59.5, llcrnrlon = -10.5, urcrnrlon = 3.5, lon_0 = -4.36, lat_0 = 54.7, resolution = 'i')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-40,61.,2.))
m.drawmeridians(np.arange(-20.,21.,2.))
plt.title("Transverse Mercator Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'omerc', height = 16700000, width = 12000000, area_thresh = 1000., lon_0 = -100, lat_0 = 15, lon_1 = -50, lat_1 = -55, lon_2 = -120, lat_2 = 65, resolution = 'l')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-80.,81.,20.))
m.drawmeridians(np.arange(180.,181.,20.))
plt.title("Oblique Mercator Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection =
'mill', llcrnrlat = -90, urcrnrlat = 90, llcrnrlon = -180, urcrnrlon = 180, resolution = 'c')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-90.,91.,30.))
m.drawmeridians(np.arange(-180.,181.,60.))
plt.title("Miller Cylindrical Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'gall', llcrnrlat = -90, urcrnrlat = 90, llcrnrlon = -180, urcrnrlon = 180, resolution = 'c')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-90.,91.,30.))
m.drawmeridians(np.arange(-180.,181.,60.))
plt.title("Gall Stereographic Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'cea', llcrnrlat = -90, urcrnrlat = 90, llcrnrlon = -180, urcrnrlon = 180, resolution = 'c')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-90.,91.,30.))
m.drawmeridians(np.arange(-180.,181.,60.))
plt.title("Cylindrical Equal-Area Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'lcc', lat_0 = 50, lon_0 = -107., lat_1 = 45., lat_2 = 55, width = 12000000, height = 9000000, rsphere = (6378137.00, 6356752.3142), resolution = 'l')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-80.,81.,20.))
m.drawmeridians(np.arange(-180.,181.,20.))
plt.title("Lambert Conformal Projection")
plt.show()
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection = 'laea', lat_0 = 50, lon_0 = -107., lat_ts = 50, width = 12000000, height = 8000000, resolution = 'l')
m.drawcoastlines()
m.fillcontinents(color = 'coral', lake_color = 'aqua')
m.drawmapboundary(fill_color = 'aqua')
m.drawparallels(np.arange(-80.,81.,20.))
m.drawmeridians(np.arange(-180.,181.,20.))
plt.title("Lambert Azimuthal Equal Area Projection")
plt.show()
空间参考是空间数据的骨骼框架,能够将我们的空间数据定位到相应的位置,为地图中的每一点提供准确的坐标
同一个地图上显示的地图数据的空间参考必须是一致的(不一致往往会导致两幅地图无法正确拼合)
一个空间参考中主要包括大地水准面、地球椭球体、投影坐标系等
他们之间的关系:
基准面(椭球+摆放方式)+角度测量单位+中央经线(本初子午线)=地理坐标系(GCS)
地理坐标系+投影参数(投影方式,怎么投)+线性单位=投影坐标系(PCS)
使用示例
构造Spatial
Basemap()函数参数详解
整理自官方文档:https://matplotlib.org/basemap/api/basemap_api.html#mpl_toolkits.basemap.Basemap
Basemap() 的用途:我们最开始画静态地图的数据可视化,总得先有个地图吧,所以basemap()就是用于最开始设定一个地图用的,可以在该函数中设置地图投影方式,海岸线等等。
参数列表:
mpl_toolkits.basemap.Basemap(
llcrnrlon=None, llcrnrl
本人电脑win7,64位操作系统,使用Jupyter 和 Python3.6来完成。而Jupyter是安装在Anaconda上的。
当然也可以根据自己情况进行选择,不一定非要使用Jupyter。在Sublime3上也能实现。其它的没用过,所以不多说。
Basemap下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
直接...
const epsg = [
{ "id": 2348, "name": "高斯大地坐标系_西安80_23带6_北", "type": 1, "strProject": "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 +a=6378140 +b=6356755.288157528 +units=m +no_defs" ...
前言:转载自《使用GDAL进行影像投影坐标、地理坐标、图上坐标的转换》
使用GDAL库写了四个函数分别进行投影坐标与地理坐标(经纬度)之间的转换,投影坐标和图上坐标(行列号)之间的转换。有需要的朋友可以参考。
from pyproj import CRS
from pyproj import Transformer
from pyproj import _datadir, datadir # 加上这个linux打包执行不报错
crs_WGS84 = CRS.from_epsg(4326) # WGS84地理坐标系
crs_WebMercator = CRS.from_epsg(3857)