当前位置:首页>python>用Python绘制博士论文研究区概况图:以西北干旱区DEM为例

用Python绘制博士论文研究区概况图:以西北干旱区DEM为例

  • 2026-08-20 15:36:11
用Python绘制博士论文研究区概况图:以西北干旱区DEM为例
讲师招募 | 免费数据资源 |最新最热
直播课程推荐

智能科研团队构建与科研AIOS全链路实战培训班——面向真实科研场景,基于 Codex、Claude Code、OpenClaw 与 Hermes 四位“AI研究员”,构建贯通科研任务执行、流程编排、质量复核与知识沉淀全流程的可迭代、可迁移科研智能协作系统(AIOS)

直播时间:8月14日-17日

基于AI Agent(Codex · Claude Code · Hermes)的文献计量学+Meta分析一体化融合——选题论证、证据合成、成果交付及可迁移、可复制的自动化工作流实践技术培训班

直播时间:8月21日-24日

基于Claude Code 、Codex双AI协同高水平论文撰写与质量校准:研究定位→数据分析→论文初稿→交叉审稿→投稿与返修全流程实践培训班

直播时间:8月29日-30日

基于Claude Code与Codex双AI Agent协作的WebGIS项目全链路开发与生产级部署实战高级培训班

直播时间:9月5日-6日

一、原文勘误:几个需要注意的细节

在参考同类文章时,我发现以下几个容易踩坑的地方,先帮你排雷:

问题
原文情况
修正说明
经纬度范围
73°E–108°E, 34°N–50°N
不同文献界定略有差异。多数研究采用 73°E–107°E, 35°N–50°N,本文取较宽范围以覆盖完整研究区。
ETOPO2 变量名
直接使用 x/y/z
ETOPO2 的 NetCDF 变量名因下载版本而异,可能是 lon/lat/elevation 或 x/y/z。建议用 xarray 自动识别,避免硬编码。
m_map 工具箱
未说明需额外安装
m_map 是 Matlab 第三方工具箱,非内置函数。Python 的 cartopy 同样需 conda/pip 单独安装。
色带文件
依赖外部 colorsave.mat
该文件为自定义色带,原文未提供下载方式。本文改用 Matplotlib 原生 terrain + 自定义 ListedColormap,零外部依赖。
代码索引
lat(indices_lat,:)
lat 为一维向量,不应使用二维索引 (:,),运行会报错。

二、研究区概况:中国西北干旱区

中国西北干旱区位于欧亚大陆腹地,深居内陆,远离海洋,是亚洲中部干旱区的重要组成部分。

地理参数
描述
经纬度范围
约 73°E–108°E,34°N–50°N
行政区划
新疆全境、甘肃河西走廊、内蒙古阿拉善盟、宁夏北部
地貌格局
"三山夹两盆"——阿尔泰山、天山、昆仑山;准噶尔盆地、塔里木盆地
气候特征
温带大陆性干旱气候,年均降水不足 150 mm
核心矛盾
水资源短缺是制约社会经济发展的首要自然因素

该区域地形起伏剧烈(0–6000 m),地貌类型多样,是展示 DEM 制图技术的理想案例。

三、技术路线总览

相比 Matlab 的 m_map,Python 生态的 Cartopy 具有以下优势:

  • 开源免费,无需商业授权

  • 与 Matplotlib 深度集成,绘图语法一致

  • 内置多种投影(PlateCarree、Lambert、Albers 等)

  • 自动下载全球海岸线/国界/河流(Natural Earth 数据集)

  • 与 xarray/netCDF4 无缝衔接,适合处理大规模栅格数据

四、环境配置

# 创建独立环境(推荐)conda create -n geoplot python=3.11conda activate geoplot# 核心依赖conda install-c conda-forge cartopy matplotlib numpy xarray netCDF4 shapely# 可选:用于读取 Shapefile 的引擎pip install pyshp geopandas

⚠️ 注意:Cartopy 依赖 PROJ、GEOS、Shapely 等 C 库,强烈建议通过 conda-forge 安装,pip 直接安装极易因库版本冲突导致投影变换失败。

五、数据准备

5.1 DEM 高程数据

推荐数据源:

数据集
分辨率
格式
下载地址
GEBCO
15 弧秒
NetCDF/GeoTIFF
https://www.gebco.net
ETOPO2
2 弧分
NetCDF
NOAA 官网
SRTM
1–3 弧秒
GeoTIFF
NASA Earthdata

