当前位置:首页>python>Python+GEE | KBDI干旱指数

Python+GEE | KBDI干旱指数

  • 2026-08-18 23:12:02
Python+GEE | KBDI干旱指数
Keetch–Byram干旱指数(KBDI)用于表征土壤水分亏缺程度,即土壤恢复至田间持水量所需的水量。KBDI越高,说明土壤和可燃物越干燥,潜在火险通常越高。本文基于ERA5逐日降水和最高气温,计算2010—2019年黄土高原KBDI。

依赖库导入与全局参数配置

from pathlib import Pathimport eeimport geemapimport geopandas as gpdimport matplotlib as mplimport matplotlib.pyplot as pltimport numpy as npimport pandas as pdimport rioxarrayimport xarray as xrfrom matplotlib import font_managerfrom shapely.geometry import shapefrom xee import helpersimport xclim.indicators.atmos as xindexPROJECT = "giseryu"ROI_ASSET = "projects/giseryu/assets/HUANGTUGAOYUAN"SPINUP_START = "2009-01-01"ANALYSIS_START = "2010-01-01"ANALYSIS_END = "2020-01-01"GRID_DEGREES = 0.3HIGH_KBDI_THRESHOLD = 100.0OUTPUT_DIR = Path(r"E:\黄土高原_KBDI结果")available_fonts = {font.name for font in font_manager.fontManager.ttflist}chinese_candidates = ["Microsoft YaHei""SimHei""Noto Sans CJK SC""Arial Unicode MS"]CHINESE_FONT = next((name for name in chinese_candidates if name in available_fonts), "DejaVu Sans")mpl.rcParams.update({    "font.family""sans-serif",    "font.sans-serif": [CHINESE_FONT, "Arial""DejaVu Sans"],    "axes.unicode_minus"False,    "svg.fonttype""none",    "pdf.fonttype"42,    "font.size"9,    "axes.spines.top"False,    "axes.spines.right"False,    "figure.dpi"120,})print(f"Chinese font: {CHINESE_FONT}")

连接Earth Engine

FORCE_AUTH = Falseif FORCE_AUTH:    ee.Authenticate(force=True)try:    ee.Initialize(        project=PROJECT,        opt_url="https://earthengine-highvolume.googleapis.com",    )except Exception:    ee.Authenticate()    ee.Initialize(        project=PROJECT,        opt_url="https://earthengine-highvolume.googleapis.com",    )print(f"Earth Engine initialized with project: {PROJECT}")

研究区概况与交互地图

roi_fc = ee.FeatureCollection(ROI_ASSET)roi = roi_fc.geometry().simplify(maxError=1000)feature_count = roi_fc.size().getInfo()area_km2 = roi.area(maxError=1000).divide(1e6).getInfo()bounds = roi.bounds(maxError=1000).getInfo()print(f"Feature count: {feature_count}")print(f"Area: {area_km2:,.2f} km2")print(f"Bounds: {bounds}")
study_map = geemap.Map(basemap="SATELLITE")study_map.centerObject(roi_fc, 5)study_map.addLayer(roi_fc, {"color""yellow"}, "黄土高原研究区")study_map

ERA5逐日气象数据

era5 = (    ee.ImageCollection("ECMWF/ERA5/DAILY")    .filterDate(SPINUP_START, ANALYSIS_END)    .filterBounds(roi)    .select(        ["maximum_2m_air_temperature""total_precipitation"],        ["max_temp""pr"],    ))print(f"ERA5 image count including spin-up: {era5.size().getInfo()}")print(f"Bands: {ee.Image(era5.first()).bandNames().getInfo()}")
era5_map = geemap.Map()era5_map.centerObject(roi_fc, 5)mean_temperature = era5.select("max_temp").mean().subtract(273.15).clip(roi)annual_precipitation_gee = (    era5.filterDate(ANALYSIS_START, ANALYSIS_END)    .select("pr")    .sum()    .divide(10)    .multiply(1000)    .clip(roi))era5_map.addLayer(    mean_temperature,    {"min": 5, "max": 25, "palette": ["313695""74add1""ffffbf""f46d43""a50026"]},    "多年平均日最高温度(°C)",)era5_map.addLayer(    annual_precipitation_gee,    {"min": 200, "max": 800, "palette": ["fff7fb""9ecae1""3182bd""08519c"]},    "多年平均年降水量(mm)",    False,)era5_map.addLayer(roi_fc, {"color""black"}, "研究区边界")era5_map

