81级萌新舰长 2020-10-23 17:28 采纳率: 0%
浏览 871

如何在Cartopy做的地图上利用已有的经纬度数据进行标点?

数据准备

我想往做好的地图上标注下所需的一些地点,而且之前我也已经整理好了对应地点的经纬度数据,并已经成功导入,数据结构长这样:

    City   Lon   Lat
    A      ***   ***
    B      ***   ***
    C      ***   ***
    D      ***   ***

我之前尝试了用Basemap来插入这些点,但是一直在报错,我前面的地图已经做好,代码及地图如下:

import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.ticker as mpt
import matplotlib.colors as mcl
import cartopy.crs as ccrs
import cartopy.feature as cft
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER
import cartopy.io.shapereader as shapereader
from cartopy.io.shapereader import natural_earth

proj = ccrs.PlateCarree(central_longitude=130) # 将地图中心移至我国
fig = plt.figure(figsize=(3,2),dpi=1200)
ax = fig.subplots(1, 1, subplot_kw={'projection': proj})

# 从文件中加载中国国界、省界和十段线数据,
with open(r'F:\Pycharm Project\First\Data\Data re-analysis\Map\Shapefiles\CN-border-La.dat') as src:
    context = ''.join([line for line in src if not line.startswith('#')])
    blocks = [cnt for cnt in context.split('>') if len(cnt) > 0]
    borders = [np.fromstring(block, dtype=float, sep=' ') for block in blocks]
#从文件中加载中国区域shp
shpfile = shapereader.Reader(r'F:\Pycharm Project\First\Data\Data re-analysis\Map\Shapefiles\china_country.shp')
# 设置中国国土区域
shape_feature = cft.ShapelyFeature(shpfile.geometries(),
                                ccrs.PlateCarree())
ax.add_feature(shape_feature, color='w')
# 绘制边界及十段线
for line in borders:
    ax.plot(line[0::2], line[1::2], '-', lw=0.3, color='k',transform=ccrs.Geodetic())

extent=[109,118,20,26] # 经纬度范围
ax.set_extent(extent)
gl = ax.gridlines(
        crs=ccrs.PlateCarree(),
        draw_labels=True,
        linewidth=0.2,
        color='k',
        alpha=0.5,
        linestyle='--'
    )
gl.top_labels = False  # 关闭顶端的经纬度标签
gl.right_labels = False  # 关闭右侧的经纬度标签
gl.xformatter = LONGITUDE_FORMATTER  # x轴设为经度的格式
gl.yformatter = LATITUDE_FORMATTER  # y轴设为纬度的格式
gl.xlocator = mpt.FixedLocator(np.arange(110, 120 + 5, 1))
gl.ylocator = mpt.FixedLocator(np.arange(20, 30 + 5, 1))
gl.xlabel_style={'size':5}
gl.ylabel_style={'size':5}

ax.add_feature(cft.LAND.with_scale('10m'),color='w') # 添加陆地,颜色为白色
ax.add_feature(cft.RIVERS.with_scale('10m'),lw=0.5,color='royalblue') # 添加河流
ax.add_feature(cft.LAKES.with_scale('10m'),color='cornflowerblue') # 添加湖泊,颜色为蓝色
ax.add_feature(cft.OCEAN.with_scale('10m'),color='cornflowerblue') # 添加海洋

这是做出来的图片:
图片说明

麻烦各位大佬指点一下下一步应该怎么按经纬度往上面标注点,我是想同时标出地点和对应的地点名
谢谢!

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 17:39
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