本文以 GEBCO 2023(NetCDF 格式)为例,文件名为 gebco_2023_n50.0_s34.0_w73.0_e108.0.nc

5.2 研究区边界矢量

准备研究区边界 Shapefile(如 NW_Arid_Region.shp),用于精确裁剪和描边。若无现成边界,可用以下方式近似

# 用经纬度范围+ cartopy 内置国界粗略框定# 精确制图仍需官方审图号边界数据

六、核心代码:从零绘制 DEM 地形图

以下代码分模块讲解,可直接拼接为完整脚本。

import numpy as npimport xarray as xrimport matplotlib.pyplot as pltimport matplotlib.colors as mcolorsfrom matplotlib.colors import LightSourceimport cartopy.crs as ccrsimport cartopy.feature as cfeaturefrom cartopy.io.shapereader import Readerimport warningswarnings.filterwarnings('ignore')

6.2 读取并裁剪 DEM 数据

# ========== 参数配置 ==========LON_MIN, LON_MAX = 73.0108.0LAT_MIN, LAT_MAX = 34.050.0DEM_PATH = './gebco_2023_n50.0_s34.0_w73.0_e108.0.nc'BOUNDARY_PATH = './NW_Arid_Region.shp'  # 研究区边界OUTPUT_PATH = './NW_Arid_Region_DEM.png'# ========== 读取数据 ==========ds = xr.open_dataset(DEM_PATH)# 自动识别变量名(不同数据集命名不同)elevation_var = Nonefor candidate in ['elevation''z''altitude''band1']:    if candidate in ds.data_vars:        elevation_var = candidate        breakif elevation_var is None:    raise ValueError(f"未找到高程变量,可用变量: {list(ds.data_vars)}")dem = ds[elevation_var]# 裁剪研究区dem_clip = dem.sel(    lat=slice(LAT_MAX, LAT_MIN),   # 注意:纬度通常从北到南递减    lon=slice(LON_MIN, LON_MAX))lon = dem_clip.lon.valueslat = dem_clip.lat.valuesz = dem_clip.values# 高程截断(突出地形细节)z = np.clip(z, 06000)

6.3 自定义地形色带

# ========== 构建 ArcGIS 风格地形色带 ==========terrain_colors = [    (0.20, 0.40, 0.20),   # 0-500m   深绿(河谷/绿洲)    (0.40, 0.65, 0.30),  # 500-1000m 浅绿(低山草原)    (0.75, 0.75, 0.50),  # 1000-2000m 黄绿(丘陵)    (0.90, 0.75, 0.40),  # 2000-3000m 土黄(戈壁)    (0.80, 0.55, 0.30),  # 3000-4000m 棕黄(荒漠)    (0.55, 0.35, 0.20),  # 4000-5000m 棕色(高山)    (0.40, 0.25, 0.20),  # 5000-5500m 深棕(极高山)    (0.90, 0.90, 0.95),  # >5500m    雪白色(冰川)]terrain_cmap = mcolors.LinearSegmentedColormap.from_list(    'arid_terrain', terrain_colors, N=256)

6.4 初始化地图投影

# ========== 地图投影设置 ==========# 等距圆柱投影(适合中低纬度区域概况图)proj = ccrs.PlateCarree()fig = plt.figure(figsize=(128))ax = fig.add_subplot(111, projection=proj)# 设置显示范围ax.set_extent([LON_MIN, LON_MAX, LAT_MIN, LAT_MAX], crs=proj)# 添加地图要素ax.add_feature(cfeature.COASTLINE, linewidth=0.6, edgecolor='gray')ax.add_feature(cfeature.BORDERS, linewidth=0.5, linestyle='--', edgecolor='gray')ax.add_feature(cfeature.RIVERS, alpha=0.4, edgecolor='blue', linewidth=0.4)ax.add_feature(cfeature.LAKES, alpha=0.5, facecolor='lightblue')

6.5 DEM 渲染 + 地形晕染

# ========== DEM 渲染 ==========im = ax.pcolormesh(    lon, lat, z,    cmap=terrain_cmap,    shading='auto',    vmin=0, vmax=6000,    transform=proj,    rasterized=True   # 栅格化,减小矢量输出体积)# ========== 地形晕染(Hillshade)增强立体感 ==========ls = LightSource(azdeg=315, altdeg=45)  # 光源:西北方向,45°仰角# 计算 hillshade(基于坡度坡向)hillshade = ls.hillshade(z, vert_exag=0.05)# 将 hillshade 作为透明度叠加层# 方法:用 RGBA 方式,把 hillshade 映射到 alpha 通道rgba = terrain_cmap((z - 0) / 6000)rgba[..., 3] = 0.9  # 基础透明度# 或者更高级的做法:用 shade_rgb 直接生成带光照的彩色地形rgb_shaded = ls.shade(    z, cmap=terrain_cmap, vert_exag=0.08,    blend_mode='soft', vmin=0, vmax=6000)ax.imshow(    rgb_shaded, extent=[LON_MIN, LON_MAX, LAT_MIN, LAT_MAX],    origin='lower', transform=proj, interpolation='bilinear')

