python读取txt文件,读取其中的经纬度到lon、lat中
时间: 2024-10-20 12:14:48 浏览: 53
在Python中,你可以使用内置的`open()`函数配合`readlines()`方法来逐行读取TXT文件,并从每行数据中解析出经纬度信息。假设你的TXT文件是以逗号分隔的格式存储经纬度,例如:
```
40.7128, -74.0060
51.5074, -0.1278
...
```
你可以这样做:
```python
def read_coordinates(file_path):
with open(file_path, 'r') as file:
lines = file.readlines()
lon_list = []
lat_list = []
for line in lines:
# 假设坐标以逗号分隔,去掉换行符
parts = line.strip().split(',')
lon, lat = float(parts[0]), float(parts[1])
lon_list.append(lon)
lat_list.append(lat)
return lon_list, lat_list
# 使用函数并指定文件路径
file_name = "coordinates.txt"
lon, lat = read_coordinates(file_name)
```
在这个例子中,`lon_list` 和 `lat_list` 就分别存储了所有读取到的经度和纬度。
相关问题
python 将一个xlsx文件中的QPE、lon、lat等构建成nc文件,其中QPE为变量,lon、lat为经纬度维度
Python中有多种库可以用来处理Excel文件(如pandas)和NetCDF文件(如xarray和netcdf4)。要将Excel文件转换成NetCDF,首先需要读取Excel数据,然后创建一个新的NetCDF文件并设置正确的维度和变量。以下是一个简单的步骤概述:
1. **导入必要的库**:
```python
import pandas as pd
import xarray as xr
import numpy as np
from netCDF4 import Dataset
```
2. **加载Excel文件**:
```python
df = pd.read_excel('input.xlsx', sheet_name='Sheet1') # 假设表名为'Sheet1'
QPE_data = df['QPE'].values # 提取QPE列的数据
lon_data = df['lon'].values
lat_data = df['lat'].values
```
3. **检查和处理数据**:
确保数据类型正确,并按照坐标轴的要求排序。
4. **创建新的NetCDF文件**:
```python
nc_file = Dataset('output.nc', 'w', format='NETCDF4')
```
5. **添加维度**:
```python
time_dim = nc_file.createDimension('time', None) # 或者根据时间长度设置具体的值
lon_dim = nc_file.createDimension('lon', lon_data.shape[0])
lat_dim = nc_file.createDimension('lat', lat_data.shape[0])
lon_var = nc_file.createVariable('lon', float, ('lon',))
lat_var = nc_file.createVariable('lat', float, ('lat',))
lon_var[:] = lon_data
lat_var[:] = lat_data
```
6. **添加变量(QPE)**:
```python
qpe_var = nc_file.createVariable('QPE', float, ('time', 'lat', 'lon'))
qpe_var[:] = QPE_data
```
7. **保存并关闭文件**:
```python
nc_file.close()
```
8.
如何用python读取。nc文件并把其浓度绘制出来,同时这个经纬度里包括海洋流域(lon为19.5到29.5;lat为31.5到34.5)海洋区域为白色
要使用Python读取`.nc`(NetCDF)文件并绘制特定经纬度范围内的浓度数据,你可以使用一些科学计算和绘图库,如`netCDF4`、`numpy`和`matplotlib`。以下是一个简单的步骤指南:
1. 安装必要的库(如果尚未安装):
```python
pip install netCDF4 numpy matplotlib
```
2. 使用`netCDF4`库打开`.nc`文件,并提取经纬度以及浓度数据。
3. 使用`numpy`确定经纬度在指定范围内的数据点。
4. 使用`matplotlib`绘制浓度图,并将不在经纬度指定范围内的海洋区域设置为白色。
下面是一个简单的代码示例:
```python
import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
# 打开文件
with nc.Dataset('your_file.nc', 'r') as dataset:
# 提取数据
lons = dataset.variables['longitude'][:] # 假设经度变量名为'longitude'
lats = dataset.variables['latitude'][:] # 假设纬度变量名为'latitude'
concentration = dataset.variables['concentration'][:] # 假设浓度变量名为'concentration'
# 确定经纬度范围内的数据点索引
lon_indices = np.where((lons >= 19.5) & (lons <= 29.5))
lat_indices = np.where((lats >= 31.5) & (lats <= 34.5))
# 提取经纬度范围内的浓度数据
selected_lons = lons[lon_indices]
selected_lats = lats[lat_indices]
selected_concentration = concentration[lat_indices, lon_indices]
# 绘制浓度图
plt.figure()
plt.scatter(selected_lons, selected_lats, c=selected_concentration, cmap='viridis')
plt.colorbar(label='浓度')
plt.title('浓度图')
# 设置不在经纬度指定范围内的区域为白色
# 这一步取决于你的绘图需求,可能需要创建一个合适的掩膜
plt.fill_between(selected_lons, min(selected_lats), max(selected_lats), color='white', where=np.logical_or(selected_lons < 19.5, selected_lons > 29.5))
plt.fill_between(selected_lons, min(selected_lats), max(selected_lats), color='white', where=np.logical_or(selected_lats < 31.5, selected_lats > 34.5))
# 显示图形
plt.show()
```
请注意,上述代码假设`.nc`文件中的变量名为`longitude`、`latitude`和`concentration`,并且这些变量的维度顺序是按照经度、纬度排列的。如果你的实际文件结构不同,你需要根据实际情况调整代码。
阅读全文