построить сеточную карту с лат-лоном и заполнить значения в CSV-файле в Python - PullRequest
1 голос
/ 03 апреля 2020

1 У меня есть файл .csv, содержащий несколько столбцов: lon, lat, var1, var2 ...

df = pd.read_csv('D:/file.csv')
gdf = gpd.GeoDataFrame(df)
Lon = df['lon']
Lat = df['lat']
Slope = df['slope']

Редактировать : Как отобразить данные в Таблица выше ( lon, lat, slope ) на глобальной сеточной карте с lon (-179.5 degree to 179.5 degree), lat (-89.5 to 89.5 degree) и пространственным разрешением 1 градус.

dataframe image [enter image description here]

1 Ответ

0 голосов
/ 04 апреля 2020
import numpy as np
import cartopy
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import pandas as pd
import random

latz = np.linspace(-89.5, 89.5, 180)
lonz = np.linspace(-0.5, 359.5, 361)
x, y = np.meshgrid(lonz, latz)

rand_list = [random.randrange(1, 5, 1) for i in range(64980)]

# you probably need to sort your df by lat/long and
# you'll want to replace rand_list with:
#z = np.array_split(df['slope'].values.tolist(), 180)

z = np.array_split(rand_list, 180)

fig = plt.figure(figsize=[16, 16])
ax = plt.subplot(1, 1, 1, projection=ccrs.PlateCarree())

ax.set_extent([-179.5, 180, -89.5, 90], crs=ccrs.PlateCarree())

ax.add_feature(cfeature.LAND, zorder=1, facecolor='0.25')
ax.add_feature(cartopy.feature.OCEAN, zorder=4)

ax.pcolormesh(x, y, z, transform=ccrs.PlateCarree(), zorder=3)

plt.show()

enter image description here

...