6.6 叠加研究区边界

# ========== 叠加研究区边界 ==========# 方式1:从 Shapefile 读取try:    reader = Reader(BOUNDARY_PATH)    ax.add_geometries(        reader.geometries(), crs=proj,        facecolor='none', edgecolor='black', linewidth=1.5, zorder=10    )except Exception as e:    print(f"边界加载失败: {e}")# 方式2:用 cartopy 内置中国边界(粗略)# ax.add_feature(cfeature.BORDERS, linewidth=0.8)

6.7 添加经纬网格与标注

# ========== 经纬网格 ==========gl = ax.gridlines(    crs=proj, draw_labels=True,    linewidth=0.8, color='gray', alpha=0.5, linestyle='--',    xlocs=np.arange(731095),   # 经度刻度    ylocs=np.arange(34514)     # 纬度刻度)# 网格标签样式gl.top_labels = Falsegl.right_labels = Falsegl.xlabel_style = {'size'11'fontname''Times New Roman'}gl.ylabel_style = {'size'11'fontname''Times New Roman'}gl.xformatter = plt.matplotlib.ticker.FuncFormatter(    lambda x, _: f'{int(x)}°E')gl.yformatter = plt.matplotlib.ticker.FuncFormatter(    lambda y, _: f'{int(y)}°N')

6.8 添加 Colorbar、比例尺、指北针

# ========== Colorbar ==========cbar = plt.colorbar(    im, ax=ax, shrink=0.6, pad=0.02, aspect=25,    orientation='vertical', extend='max')cbar.set_label('Elevation (m)', fontsize=12, fontname='Times New Roman')cbar.ax.tick_params(labelsize=10)# ========== 比例尺 ==========def add_scalebar(ax, lon0, lat0, length_km, linewidth=3):    """在指定位置添加线段比例尺"""    # 1° 纬度 ≈ 111 km    length_deg = length_km / 111.0    ax.plot([lon0, lon0 + length_deg], [lat0, lat0],            'k-', linewidth=linewidth, solid_capstyle='butt')    ax.text(lon0 + length_deg/2, lat0 - 0.3f'{length_km} km',            ha='center', va='top', fontsize=9, fontweight='bold')add_scalebar(ax, lon0=75, lat0=35.5, length_km=500)# ========== 指北针 ==========def add_north_arrow(ax, x, y, size=0.03):    """添加指北针"""    ax.annotate('N', xy=(x, y), xytext=(x, y-size*3),                arrowprops=dict(arrowstyle='->', color='black', lw=2),                fontsize=12, ha='center', va='center', fontweight='bold',                transform=ax.transAxes)  # 使用 axes 坐标系add_north_arrow(ax, x=0.92, y=0.88)# ========== 地名标注 ==========labels = [    (85.546.5'北疆'), (84.039.0'南疆'),    (100.040.0'河西走廊'), (82.043.0'天山'),    (82.036.0'昆仑山'), (88.048.0'阿尔泰山'),    (87.041.0'塔里木盆地'), (86.047.0'准噶尔盆地')]for lx, ly, txt in labels:    ax.text(lx, ly, txt, fontsize=9, fontweight='bold',            color='white' if ly < 40 else 'black',            ha='center', va='center',            path_effects=[plt.matplotlib.patheffects.withStroke(                linewidth=2, foreground='black'            )], zorder=15)# ========== 标题与输出 ==========ax.set_title('DEM Topographic Map of Northwest Arid Region, China',             fontsize=14, fontweight='bold', pad=15, fontname='Times New Roman')plt.tight_layout()plt.savefig(OUTPUT_PATH, dpi=300, bbox_inches='tight',            facecolor='white', edgecolor='none')plt.show()print(f"地图已保存至: {OUTPUT_PATH}")

七、效果预览

下图展示了 DEM 渲染 与 地形晕染(Hillshade) 两种风格的对比:

左图:标准 DEM 伪彩色渲染;右图:叠加 Hillshade 后的地形晕染效果,山体立体感显著增强,更适合论文插图。

