
简介中国太阳能面板空间分布数据包基于GEE平台与Landsat影像构建采用分层抽样和分区建模策略结合随机森林算法生成2007—2022年六个时期2007、2010、2013、2016、2019、2022的光伏板空间分布模型F1得分超过0.92。该数据包面向地理信息、能源规划与遥感等领域的开发者、研究人员可有效支撑光伏产业时空演变分析和行业管理决策。资源共106个文件压缩包约194MB核心为19个shp空间数据文件及配套shx、dbf、prj、sbn/sbx等属性与索引文件另含标准mxd工程文档、tif图片、中国地图shp及南海诸岛shp便于在ArcGIS中直接打开、编辑和出图。目前已有128人学习下载。使用者可直接获得六个时期的矢量边界文件、可编辑的mxd制图模板和完整地图底图数据细节经Landsat真彩色影像目视验证视觉验证F1得分大于0.87尤其适合需要绘制中国光伏分布专题图或开展长时序空间统计的研究场景。1. 拿到这份太阳能面板空间分布数据先别急着出图做光伏选址、新能源消纳评估或者碳中和空间分析的人大概率会遇到同一类需求手头要一份全国尺度的太阳能面板分布时间跨度从2007年一直到2022年还要能按时期切片出图。这份“中国太阳能面板2007-2022年六个时期空间分布数据”就是干这个用的——它把十几年里中国地面光伏电站的分布沉淀成了标准shp矢量图层配套mxd工程文件、中国地图shp和南海诸岛shp理论上解压之后用ArcMap打开就能出专题图。但实际拿到手绝大多数人的第一反应是有点懵一堆文件不知道哪个打头、mxd打开全是红色感叹号、太阳能面板和底图叠在一起位置对不上。这篇笔记就沿着这个标题把整条链路拆开讲数据包里每个文件是什么角色、六个时期字段怎么管理、mxd数据源怎么救、坐标系和编码有哪些坑以及最后怎么把shp转成GeoJSON或KML接上Web地图。适合刚接触矢量空间数据的新手照着操作也适合熟手用来对照检查自己处理同类数据包的流程有没有漏项。2. 拆包与体检shp文件组成坐标系和属性表的三个必查项拿到这类数据包第一步不是拖进ArcMap而是先做“体检”。标准shp不是一个文件而是一组物理文件少了一个都可能让图层打不开或属性丢失。确认文件齐全、坐标系统一、属性表字段可读这三件事做完后面所有操作才有基础。2.1 标准shp文件的物理组成不是只有一个.shp标准shp格式由至少三个文件组成.shp存几何、.dbf存属性、.shx存几何索引此外经常还会带上.prj存坐标系、.cpg存字符编码以及可选的.sbn、.sbx空间索引。下载数据时最常见的问题是只注意后缀为.shp的文件拷给别人时只复制一个文件结果对方打开报错或属性表全空。成套shp文件清单文件后缀存什么缺失后果.shp几何对象点、线、面无法读取几何.dbf属性表字段和值属性全丢.shx几何位置索引打开报错或极慢.prj坐标系描述叠图错位且无法定位.cpg字符编码声明中文属性乱码检查时可以用命令行快速列目录。Windows下在数据包目录执行dir *.shp *.dbf *.shx *.prj *.cpg能一次看出配套文件齐不齐。macOS或Linux用ls -la | grep -E \.(shp|shx|dbf|prj|cpg)$。我的习惯是把这组文件先放进一个独立文件夹里因为mxd里记录的是绝对路径路径一旦变动后面的数据源修复会多花时间。文件齐了下一步就是查坐标系和属性表。2.2 坐标系体检同一个shp为什么两套软件读出来不一样坐标系的坑是所有shp数据里最容易让新手翻车的地方。打开ArcCatalog预览或者用Python读一下属性能看到坐标系描述。常见的有GCS_WGS_1984、GCS_CGCS2000以及各种投影坐标系。这份数据如果底图统一用CGCS2000那么所有图层应该在同一套坐标系下实际分发数据里混着WGS84的情况非常多两者在平面位置上的差别可以到几十米上百米。用Python做体检很快几行代码就能读出关键元信息import geopandas as gpd # 读取shp,encoding按.cpg或实测调整 gdf gpd.read_file(solar_panels.shp, encodingutf-8) print(坐标系: , gdf.crs) # 投影坐标系定义 print(几何类型:, gdf.geom_type) # Point/Polygon,确认是点位还是面状 print(要素数量:, len(gdf)) # 核对和文档描述是否一致 print(字段列表:, gdf.columns.tolist()) print(gdf.head().to_string()) # 预览前5行,看字段值和中文是否正常这段代码里gdf.crs会输出类似EPSG:4490或GCS_China_Geodetic_Coordinate_System_2000的描述geom_type如果是Point说明数据是光伏电站点位如果是Polygon则可能是电站占地范围columns能看到年份、时期、装机容量这类字段名。读取时如果中文乱码把encoding改成gbk再试一次这往往是.cpg文件缺失或编码声明不一致导致的。ArcGIS里的对应动作是右键shp → Properties在Source页看坐标系在Fields页看字段类型。2.3 mxd文件里存的是什么不存数据只存数据源路径与制图设置mxd是ArcMap的地图文档它本身不含矢量数据只记录图层引用的shp路径、符号化方式、标注配置和图面布局。这就是为什么标题里的数据包要同时带上mxd和中国地图shp——mxd负责把太阳能面板图层、国界底图、南海诸岛小图按制图规范排好用户打开就能直接出图。这里的“标准shp文件”和“mxd文件”是配套关系缺了mxd你只是少了一个方便的出图工程数据本身还在缺了shpmxd就成了一堆失效的路径引用。因为存的是路径mxd对文件位置非常敏感。把整个文件夹从压缩包里解压到桌面没问题但把shp单独挪到另一个目录再打开mxd所有图层都会变成红色感叹号。检查数据源是否失效也可以用Pythonimport arcpy mxd_path rD:\gisdata\solar_2007_2022.mxd mxd arcpy.mapping.MapDocument(mxd_path) for lyr in arcpy.mapping.ListLayers(mxd): if lyr.supports(DATASOURCE): print(lyr.name, →, lyr.dataSource) mxd.save()lyr.supports(DATASOURCE)用来判断该图层是否绑定了数据源避免对图例、整饰文本这类无数据对象误操作lyr.dataSource会打印shp的绝对路径。如果打印出来的路径和你当前解压目录不一致那就是需要修复的对象具体方法在第4章。2.4 中国地图shp和南海诸岛shp为什么是两套文件而不是一个很多用户拿到压缩包后疑惑中国地图shp和南海诸岛shp为什么要分开这不是数据冗余而是制图规范。全幅中国地图采用“南海诸岛附图”布局时主图通常不包含南海诸岛范围南海诸岛作为独立图层放在图幅右下角的小比例尺附图中。mxd里一般会同时建两个数据框主数据框用中国地图shp附图数据框用南海诸岛shp出图时两个数据框叠加输出。九段线和南海诸岛作为中国地图的标准要素一张规范的中国全图必须在主图或附图中完整呈现。如果你的用途是数据叠加分析比如统计某个省份内的光伏站数用中国地图shp做主底图就够凡是出专题图、论文插图或汇报材料里的图南海诸岛shp不能丢。实际操作中保持这两个shp在同一个文件夹下mxd里两个数据框的相对位置不要乱拖出图时才不会出现附图跑位或比例不对的问题。3. 六个时间切片怎么管理字段筛选、分组汇总与扩张率计算太阳能面板的逐期分布时间维度是这套数据的灵魂。2007到2022年跨了15年数据结构上可能按时期拆成多个图层也可能做成一个带时期字段的统一图层。无论哪种设计落到分析上无非是字段筛选和分组统计的问题。3.1 一个图层还是六个图层字段设计决定工作流常见的数据组织方式有两种一是拆成六个独立shp文件名带时期二是合并成一个shp属性表里加一个时期字段。两者的差别在于独立shp用于分时期出图简单但做跨期对比时先得合并带时期字段的统一shp适合时序分析但要确认时期字段究竟是数值型还是文本型。标题里的“六个时期”暗示大概率是分时期的但你拿到手未必是已经合并好的。如果你手里的数据是六个独立shp建议先用merge工具合并并新建时期字段。比如在ArcGIS里用Merge对话框把六个图层合二为一然后对每条要素按来源文件名写入时期编号。合并的本质是字段映射需要注意六个图层的字段名完全一致否则合并后会出现大量空值。我一般会在合并前用一个空shp先检查schema确认字段名统一后再跑。合并后用Python复核import geopandas as gpd # 读取六个分期的shp,统一添加时期字段后合并 import glob files sorted(glob.glob(solar_2007_2022/*.shp)) frames [] for f in files: temp gpd.read_file(f, encodingutf-8) period f.split(_)[-1].replace(.shp, ) # 从文件名提取时期 temp[PERIOD] period frames.append(temp) merged gpd.concat(frames, ignore_indexTrue) merged[PERIOD_INT] merged[PERIOD].astype(int) # 文本转数值,排序才正确 print(merged.groupby(PERIOD_INT).size())这段代码里sorted保证按文件名顺序读取split(_)[-1]从类似“solar_panels_2013.shp”里取出“2013”作为时期值astype(int)把文本转成数值这样后续groupby排序才是2007、2010、2013这样的自然顺序而不是2007、2010、2016、2019、2013的字典序。转数值这一步是时空分析里最常见的低级错误来源很多人拿着文本型时期字段做趋势图结果横轴乱序图是错的。3.2 用SQL或ArcGIS查询筛选指定时期如果不想合并直接在ArcMap中使用Select By Attributes按时期字段筛选也很快。对于文本型时期字段查询语句要加引号数值型则不用SELECT PERIOD, COUNT(*) AS 站点数, SUM(CAPACITY_MW) AS 总装机MW FROM solar_panels WHERE PERIOD IN (2007-2009, 2010-2012) GROUP BY PERIOD这条SQL表达的是按时期分组统计站点数和总装机。注意CAPACITY_MW如果属性表里不存在就不要硬引用改成按几何面积估算或者只统计站点数因为面状shp的占地范围字段不一定叫这个名字。文本字段加引号数值字段不加引号这个细节在Select By Attributes对话框里最容易卡住新手。如果筛选结果为空先检查字段名里有没有隐藏前缀或空格拿到属性表里复制字段名再粘贴进查询语句是最稳的方式。3.3 分组统计与扩张率从点位密度到区域聚集度有了统一的时期字段核心分析就能跑了。最基础的是每期站点数、装机容量的汇总再进一步是相邻期扩张率。用Python可以一次完成# 按时期分组统计,并计算相邻时期增长率 import geopandas as gpd gdf gpd.read_file(solar_merged.shp, encodingutf-8) gdf[PERIOD_INT] gdf[PERIOD].astype(int) stats gdf.groupby(PERIOD_INT).agg( 站点数(NAME, count), 总装机MW(CAPACITY_MW, sum) ) stats[扩张率] stats[站点数].pct_change().fillna(0).round(3) print(stats)pct_change()算的是相邻两期的百分比变化第一期没有前值所以用fillna(0)补齐round(3)限制小数位。如果装机字段不存在可以把“总装机MW”这一行去掉或替换成“总占地面积”字段。扩张率大于1说明本期比上期增加了一倍以上小于0说明站点减少或数据口径调整这类数值用于描述光伏从西北向中东部蔓延的过程非常直观。如果你要做更细的空间聚集度分析可以用渔网分割ArcGIS的Create Fishnet生成网格再Spatial Join统计网格内的站点数替代核密度估计以避开带宽参数争议。3.4 叠加流域边界或省级边界时的坐标系要求做区域分析时经常要把太阳能面板和流域边界或省级行政区叠加。比如研究分布式光伏是否集中在淮河流域或南盘江流域附近就需要把太阳能面板shp与对应的流域边界shp做空间连接。不管用Spatial Join还是Intersect两个图层的坐标系必须一致否则统计结果会因为空间偏移产生系统性误差。常见的做法是在融合前把太阳能面板shp投影到与流域边界相同的投影坐标系。全国尺度的分析用Albers等积投影省级或流域尺度用当地的GK或UTM带。坐标系不一致时的叠加ArcMap的实时投影虽然能显示但空间连接工具的容差计算会有问题结果里时常出现点落到多边形边界外几百米的情况。这个坑我在处理塔里木河流域光伏项目时踩过后来养成了每次叠加前先arcpy.Describe检查两个图层的sr属性是否一致的习惯。4. mxd工程文件跑不起来数据源修复、批处理出图与图面整饰很多人拿到这份数据第一动作就是双击mxd。但ArcMap打开后所有图层都带红色感叹号甚至提示“数据源未找到”。这一章专门解决这一类问题。4.1 红色感叹号与数据源失效mxd路径问题的根因mxd记录的数据源是绝对路径比如E:\原始数据\光伏分布\solar_panels.shp。当你把压缩包解压到D:\gisdata\或把文件夹拷到另一台电脑路径就失效了。ArcMap打开时会尝试从原路径读取失败后显示感叹号这就是mxd里红叹号的来源。记住一点mxd里所有图层的路径都是在数据打包时的那台电脑上写入的你这边路径稍有不同就会掉链接。修复的常规路径有两种。如果只是盘符或顶层目录变了可以在File → Map Document Properties里设置文件夹路径让ArcMap按新路径查找如果路径变动复杂就逐图层右键Set Data Source。手动操作在图层多时效率太低我一般用arcpy批量处理把原路径的旧前缀替换为新前缀。4.2 用arcpy批量修复数据源路径批量修复前先确认所有shp都放在同一个新目录下并且文件名未变。脚本如下import arcpy, os mxd_path rD:\gisdata\solar_2007_2022.mxd mxd arcpy.mapping.MapDocument(mxd_path) for lyr in arcpy.mapping.ListLayers(mxd): if lyr.supports(DATASOURCE): old_path lyr.dataSource # 把旧目录前缀替换成新目录前缀 new_path old_path.replace(rE:\原始数据\光伏分布, rD:\gisdata) if os.path.exists(new_path): # 只替换真实存在的路径 lyr.replaceDataSource(new_path, SHAPEFILE, lyr.datasetName, False) print(已修复:, lyr.name, →, new_path) else: print(仍不存在:, new_path) mxd.save() print(修复完并保存)lyr.replaceDataSource的参数里SHAPEFILE是数据源类型lyr.datasetName是旧的shp名称不带扩展名最后一个False表示不保留旧数据源连接设为True会留下旧连接。判断os.path.exists是防止把没找到的文件也替换掉。这个脚本跑完后mxd里的图层应该全部恢复图面布局和符号化设置也一并继承下来。脚本里要注意mxd.save()不执行的话下次打开仍然红叹号如果不想覆盖原工程先复制一份mxd再跑脚本。4.3 批量出图按六个时期导出PNG或PDF数据源修复之后常规流程就是出图。mxd的布局已经排好数据框、比例尺、图例和南海诸岛附图批量出图时用arcpy逐个时期导出只需要在代码里切换图层的定义查询。import arcpy, os mxd arcpy.mapping.MapDocument(rD:\gisdata\solar_2007_2022.mxd) out_dir rD:\gisdata\专题图 os.makedirs(out_dir, exist_okTrue) periods [2007, 2010, 2013, 2016, 2019, 2022] for p in periods: for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name 太阳能面板: lyr.definitionQuery fPERIOD_INT {p} arcpy.mapping.ExportToPNG(mxd, os.path.join(out_dir, f光伏分布_{p}.png), resolution150) print(已导出, p)definitionQuery是图层的定义查询这里给“太阳能面板”图层的时期字段加过滤每期导出前切换一次ExportToPNG里的resolution150控制输出清晰度150dpi一般够论文插图如果做大幅面打印可以调到300但文件体积会明显变大。arcpy.mapping是ArcMap版本的APIArcGIS Pro里对应的模块改成了arcpy.mp方法名也有差异例如ListLayers在Pro里是遍历map.listLayers()。如果你的环境是Pro把arcpy.mapping.MapDocument换成arcpy.mp.ArcGISProject导出方法按Pro文档调整逻辑相同。环境选型上这个标题对应的历史mxd工程在ArcMap 10.x里兼容最好Pro能打开但符号化渲染可能有细微差异。4.4 出图前图面检查比例尺、图例与南海诸岛附图的联动mxd修好、批量导出前还有几个整饰点容易忽略。比例尺要确认和主数据框的投影单位一致如果主图是CGCS2000投影坐标系比例尺单位要设成米而不是经纬度的度。图例要勾选“只显示当前范围内可见的要素”否则六个时期的图例符号完全一样会让看图的人误以为数据没切换。南海诸岛附图的处理我在2.4提过这里补充一点主图数据框范围如果随时期变化比如某期站点只集中在东部视图自动缩放到要素范围要用属性 → 数据框 → 范围指示器把附图范围锁定到全幅中国而不是跟随主图缩放。附图的南海诸岛shp同时保持独立不设定义查询别被过滤掉。出图前跑一遍arcpy.mapping.ListLayoutElements检查图例是否完整算最后一道保险。5. 避坑清单5个数据能用却用不好的典型现场这一章集中记录处理同类shp数据包时反复踩过的坑按“现象 → 原因 → 解决”写每一条都可以对着自己的数据直接排查。5.1 mxd打开就报错所有图层红叹号现象双击mxd后内容列表里的shp图层全部显示红色感叹号双击图层打开属性表为空或提示“Data source not found”。原因mxd记录的是绝对路径压缩包解压到新目录或换了电脑后原路径不存在。ArcMap不会自动搜索新位置所有数据源失效。解决先用File → Map Document Properties查看数据源路径变化再用4.2的arcpy脚本批量替换路径前缀。脚本执行前先确认新路径下shp文件都存在替换后必须mxd.save()保存否则关掉重开又回到红叹号状态。如果只有一两个图层掉链接直接在内容列表里右键图层 → Data → Set Data Source手动指回更快不必为小工程写脚本。5.2 太阳能面板和底图叠加后位置偏移几十米现象把太阳能面板shp和中国地图shp都拉进同一数据框看起来能叠上但放大到乡镇尺度后电站点位和底图上的行政边界或地形有明显偏移部分点落在山体或河道附近。原因两个shp的坐标系不一致。常见的是太阳能面板用WGS84底图用CGCS2000或一个带投影一个没带。ArcMap的实时投影能显示但精度有限叠加分析工具的容差也受影响。解决右键太阳能面板图层 → Data → Export Data输出坐标设置为与底图相同的坐标系或在工具箱里用Project显式转换。转换前先记录原坐标系Project工具需要填写输入和输出坐标系地理坐标转换参数在CGCS2000和WGS84之间通常选Coordinate Frame或Position Vector这类模型参数值可以查EPSG数据库。注意不要在没弄清原坐标前反复投影来回转两次之后误差会叠加。5.3 属性表里的中文全是乱码或问号现象用Excel直接打开.dbf站点名称、地区名字段全部乱码在ArcGIS属性表里显示正常用Python读出来却乱码或者反过来。原因.dbf的字符编码由.cpg文件声明常见的有UTF-8和GBK。Excel默认按本地编码打开UTF-8的dbf在中文Windows下会乱码Python的geopandas.read_file不指定encoding时默认UTF-8遇到GBK就会读错。解决先用文本编辑器打开.cpg看编码声明再在geopandas.read_file里显式指定encodinggbk或encodingutf-8逐个试一次就能对上。如果只是要导出给Excel用户可以先用Python读成DataFrame再to_excel输出xlsx绕开dbf编码问题。关键是不要靠“看起来正常”判断要看.cpg的真实声明。如果.cpg不存在用chardet检测.dbf字节流的编码比盲猜靠谱。5.4 出图后图幅里没有南海诸岛或附图位置漂移现象mxd主数据框里没有南海诸岛出图后图幅右下角也没有小图另一情况是附图里的南海诸岛显示成一小团比例和主图明显不匹配。原因南海诸岛在mxd里是独立数据框主图数据框的“范围指示器”没有定义或者数据框顺序被拖乱导致附图被遮挡或隐藏。数据打包者的本意是让你在出图时保持附图但mxd版本或布局模板变化时容易丢。解决在内容列表里找到两个数据框右键主数据框 → Properties → Map Frame → Extent Indicator把南海诸岛数据框加进去并设置线框颜色然后确认南海诸岛数据框在布局视图里没有被主图覆盖右键数据框 → 属性 → Size and Position设置固定位置。如果只是做数值分析不需要出图直接把南海诸岛shp加载进主数据框也可以但出图规范建议保留附图设计。5.5 时期字段排序错乱2007、2010、2016、2019、2013现象图表里时期轴顺序乱分组统计出来的顺序不是时间顺序比如2013排到2019后面。原因时期字段是文本型文本排序按字典序2013会被排在2019后面而不是按数值时间顺序。很多人用Excel直接排序或者用Python的mean算年份平均值算出来也会偏低或偏高因为文本不是数值。解决在3.1的代码里加一行merged[PERIOD_INT] merged[PERIOD].astype(int)。如果是Arcgis属性表用添加字段新建一个短整型字段字段计算器里把文本转成数值。注意文本为“2007-2009”这种范围值时不能直接转需要先Split出起始年份再转数值。ArcGIS字段计算器里可以用Left([PERIOD], 4)提取前四位再转整型。排序问题解决之后再做分组统计和图表顺序才对。6. 进阶用法转GeoJSON上Web、转KML交付、验证转换结果数据包里的shp是标准格式但现实工作里它往往不是终点——做汇报要一张能缩放的在线地图外业核查要KML别人开发的系统只要GeoJSON。这一章收在几个具体技巧上。6.1 shp转GeoJSONWeb地图发布前必做的一步Web地图MapLibre、Leaflet、Cesium普遍支持GeoJSON转换前必须做两件事坐标系转成WGS84经纬度字段编码处理干净。用Python一行完成import geopandas as gpd gdf gpd.read_file(solar_merged.shp, encodingutf-8) gdf gdf.to_crs(epsg4326) # Web地图统一用WGS84经纬度 gdf.to_file(solar_web.geojson, driverGeoJSON, encodingutf-8)to_crs(epsg4326)把投影坐标系或CGCS2000转成WGS84经纬度driverGeoJSON指定输出格式。这里要注意转完坐标后原来的面积、周长等数值字段如果是从投影坐标系计算的会失真发布Web图层前要么删掉这些字段要么标注单位说明。标题里的shp转3dtiles属于进阶玩法先转GeoJSON再在Cesium里通过工具处理即可但是这一步对机器性能和网络要求高小范围试点比全量推更省事。6.2 shp转KML交付给非GIS人员的常用格式外业核查或给领导汇报KML是通用性最好的格式之一因为Google Earth无需安装专业软件。ArcGIS的Layer to KML工具能把shp转成带符号化的KML先把shp加到ArcMap设置好符号化再在工具里选择图层输出。不想要符号化直接转也行但KML里的站点会变成默认图钉。用Python转KML也可以geopandas.to_file指定driver为KML前提是安装fiona时带有libkml支持否则会报错。我一般优先用ArcGIS的Layer to KML因为符号化保留得好出来的KML里能直接分辨站点大小或时期颜色。反过来别人发来的KML要转回shp做分析用KML转图层工具它会自动生成点、线和面三个图层线面图层为空是正常的不要误删。6.3 快速验证转换结果没丢要素从shp转GeoJSON或KML后最怕的是要素数量对不上或属性字段丢失。每次转换后我都会跑一遍复核import geopandas as gpd # 读回原始shp和转换结果,比较要素数和字段数 src gpd.read_file(solar_merged.shp, encodingutf-8) dst gpd.read_file(solar_web.geojson) assert len(src) len(dst), 要素数不一致! assert set(src.columns) set(dst.columns), 字段缺失! print(校验通过,原始, len(src), 条,转换后, len(dst), 条)len(src)和len(dst)做要素数比对set(src.columns) set(dst.columns)做字段集合比对两者不满足时直接报错。字段顺序不同不算错关键是集合相等如果转换后新增了系统字段用difference()输出差异字段名逐个判断是否可忽略。这一条是处理任何格式转换后的固定动作防止交付后对方打开发现数据少了再回头查。KML转shp后同样跑一遍因为KML不需要坐标定义读回来时坐标系可能变成未知复检时还要补一步gdf.set_crs(epsg4326)。6.4 一个值得投入的方向把六期数据变成可交互的时空图如果手头有前端能力这套数据的价值远不止静态图。用MapLibre GL配合GeoJSON把时期字段作为filter条件做一个滑杆切换2007到2022年站点分布能直观看到中国光伏从西北向中东部蔓延的路径。底图用栅格瓦片站点用圆圈大小映射装机容量年份滑杆用setFilter实时切换。国内服务器部署时底图要合规用审图号齐全的在线底图不要擅自修改或遮挡审图信息。这一套做下来比静态图的说服力强很多。我现在处理任何成套shp数据包第一步永远是体检第二步才是分析。坐标系、编码、数据源路径这三项先过一遍后面省掉的是大把返工时间。希望帮到你。本文还有配套的精品资源点击获取