我需要对netCDF文件中来自其他源的几何图形执行一些几何操作。因此,我将来自另一个源的几何体(shapely.geometry.Polygon
)存储在geopandas.GeoDataFrame
中。在
下一步是将netCDF
文件读入GeoDataFrame
。方法似乎很清楚:用xarray
读取netCDF
,将其存储到pandas.DataFrame
,对提取的lat/lon数据执行shapely.geometry.Point
操作,并将其转换为GeoDataFrame
。在
之后,我将用几何运算符做一些统计。在
当我用xarray
(see here)读取netCDF
文件时
import xarray as xr
dnc = xr.open_dataset(ff)
df = dnc.to_dataframe()
我明白了
^{pr2}$以及
>>> df.head()
hgt
lat lon
-32.0 -73.000000 0
-72.999168 0
-72.998337 0
-72.997498 4
-72.996666 0
在df
中,lat
和{lat
。所以我认为对于lon
和{shapely.geometry.Point((lon, lat))
必须在{
就像评论中提到的@jhamman,你的lat和lon是pandas框架中的索引。所以从这个开始
我们将首先重置帧的索引
df = df.reset_index()
然后我们将创建我们的几何体。i、 e.shapely点了一个列表比较
geom = [Point(x,y) for x, y in zip(df['lon'], df['lat'])]
现在我们将熊猫数据帧转换为GeoPandas GeoDataFrame
^{pr2}$我花了更长的时间来尝试一些交换内存(8GB)的解决方案。最后我尝试了
dask
,但我的方法仍然不正确:如上所述,这些文件很大:
^{pr2}$有没有其他方法可以直接从
netCDF-File
创建geometry.Point
?在相关问题 更多 >
编程相关推荐