首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中利用散点提取二维网格场的值

在Python中利用散点提取二维网格场的值
EN

Stack Overflow用户
提问于 2018-10-10 16:14:57
回答 1查看 173关注 0票数 1

我有一个2-d网格文件,它代表了名胜古迹的土地使用目录。

我也有一些基于经度/经度的点分布在这个区域。

代码语言:javascript
复制
from netCDF4 import Dataset

## 2-d gridded files
nc_file = "./geo_em.d02.nc"
geo = Dataset(nc_file, 'r')
lu = geo.variables["LU_INDEX"][0,:,:]
lat = geo.variables["XLAT_M"][0,:]  
lon = geo.variables["XLONG_M"][0,:] 

## point files
point = pd.read_csv("./point_data.csv")
plt.pcolormesh(lon,lat,lu)
plt.scatter(point_data.lon,cf_fire_data.lat, color ='r')   

我想提取这些点所属的二维网格字段的值,但我发现很难定义一个简单的函数来解决这个问题。

有没有什么有效的方法来达到这个目的?

如有任何建议,我们将不胜感激。

PS

我已经在这里上传了我的文件

1. nc_file

2. point_file

EN

回答 1

Stack Overflow用户

发布于 2018-10-10 18:01:04

我可以提出这样的解决方案,我只是循环遍历这些点,并根据到点的距离来选择数据。

代码语言:javascript
复制
#/usr/bin/env ipython
import numpy as np
from netCDF4 import Dataset
import matplotlib.pylab as plt
import pandas as pd
# --------------------------------------
## 2-d gridded files
nc_file = "./geo_em.d02.nc"
geo = Dataset(nc_file, 'r')
lu = geo.variables["LU_INDEX"][0,:,:]
lat = geo.variables["XLAT_M"][0,:]  
lon = geo.variables["XLONG_M"][0,:] 

## point files
point = pd.read_csv("./point_data.csv")
plt.pcolormesh(lon,lat,lu)
#plt.scatter(point_data.lon,cf_fire_data.lat, color ='r') 
# --------------------------------------------
# get data for points:
dataout=[];
lon_ratio=np.cos(np.mean(lat)*np.pi/180.0)
for ii in range(len(point)):
    plon,plat = point.lon[ii],point.lat[ii]
    distmat=np.sqrt(1./lon_ratio*(lon-plon)**2+(lat-plat)**2)
    kk=np.where(distmat==np.min(distmat));
    dataout.append([float(lon[kk]),float(lat[kk]),float(lu[kk])]);
# ---------------------------------------------
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52735593

复制
相关文章

相似问题

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