转换为xarray并进行单位处理

roi_shapely = shape(roi.getInfo())grid_definition = helpers.fit_geometry(    geometry=roi_shapely,    grid_crs="EPSG:4326",    grid_scale=(GRID_DEGREES, -GRID_DEGREES),)dataset = xr.open_dataset(era5, engine="ee", **grid_definition)dataset = dataset.sortby("time") * 1dataset
dataset["pr"] = dataset["pr"] * 1000.0dataset["pr"].attrs["units"] = "mm/day"dataset["max_temp"] = dataset["max_temp"] - 273.15dataset["max_temp"].attrs["units"] = "degC"analysis_dataset = dataset.sel(time=slice(ANALYSIS_START, "2019-12-31"))mean_annual_precipitation = (    analysis_dataset["pr"]    .resample(time="YE")    .sum(dim="time", skipna=True)    .mean(dim="time", skipna=True))mean_annual_precipitation.attrs["units"] = "mm/year"roi_gdf = geemap.ee_to_gdf(roi_fc)roi_gdf = roi_gdf.set_crs("EPSG:4326") if roi_gdf.crs is None else roi_gdf.to_crs("EPSG:4326")dataset = dataset.rio.write_crs("EPSG:4326")mean_annual_precipitation = mean_annual_precipitation.rio.write_crs("EPSG:4326")dataset_clip = dataset.rio.clip(roi_gdf.geometry, roi_gdf.crs, drop=True)precipitation_climatology = mean_annual_precipitation.rio.clip(roi_gdf.geometry, roi_gdf.crs, drop=True)analysis_clip = dataset_clip.sel(time=slice(ANALYSIS_START, "2019-12-31"))print(dataset_clip)

检查数据的合理性

temperature_climatology = analysis_clip["max_temp"].mean("time", skipna=True)valid_fraction = analysis_clip["pr"].notnull().mean("time") * 100fig, axes = plt.subplots(13, figsize=(154.5), constrained_layout=True)precipitation_climatology.plot(    ax=axes[0], cmap="Blues", robust=True,    cbar_kwargs={"label""Annual precipitation (mm/year)"},)temperature_climatology.plot(    ax=axes[1], cmap="RdYlBu_r", robust=True,    cbar_kwargs={"label""Maximum temperature (°C)"},)valid_fraction.plot(    ax=axes[2], cmap="Greens", vmin=95, vmax=100,    cbar_kwargs={"label""Valid observations (%)"},)titles = ["多年平均年降水量""多年平均日最高温度""有效观测覆盖率"]for ax, title in zip(axes, titles):    roi_gdf.boundary.plot(ax=ax, color="black", linewidth=0.7)    ax.set_title(title)    ax.set_xlabel("Longitude")    ax.set_ylabel("Latitude")plt.show()
monthly_precipitation = analysis_clip["pr"].groupby("time.month").sum("time", skipna=True) / 10monthly_temperature = analysis_clip["max_temp"].groupby("time.month").mean("time", skipna=True)regional_monthly_precipitation = monthly_precipitation.mean(("x""y"), skipna=True)regional_monthly_temperature = monthly_temperature.mean(("x""y"), skipna=True)months = np.arange(113)fig, ax1 = plt.subplots(figsize=(94.5))ax1.bar(months, regional_monthly_precipitation, color="#5DA5DA", width=0.72, label="Precipitation")ax1.set_xlabel("Month")ax1.set_ylabel("Precipitation (mm/month)", color="#2878B5")ax1.tick_params(axis="y", labelcolor="#2878B5")ax1.set_xticks(months)ax2 = ax1.twinx()ax2.plot(months, regional_monthly_temperature, color="#D9534F", marker="o", linewidth=1.8, label="Temperature")ax2.set_ylabel("Maximum temperature (°C)", color="#C43C39")ax2.tick_params(axis="y", labelcolor="#C43C39")ax2.spines["right"].set_visible(True)ax1.set_title("黄土高原月平均降水与最高温度季节循环")ax1.grid(axis="y", alpha=0.2)plt.tight_layout()plt.show()

