当前位置:首页>python>Python Rasterio 气象栅格完整实操指南:数据获取、预处理与可视化

Python Rasterio 气象栅格完整实操指南:数据获取、预处理与可视化

  • 2026-08-18 23:11:29
Python Rasterio 气象栅格完整实操指南:数据获取、预处理与可视化

气象数据常以栅格格式存储,如卫星影像、再分析数据的 GeoTIFF 文件。rasterio 是处理这类数据的专业工具。

今天这篇文章,带你掌握用 rasterio 处理气象栅格数据的核心方法,并学习如何从镜像地球开放平台获取 GeoTIFF 格式的数据。


前言:从哪里获取 GeoTIFF 气象数据?

rasterio 最擅长处理 GeoTIFF 格式的栅格数据。镜像地球开放平台提供了图层产品 API,可直接获取 GeoTIFF 格式的栅格数据:

使用镜像地球图层 API

import requestsimport rasteriofrom rasterio.io import MemoryFileimport io# 获取 HRES 图层瓦片数据(GeoTIFF 格式)layer_url = "https://api.mirror-earth.com/v1/layer/hres/webgl"params = {    "layer": "temperature_2m",    "time": "2024-07-29T12:00",    "bbox": "110,30,120,40",  # xmin,ymin,xmax,ymax    "apikey": "your_api_key"}response = requests.get(layer_url, params=params)if response.status_code == 200:    # 直接在内存中打开 GeoTIFF    with MemoryFile(response.content) as memfile:        with memfile.open() as src:            print(f"坐标系: {src.crs}")            print(f"边界: {src.bounds}")            print(f"尺寸: {src.width} x {src.height}")            # 读取数据            data = src.read(1)            print(f"温度范围: {data.min():.2f}K 至 {data.max():.2f}K")

镜像地球可获取的 GeoTIFF 数据类型

数据类型
分辨率
更新频率
获取方式
HRES 图层
25km/9km
实时+15天预报
图层 API (WebGL)
GFS 图层
25km/13km
实时+16天预报
图层 API (WebGL)
风场粒子
动态
实时预报
图层 API (风场)
卫星云图
高分辨率
实时
图层 API (卫星)
雷达拼图
高分辨率
实时
图层 API (雷达)

一、基础读取

1.1 读取 GeoTIFF 文件

import rasteriofrom rasterio.plot import showimport matplotlib.pyplot as plt# 打开文件with rasterio.open('weather_tiff.tif') as src:    # 查看文件信息    print(src.profile)    # 读取数据    data = src.read(1)  # 读取第一个波段    # 查看数据形状    print(f"数据形状: {data.shape}")    # 查看坐标系统    print(f"坐标系: {src.crs}")    # 查看变换参数    print(f"变换参数: {src.transform}")# 显示数据plt.figure(figsize=(10, 8))plt.imshow(data, cmap='RdYlBu_r')plt.colorbar(label='温度 (℃)')plt.title('温度分布')plt.show()

1.2 获取元数据

with rasterio.open('weather_tiff.tif') as src:    # 文件尺寸    height = src.height    width = src.width    bands = src.count    # 坐标边界    bounds = src.bounds  # (left, bottom, right, top)    # 分辨率    resolution = src.res  # (x_resolution, y_resolution)    # 数据类型    dtype = src.dtypes[0]    print(f"尺寸: {height} x {width}")    print(f"波段数: {bands}")    print(f"边界: {bounds}")    print(f"分辨率: {resolution}")    print(f"数据类型: {dtype}")

二、坐标转换

2.1 像素坐标转地理坐标

import rasteriodef pixel_to_geo(src, row, col):    """像素坐标转地理坐标"""    # 获取转换矩阵    transform = src.transform    # 转换坐标    lon, lat = transform * (col, row)    return lon, lat# 使用with rasterio.open('weather_tiff.tif') as src:    # 图像中心点    center_row = src.height // 2    center_col = src.width // 2    center_lon, center_lat = pixel_to_geo(src, center_row, center_col)    print(f"中心点: ({center_lon:.4f}, {center_lat:.4f})")

