首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python中的matplotlib-basemap制作地球仪

用python中的matplotlib-basemap制作地球仪
EN

Stack Overflow用户
提问于 2020-05-29 08:24:14
回答 1查看 338关注 0票数 0

我在这里发现:

https://makersportal.com/blog/2018/8/16/rotating-globe-in-python-using-basemap-toolkit

一些用碱基地图制作地球仪的代码。它们在我看来真的很好(我是个基本地图的初学者),但是每次我运行它们时,我都会遇到同样的错误:

GEOS_ERROR: B‘’IllegalArgumentException: RobustDeterminant遇到了非有限号

这是我最感兴趣的网站代码:

代码语言:javascript
复制
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(7,6))

# set perspective angle
lat_viewing_angle = 45.4642
lon_viewing_angle = 9.1900

# define color maps for water and land
ocean_map = (plt.get_cmap('ocean'))(210)
cmap = plt.get_cmap('gist_earth')

# call the basemap and use orthographic projection at viewing angle
m1 = Basemap(projection='ortho',
           lat_0=lat_viewing_angle,lon_0=lon_viewing_angle,resolution=None)

# define map coordinates from full-scale globe
map_coords_xy = [m1.llcrnrx,m1.llcrnry,m1.urcrnrx,m1.urcrnry]
map_coords_geo = [m1.llcrnrlat,m1.llcrnrlon,m1.urcrnrlat,m1.urcrnrlon]

#zoom proportion and re-plot map 
zoom_prop = 7.0 # use 1.0 for full-scale map

m = Basemap(projection='ortho',resolution='l',
            lat_0=lat_viewing_angle,lon_0=lon_viewing_angle,llcrnrx=-map_coords_xy[2]/zoom_prop,
            llcrnry=-map_coords_xy[3]/zoom_prop,urcrnrx=map_coords_xy[2]/zoom_prop,
            urcrnry=map_coords_xy[3]/zoom_prop)

# coastlines, map boundary, fill continents/water, fill ocean, draw countries
m.drawmapboundary(fill_color=ocean_map)
m.fillcontinents(color=cmap(200),lake_color=ocean_map)
m.drawcoastlines()
m.drawcountries()

# latitude/longitude line vectors
lat_line_range = [-90,90]
lat_lines = 8
lat_line_count = (lat_line_range[1]-lat_line_range[0])/lat_lines

merid_range = [-180,180]
merid_lines = 8
merid_count = (merid_range[1]-merid_range[0])/merid_lines

m.drawparallels(np.arange(lat_line_range[0],lat_line_range[1],lat_line_count))
m.drawmeridians(np.arange(merid_range[0],merid_range[1],merid_count))

# scatter to indicate lat/lon point
x,y = m(lon_viewing_angle,lat_viewing_angle)
m.scatter(x,y,marker='o',color='#DDDDDD',s=3000,zorder=10,alpha=0.7,\
            edgecolor='#000000')
m.scatter(x,y,marker='o',color='#000000',s=100,zorder=10,alpha=0.7,\
            edgecolor='#000000')

plt.annotate('Milan, Italy', xy=(x, y),  xycoords='data',
            xytext=(-110, -10), textcoords='offset points',
            color='k',fontsize=12,bbox=dict(facecolor='w', alpha=0.5),
            arrowprops=dict(arrowstyle="fancy", color='k'),
            zorder=20)

# save figure at 150 dpi and show it
plt.savefig('ortho_zoom_example.png',dpi=150,transparent=True)
plt.show()

错误甚至没有说明问题出在哪一行,所以我无法控制.我怎么能解决呢?我需要它很快,所以如果你能给我一些解决方案,我会很高兴的。

EN

回答 1

Stack Overflow用户

发布于 2020-06-09 11:40:03

我也遇到了这个问题,我发现了问题,但我不知道解决办法。

代码语言:javascript
复制
m = Basemap(projection='ortho',=====>m = Basemap(projection='ortho',

这样做将允许您的代码运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62081682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档