八、进阶技巧

8.1 局部放大图(Inset Map)

博士论文常需要在主图一角添加局部放大图(如伊犁河谷、塔里木河下游):

from mpl_toolkits.axes_grid1.inset_locator import inset_axes# 在主图内创建子轴ax_inset = inset_axes(ax, width="35%", height="35%",                      loc='lower left',                      bbox_to_anchor=(0.020.0211),                      bbox_transform=ax.transAxes)# 子图设置ax_inset.set_extent([80854245], crs=proj)ax_inset.pcolormesh(lon, lat, z, cmap=terrain_cmap,                    vmin=0, vmax=6000, transform=proj)ax_inset.add_feature(cfeature.COASTLINE, linewidth=0.4)ax_inset.set_title('Ili Valley', fontsize=9)

8.2 叠加气象站点 / 采样点

# 站点坐标(示例)stations = {    'Urumqi': (87.6, 43.8),    'Kashgar': (76.0, 39.5),    'Zhangye': (100.4, 38.9)}for name, (slon, slat) in stations.items():    ax.plot(slon, slat, 'ro', markersize=5, transform=proj, zorder=15)    ax.annotate(name, (slon, slat), xytext=(5, 5),                textcoords='offset points', fontsize=8, color='darkred')

8.3 输出矢量格式(PDF/EPS)

期刊投稿常要求矢量图:

plt.savefig('./NW_Arid_Region_DEM.pdf'format='pdf',            bbox_inches='tight', dpi=300)

💡 提示pcolormesh 默认生成栅格图像。若需矢量输出,可将 rasterized=True 去掉,但文件体积会暴增。建议底图栅格化、边界/标注矢量化的混合输出策略。

九、常见问题排查

报错信息
原因
解决方案
ModuleNotFoundError: No module named 'cartopy'
未安装或环境错误
conda install -c conda-forge cartopy
ProjError / 投影变换失败
PROJ 库版本冲突
用 conda 安装,避免 pip
ValueError: x and y arguments to pcolormesh
经纬度网格与数据维度不匹配
检查 lon.shapelat.shapez.shape 是否一致
地图空白/只显示网格
数据范围与 set_extent 不匹配
确认 extent 与 DEM 裁剪范围一致
色带不连续/有断层
pcolormesh 对 NaN 处理不当
用 np.ma.masked_where(np.isnan(z), z) 掩膜

十、推荐参考文献

如需在论文中引用西北干旱区背景,以下文献可供参考:

  1. 《中国西北干旱区水资源与生态环境研究报告》

  2. The dominant warming season shifted from winter to spring in the arid region of Northwest China

  3. Potential risks and challenges of climate change in the arid region of northwestern China

  4. Spatiotemporal evolution and driving factors analysis of fractional vegetation coverage in the arid region of northwest China

  5. Temporal and spatial changes of extreme precipitation and its related large-scale climate mechanisms in the arid region of Northwest China during 1961–2022

  6. 《伊犁河谷草地水分利用效率时空变化及其对气候因子的响应》


写在最后

相比 Matlab,Python + Cartopy 的制图方案在可重复性、可扩展性、开源生态上具有明显优势。本文提供的代码框架不仅适用于西北干旱区,只需修改 数据路径、经纬度范围、边界文件 三个参数,即可迁移到任意研究区域。


本文仅供学术交流,制图方法可自由借鉴。

版权声明

内容仅做学术分享之用,不代表本号观点,版权归原作者所有,若涉及侵权等行为,请联系我们删除,万分感谢!

8月份直播课程推荐
IBIS陆地生态系统模型从环境搭建、多源数据预处理到水-热-碳-氮耦合模拟、模型验证与论文成果衔接全链路实战应用高级研修班

直播时间:8月22日-23日、29日-30日

基于Claude Code 、Codex双AI协同高水平论文撰写与质量校准:研究定位→数据分析→论文初稿→交叉审稿→投稿与返修全流程实践培训班

直播时间:8月29日-30日

最新SWAT+模型在水文水资源及面源污染模拟中的实践技术应用及典型案例分析培训班

直播时间:8月20日-23日

高水平学术论文写作的“破局”之道暨AI赋能下前沿选题、智能写作、科研可视化、精准选刊与投稿、审稿博弈策略及CNS顶刊跃迁进阶全链路实践培训班

直播时间:8月21日-22日、28日-29日

双碳目标下区域大气环境与新能源气候资源未来演变高精度模拟技术:CMIP6+WRF-Chem、误差订正与多情景污染—气候协同评估及典型案例应用培训班