2.2 地理坐标转像素坐标

def geo_to_pixel(src, lon, lat):    """地理坐标转像素坐标"""    # 获取逆变换矩阵    transform = ~src.transform    # 转换坐标    col, row = transform * (lon, lat)    return int(round(row)), int(round(col))# 使用with rasterio.open('weather_tiff.tif') as src:    # 北京坐标    beijing_lon, beijing_lat = 116.4, 39.9    beijing_row, beijing_col = geo_to_pixel(src, beijing_lon, beijing_lat)    print(f"北京像素坐标: ({beijing_row}, {beijing_col})")

2.3 坐标系转换

from rasterio.warp import calculate_default_transform, reproject, Resamplingfrom rasterio.crs import CRSdef reproject_raster(input_path, output_path, target_crs):    """重投影栅格数据"""    with rasterio.open(input_path) as src:        # 计算重投影参数        transform, width, height = calculate_default_transform(            src.crs, target_crs, src.width, src.height, *src.bounds        )        # 设置输出参数        kwargs = src.meta.copy()        kwargs.update({            'crs': target_crs,            'transform': transform,            'width': width,            'height': height        })        # 重投影        with rasterio.open(output_path, 'w', **kwargs) as dst:            for i in range(1, src.count + 1):                reproject(                    source=rasterio.band(src, i),                    destination=rasterio.band(dst, i),                    src_transform=src.transform,                    src_crs=src.crs,                    dst_transform=transform,                    dst_crs=target_crs,                    resampling=Resampling.nearest                )# 使用:从 EPSG:4326 重投影到 EPSG:3857reproject_raster(    'weather_4326.tif',    'weather_3857.tif',    CRS.from_epsg(3857))

三、数据裁剪

3.1 按边界框裁剪

from rasterio.windows import Windowfrom rasterio.warp import transform_boundsdef clip_by_bounds(input_path, output_path, bounds):    """按边界框裁剪"""    with rasterio.open(input_path) as src:        # 转换边界框到源坐标系        transformed_bounds = transform_bounds(            CRS.from_epsg(4326),  # 输入边界框的坐标系            src.crs,            *bounds        )        # 计算窗口        window = src.window(*transformed_bounds)        # 读取裁剪数据        data = src.read(1, window=window)        # 转换窗口        transform = src.window_transform(window)        # 保存裁剪结果        profile = src.profile        profile.update({            'height': window.height,            'width': window.width,            'transform': transform        })        with rasterio.open(output_path, 'w', **profile) as dst:            dst.write(data, 1)# 使用:裁剪中国区域china_bounds = (70, 15, 140, 55)  # (west, south, east, north)clip_by_bounds('global_weather.tif', 'china_weather.tif', china_bounds)

3.2 按多边形裁剪

from shapely.geometry import box, mappingfrom rasterio.mask import maskdef clip_by_polygon(input_path, output_path, polygon):    """按多边形裁剪"""    with rasterio.open(input_path) as src:        # 裁剪数据        out_image, out_transform = mask(src, [polygon], crop=True)        # 更新配置        out_meta = src.meta.copy()        out_meta.update({            "driver": "GTiff",            "height": out_image.shape[1],            "width": out_image.shape[2],            "transform": out_transform        })        # 保存结果        with rasterio.open(output_path, "w", **out_meta) as dst:            dst.write(out_image)# 使用:裁剪北京市beijing_box = box(116.0, 39.5, 117.0, 40.5)  # 西、南、东、北beijing_polygon = mapping(beijing_box)clip_by_polygon('china_weather.tif', 'beijing_weather.tif', beijing_polygon)

四、数据处理

4.1 数据统计