计算KBDI

kbdi_full = xindex.keetch_byram_drought_index(    pr=dataset_clip["pr"],    tasmax=dataset_clip["max_temp"],    pr_annual=precipitation_climatology,)kbdi = kbdi_full.sel(time=slice(ANALYSIS_START, "2019-12-31"))kbdi.name = "KBDI"kbdi.attrs["long_name"] = "Keetch-Byram drought index"kbdi.attrs["units"] = "mm"print(f"KBDI range: {float(kbdi.min()):.2f} to {float(kbdi.max()):.2f} mm")print(f"Missing fraction: {float(kbdi.isnull().mean() * 100):.3f}%")kbdi

KBDI的空间分布

annual_maximum = kbdi.resample(time="YE").max("time", skipna=True)median_annual_maximum = annual_maximum.median("time", skipna=True)temporal_p95 = kbdi.quantile(0.95, dim="time", skipna=True)high_kbdi_frequency = (kbdi >= HIGH_KBDI_THRESHOLD).mean("time") * 100absolute_maximum = kbdi.max("time", skipna=True)fig, axes = plt.subplots(22, figsize=(129), constrained_layout=True)maps = [median_annual_maximum, temporal_p95, high_kbdi_frequency, absolute_maximum]titles = [    "多年中位年最大KBDI",    "逐日KBDI的95百分位",    f"高KBDI日频率(≥{HIGH_KBDI_THRESHOLD:.0f} mm)",    "2010—2019年绝对最大KBDI",]cmaps = ["YlOrRd""YlOrRd""OrRd""YlOrRd"]labels = ["KBDI (mm)""KBDI (mm)""Frequency (%)""KBDI (mm)"]for ax, data, title, cmap, label in zip(axes.flat, maps, titles, cmaps, labels):    data.plot(ax=ax, cmap=cmap, robust=True, cbar_kwargs={"label": label})    roi_gdf.boundary.plot(ax=ax, color="black", linewidth=0.7)    ax.set_title(title)    ax.set_xlabel("Longitude")    ax.set_ylabel("Latitude")plt.show()
year_labels = annual_maximum["time"].dt.year.valuesfig, axes = plt.subplots(25, figsize=(166.8), constrained_layout=True, sharex=True, sharey=True)shared_min = float(annual_maximum.quantile(0.02))shared_max = float(annual_maximum.quantile(0.98))for index, (ax, year) in enumerate(zip(axes.flat, year_labels)):    annual_maximum.isel(time=index).plot(        ax=ax,        cmap="YlOrRd",        vmin=shared_min,        vmax=shared_max,        add_colorbar=False,    )    roi_gdf.boundary.plot(ax=ax, color="black", linewidth=0.45)    ax.set_title(f"{int(year)}年")    ax.set_xlabel("")    ax.set_ylabel("")normalizer = mpl.colors.Normalize(vmin=shared_min, vmax=shared_max)colorbar = fig.colorbar(    mpl.cm.ScalarMappable(norm=normalizer, cmap="YlOrRd"),    ax=axes,    orientation="horizontal",    fraction=0.04,    pad=0.06,)colorbar.set_label("Annual maximum KBDI (mm)")fig.suptitle("黄土高原逐年最大KBDI空间分布", fontsize=13)plt.show()

KBDI的时间变化与季节循环

