Python获取栅格数据的空间坐标系统及EPSG编号

本文介绍如何使用Python解析栅格数据,获取其空间坐标系统信息和EPSG编号。
摘要由CSDN通过智能技术生成

1、代码如下

from  osgeo import  gdal,osr
#栅格文件存在的地址
f2 = 'C:\\Users\\zijiancao\\Desktop\\osgeopy-data\\osgeopy-data\\osgeopy-data\\Utah\\cache.tif'
ds2 = gdal.Open(f2)
#这里也可以直接用ds2.GetProjection()输出坐标系
sr2 = osr.SpatialReference(wkt=ds2.GetProjection()
Python中,处理NetCDF (Network Common Data Form) 数据并将其转换为栅格数据,并叠加地理网格线通常涉及到使用一些专门的数据处理库,比如`xarray`、`rasterio` 和 `geopandas`。 首先,你需要安装这些库: ```bash pip install xarray rasterio geopandas matplotlib cartopy ``` 1. **读取NC文件**: 使用`xarray`库可以方便地加载NetCDF文件,如: ```python import xarray as xr dataset = xr.open_dataset('your_file.nc') ``` 2. **数据转换为栅格**: 如果你想将数据转换为栅格,需要先确定栅格尺寸、坐标系统以及分辨率。例如,如果数据是基于经纬度的,你可以使用`rasterio`创建一个新的GeoTiff文件: ```python from rasterio.crs import CRS from rasterio.plot import show from rasterio.warp import reproject, transform_bounds # 创建目标CRS target_crs = CRS.from_epsg(4326) # 世界经纬度坐标系 # 计算栅格范围和分辨率 min_lon, max_lon, min_lat, max_lat = dataset['lon'].min(), dataset['lon'].max(), dataset['lat'].min(), dataset['lat'].max() width, height = 1000, 1000 # 根据需求调整大小 res_x, res_y = (max_lon - min_lon) / width, (max_lat - min_lat) / height with rasterio.open('output.tif', 'w', driver='GTiff', crs=target_crs, transform=transform_bounds(target_crs, dataset.crs, min_lon, min_lat, width + res_x, height + res_y), width=width, height=height, dtype=data_array.dtype) as dst: reproject(dataset['variable_of_interest'], dst, src_transform=dataset['variable_of_interest'].transform) ``` 3. **叠加地理网格线**: 可以使用`cartopy`库绘制经纬度网格线,结合`matplotlib`画图: ```python import cartopy.crs as ccrs import matplotlib.pyplot as plt fig, ax = plt.subplots(subplot_kw={'projection': ccrs.PlateCarree()}) ax.coastlines(resolution='10m') # 加载海岸线 gl = ax.gridlines(draw_labels=True, linewidth=0.5, color='gray', linestyle='--') # 绘制网格线 gl.xlabels_top = gl.ylabels_right = False # 隐藏顶部和右侧标签 ax.imshow(rasterio.open('output.tif').read(1), transform=rasterio.open('output.tif').transform) plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值