import numpy as npdef calculate_statistics(data):    """计算栅格数据统计"""    return {        'mean': np.nanmean(data),        'std': np.nanstd(data),        'min': np.nanmin(data),        'max': np.nanmax(data),        'median': np.nanmedian(data),        'q25': np.nanpercentile(data, 25),        'q75': np.nanpercentile(data, 75),        'nodata': np.isnan(data).sum()    }# 使用with rasterio.open('weather_tiff.tif') as src:    data = src.read(1)    stats = calculate_statistics(data)    print("栅格数据统计:")    for key, value in stats.items():        print(f"  {key}: {value:.2f}")

4.2 数据分类

def classify_temperature(data, classes=None):    """温度分类"""    if classes is None:        classes = [            (-float('inf'), 273.15),   # 严寒            (273.15, 283.15),          # 寒冷            (283.15, 293.15),          # 温和            (293.15, 303.15),          # 炎热            (303.15, float('inf'))     # 酷热        ]    # 创建分类数组    classified = np.zeros_like(data, dtype=np.int8)    # 分类    for i, (lower, upper) in enumerate(classes, 1):        mask = (data >= lower) & (data < upper)        classified[mask] = i    return classified# 使用with rasterio.open('temperature.tif') as src:    data = src.read(1) - 273.15  # 转为摄氏度    classified = classify_temperature(data)    # 保存分类结果    profile = src.profile    profile.update(dtype=rasterio.int8)    with rasterio.open('temperature_classified.tif', 'w', **profile) as dst:        dst.write(classified, 1)

4.3 数据重采样

from rasterio.warp import reproject, Resamplingdef resample_raster(input_path, output_path, scale_factor):    """重采样栅格数据"""    with rasterio.open(input_path) as src:        # 计算新尺寸        new_height = int(src.height * scale_factor)        new_width = int(src.width * scale_factor)        # 创建目标数组        data = src.read(1)        resampled = np.zeros((new_height, new_width), dtype=data.dtype)        # 重投影到新尺寸        from rasterio.warp import calculate_default_transform        transform, width, height = calculate_default_transform(            src.crs, src.crs,            src.width, src.height, *src.bounds,            dst_width=new_width,            dst_height=new_height        )        # 执行重采样        reproject(            source=data,            destination=resampled,            src_transform=src.transform,            src_crs=src.crs,            dst_transform=transform,            dst_crs=src.crs,            resampling=Resampling.bilinear        )        # 保存结果        profile = src.profile        profile.update({            'height': new_height,            'width': new_width,            'transform': transform        })        with rasterio.open(output_path, 'w', **profile) as dst:            dst.write(resampled, 1)# 使用:降采样到一半分辨率resample_raster('high_res.tif', 'low_res.tif', scale_factor=0.5)

五、实战案例

5.1 ERA5 栅格数据可视化

import rasterioimport matplotlib.pyplot as pltimport cartopy.crs as ccrsimport cartopy.feature as cfeatureimport numpy as npdef visualize_era5_data(file_path):    """可视化镜像地球 ERA5 栅格数据"""    with rasterio.open(file_path) as src:        # 读取数据        data = src.read(1)        # 坐标信息        height, width = data.shape        transform = src.transform        # 创建坐标网格        rows, cols = np.indices((height, width))        lons, lats = transform * (cols, rows)        # 数据处理(镜像地球数据可能是 K 或 ℃)        if data.max() > 200:  # 可能是开尔文温度            data_c = data - 273.15            units = "温度 (℃)"        else:            data_c = data            units = "温度 (℃)"        # 创建地图        fig = plt.figure(figsize=(16, 12))        ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())        # 添加地图特征        ax.add_feature(cfeature.COASTLINE, linewidth=0.5)        ax.add_feature(cfeature.BORDERS, linewidth=0.5)        ax.gridlines(draw_labels=True, linewidth=0.3, alpha=0.5)        # 设置地图范围        ax.set_extent([lons.min(), lons.max(), lats.min(), lats.max()], crs=ccrs.PlateCarree())        # 绘制温度分布        im = ax.imshow(            data_c,            extent=[lons.min(), lons.max(), lats.min(), lats.max()],            origin='upper',            transform=ccrs.PlateCarree(),            cmap='RdYlBu_r',            vmin=-30,            vmax=30,            alpha=0.9        )        # 添加颜色条        cbar = plt.colorbar(im, ax=ax, orientation='horizontal', pad=0.05, aspect=40)        cbar.set_label(units, fontsize=12)        # 添加标题        plt.title('ERA5 温度分布(镜像地球)', fontsize=16, pad=20)        # 调整布局        plt.tight_layout()        # 保存图片        plt.savefig('era5_temperature_visualization.png', dpi=300, bbox_inches='tight')        plt.show()        # 统计信息        print(f"温度范围: {data_c.min():.2f}℃ 至 {data_c.max():.2f}℃")        print(f"平均温度: {data_c.mean():.2f}℃")        print(f"标准差: {data_c.std():.2f}℃")# 使用visualize_era5_data('era5_temperature.tif')

5.2 多时相数据处理

from glob import globimport xarray as xrdef process_multitemporal_data(file_pattern, output_path):    """处理多时相栅格数据"""    # 读取所有文件    files = sorted(glob(file_pattern))    # 使用 xarray 读取并合并    datasets = []    for file in files:        with rasterio.open(file) as src:            # 读取数据            data = src.read(1)            # 创建坐标            height, width = data.shape            transform = src.transform            rows, cols = np.indices((height, width))            lons, lats = transform * (cols, rows)            # 提取时间信息(从文件名)            time_str = file.split('_')[-1].split('.')[0]            # 创建 DataArray            da = xr.DataArray(                data=data,                dims=['lat', 'lon'],                coords={                    'lat': lats[0, :],                    'lon': lons[:, 0],                    'time': time_str                },                name='temperature'            )            datasets.append(da)    # 合并数据    ds = xr.concat(datasets, dim='time')    # 计算统计量    ds_mean = ds.mean(dim='time')    ds_std = ds.std(dim='time')    ds_min = ds.min(dim='time')    ds_max = ds.max(dim='time')    # 保存为 NetCDF    ds.to_netcdf(output_path)    print(f"处理完成: {len(datasets)} 个时间点")    print(f"输出文件: {output_path}")    return ds# 使用ds = process_multitemporal_data(    'era5_temp_*.tif',    'era5_temp_timeseries.nc')

六、总结

rasterio 处理地理栅格数据的关键点:

  1. 1. 基础读取:读取 GeoTIFF 文件、获取元数据
  2. 2. 坐标转换:像素坐标与地理坐标转换、坐标系重投影
  3. 3. 数据裁剪:按边界框、按多边形裁剪数据
  4. 4. 数据处理:数据统计、分类、重采样
  5. 5. 实战应用:ERA5 数据可视化、多时相数据处理
  6. 6. 批量处理:自动化处理多个文件

rasterio 是处理气象栅格数据的专业工具,结合其他库可以完成复杂的数据分析任务。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 20:54:05 HTTP/2.0 GET : https://f.mffb.com.cn/a/507664.html
  2. 运行时间 : 0.208641s [ 吞吐率:4.79req/s ] 内存消耗:4,773.38kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=600c8003841646f68f7e3752eabd985c
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001189s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001568s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000749s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000669s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001281s ]
  6. SELECT * FROM `set` [ RunTime:0.000591s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001558s ]
  8. SELECT * FROM `article` WHERE `id` = 507664 LIMIT 1 [ RunTime:0.009284s ]
  9. UPDATE `article` SET `lasttime` = 1787316845 WHERE `id` = 507664 [ RunTime:0.005966s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000730s ]
  11. SELECT * FROM `article` WHERE `id` < 507664 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001146s ]
  12. SELECT * FROM `article` WHERE `id` > 507664 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.005450s ]
  13. SELECT * FROM `article` WHERE `id` < 507664 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005492s ]
  14. SELECT * FROM `article` WHERE `id` < 507664 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008378s ]
  15. SELECT * FROM `article` WHERE `id` < 507664 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003147s ]
0.212274s