regional_daily_mean = kbdi.mean(("x""y"), skipna=True)fig, ax = plt.subplots(figsize=(134.5))regional_daily_mean.plot(ax=ax, color="#C43C39", linewidth=0.8)ax.axhline(HIGH_KBDI_THRESHOLD, color="#4D4D4D", linestyle="--", linewidth=0.9, label=f"{HIGH_KBDI_THRESHOLD:.0f} mm")ax.set_title("黄土高原逐日空间平均KBDI")ax.set_xlabel("Date")ax.set_ylabel("KBDI (mm)")ax.grid(alpha=0.2)ax.legend()plt.tight_layout()plt.show()
day_of_year = regional_daily_mean.groupby("time.dayofyear")seasonal_median = day_of_year.median("time", skipna=True)seasonal_p10 = day_of_year.quantile(0.10, dim="time", skipna=True)seasonal_p90 = day_of_year.quantile(0.90, dim="time", skipna=True)fig, ax = plt.subplots(figsize=(9, 4.5))ax.fill_between(    seasonal_median["dayofyear"],    seasonal_p10,    seasonal_p90,    color="#F4A582",    alpha=0.35,    label="10th–90th percentile",)ax.plot(seasonal_median["dayofyear"], seasonal_median, color="#B2182B", linewidth=1.8, label="Median")ax.set_title("黄土高原KBDI多年平均季节循环")ax.set_xlabel("Day of year")ax.set_ylabel("KBDI (mm)")ax.set_xlim(1, 366)ax.grid(alpha=0.2)ax.legend()plt.tight_layout()plt.show()

年变化与极端统计

regional_annual_maximum = annual_maximum.mean(("x""y"), skipna=True)regional_annual_mean = kbdi.resample(time="YE").mean("time", skipna=True).mean(("x""y"), skipna=True)regional_high_days = (kbdi >= HIGH_KBDI_THRESHOLD).resample(time="YE").sum("time").mean(("x""y"), skipna=True)years = regional_annual_maximum["time"].dt.year.valuesfig, axes = plt.subplots(13, figsize=(154.2), constrained_layout=True)axes[0].plot(years, regional_annual_maximum, marker="o", color="#B2182B")axes[0].set_title("区域平均年最大KBDI")axes[0].set_ylabel("KBDI (mm)")axes[1].plot(years, regional_annual_mean, marker="o", color="#EF8A62")axes[1].set_title("区域平均年均KBDI")axes[1].set_ylabel("KBDI (mm)")axes[2].bar(years, regional_high_days, color="#D6604D")axes[2].set_title(f"年均高KBDI日数(≥{HIGH_KBDI_THRESHOLD:.0f} mm)")axes[2].set_ylabel("Days/year")for ax in axes:    ax.set_xlabel("Year")    ax.set_xticks(years)    ax.tick_params(axis="x", rotation=45)    ax.grid(axis="y", alpha=0.2)plt.show()
annual_summary = pd.DataFrame({    "year": years.astype(int),    "regional_mean_kbdi_mm": regional_annual_mean.values,    "regional_mean_annual_max_kbdi_mm": regional_annual_maximum.values,    f"regional_mean_days_kbdi_ge_{int(HIGH_KBDI_THRESHOLD)}": regional_high_days.values,})annual_summary.round(2)

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:35:49 HTTP/2.0 GET : https://f.mffb.com.cn/a/510030.html
  2. 运行时间 : 0.266675s [ 吞吐率:3.75req/s ] 内存消耗:4,566.15kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=edb2f02682d6a9c8a71c26bc8c60f01d
  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.001092s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001358s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.021754s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004731s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001403s ]
  6. SELECT * FROM `set` [ RunTime:0.000615s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001480s ]
  8. SELECT * FROM `article` WHERE `id` = 510030 LIMIT 1 [ RunTime:0.001208s ]
  9. UPDATE `article` SET `lasttime` = 1787294149 WHERE `id` = 510030 [ RunTime:0.010724s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.011382s ]
  11. SELECT * FROM `article` WHERE `id` < 510030 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.012856s ]
  12. SELECT * FROM `article` WHERE `id` > 510030 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004203s ]
  13. SELECT * FROM `article` WHERE `id` < 510030 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.007047s ]
  14. SELECT * FROM `article` WHERE `id` < 510030 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.014537s ]
  15. SELECT * FROM `article` WHERE `id` < 510030 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007877s ]
0.270178s