直播时间:8月29日-30日、9月5日-6日

从机理到实践告别“黑箱”模拟:OpenGeoSys(OGS6)多物理场THMC 全耦合建模与Python自动化分析高级实战营

直播时间:8月15日-16日、22日-23日

GeoAI遥感深度学习高级研修班——场景分类·语义分割·目标检测·变化检测四大任务,从CNN、Transformer到空间基础模型与AI Agent全流程实战技术应用

直播时间:8月29日-30日、9月5日-6日

基于AI Agent(Codex · Claude Code · Hermes)的文献计量学+Meta分析一体化融合——选题论证、证据合成、成果交付及可迁移、可复制的自动化工作流实践技术培训班

直播时间:8月14日-17日

AI-Python机器学习与深度学习核心架构、可解释AI及前沿技术应用暨融合经典ML集成方法、CNN与U-Net视觉网络、Transformer注意力机制、扩散模型、SHAP分析方法、图神经网络与Hermes Agent科研自动化高级研修班

直播时间:8月29日-30日、9月5日-6日

农业普查大数据与AI融合的数字农业与粮食安全智慧决策高级培训班

直播时间:8月29日-30日、9月5日-6日

智能科研团队构建与科研AIOS全链路实战培训班——面向真实科研场景,基于 Codex、Claude Code、OpenClaw 与 Hermes 四位“AI研究员”,构建贯科研任务执行、流程编排、质量复核与知识沉淀全流程的可迭代、可迁移科研智能协作系统(AIOS)

直播时间:8月14日-17日

9月份直播课程推荐
2027年国自然与省级基金项目申报全链条实战升级暨AI人机协同撰写、立项依据精修、关键科学问题凝练、技术路线图设计、评审逻辑深度拆解、申报复盘经验融入与高质量本子打磨高级培训班

直播时间:9月5日-6日

基于Claude Code与Codex双AI Agent协作的WebGIS项目全链路开发与生产级部署实战高级培训班

直播时间:9月5日-6日

科研技术服务

推荐阅读
1、农林生态、大气、遥感、水文等系统教程通道——点击文末"阅读全文"进入
2、地学领域数据、年鉴、地图、课件资料等免费资源下载——点击进入
3、百余门教程在线免费观看——点击文末"阅读全文"进入
4、会员超值福利领取——点击文末"阅读全文"进入
如何加快课题组人才梯队建设与人才培养?

快来Ai尚研修【Easy Scientific  Research】点亮科研简学践行-您的随行导师平台

官 网:www.aishangyanxiu.com;

公众号:关注“Ai尚研修”公众号,点击“Ai尚课堂”进入也可以哦!

Ai尚研修长期招募讲师——诚邀您的加入

Ai尚研修,倾力打造您的专属发展道路,这里有丰富的客户资源,专业的授课平台,强大的推广力度,全员的热血支持!

Ai尚研修期待您的加入,共同打造精品课程,助力科研!

扫描下方二维码,关注我们
Ai尚研修客服
公众号

结束

声明: 本号旨在传播、传递、交流,对相关文章内容观点保持中立态度。涉及内容如有侵权或其他问题,请与本号联系,第一时间做出撤回。

结束

Ai尚研修丨专注科研领域

技术推广,人才招聘推荐,科研活动服务

科研技术云导师,Easy cientfic  Research

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 15:33:01 HTTP/2.0 GET : https://f.mffb.com.cn/a/509378.html
  2. 运行时间 : 0.276322s [ 吞吐率:3.62req/s ] 内存消耗:4,641.03kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b8a85278fb9c02939c983ad0b7d5b500
  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.000927s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001169s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000608s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000604s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001081s ]
  6. SELECT * FROM `set` [ RunTime:0.000477s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001176s ]
  8. SELECT * FROM `article` WHERE `id` = 509378 LIMIT 1 [ RunTime:0.013264s ]
  9. UPDATE `article` SET `lasttime` = 1787297581 WHERE `id` = 509378 [ RunTime:0.051281s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000518s ]
  11. SELECT * FROM `article` WHERE `id` < 509378 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000831s ]
  12. SELECT * FROM `article` WHERE `id` > 509378 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000804s ]
  13. SELECT * FROM `article` WHERE `id` < 509378 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001310s ]
  14. SELECT * FROM `article` WHERE `id` < 509378 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002786s ]
  15. SELECT * FROM `article` WHERE `id` < 509378 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.054750s ]
0.279117s