新闻详情

新闻详情

首页 / 资讯中心 / 详情

全国33省228189个矿产地坐标数据:从CSV清洗到PostGIS空间分析全流程

发布时间:2026/9/26 2:08:38来源:尧图网络
全国33省228189个矿产地坐标数据:从CSV清洗到PostGIS空间分析全流程
1. 这份矿产地数据到底能拿来做什么第一次拿到“全国33个省228189个矿产地位置分布数据”这个标题的时候我脑子里第一反应不是“数据挺大”而是“这玩意儿终于有人整理成带经纬度坐标的CSV了”。做过地质、测绘、GIS或者资源规划相关项目的人都知道矿产地位置数据这东西散落在各种年报、地质志、内部台账里格式五花八门有的只有地名有的只有矿区编号想凑出一份能直接扔进地图里跑的坐标表往往要花掉好几天甚至好几周。这份数据的核心价值就三个字能直接用。228189条记录覆盖全国33个省级行政区每条都带经纬度坐标格式是CSV。这意味着你不需要再去翻PDF、抠表格、手动补坐标拿到手就能导入QGIS、ArcGIS、PostGIS或者用Python的pandas直接读。它解决的是“从零散资料到可计算空间数据”这一步的脏活累活。适合谁用我大致分了几类做矿产资源规划的需要看某个成矿带里矿产地密度做地质科研的要统计特定矿种的空间分布规律做GIS开发的想拿真实点位数据测试地图渲染性能还有做数据分析教学的228189条带坐标的记录拿来练空间聚类、热力图、坐标转换都够用。哪怕你只是好奇“我家附近到底有多少个矿产地”这份数据也能让你查个明白。但我要先把丑话说在前面数据量大不等于质量一定完美。228189条记录里坐标精度、坐标系类型、矿种分类口径、省份边界归属这些细节如果你不提前搞清楚后面做空间分析的时候坑一个接一个。下面我就按自己实际处理这类数据的经验把这份CSV从“拿到手”到“跑出结果”的完整链路拆开讲。2. 数据拿到手先别急着导入先搞清这四件事2.1 坐标系到底是哪种别把WGS84和CGCS2000混着用这是最容易翻车的地方。矿产地数据的经纬度坐标来源不同坐标系可能完全不一样。国内常见的就三种WGS84GPS原始坐标、CGCS2000国家大地坐标系和WGS84在多数应用里差异很小但不等同、西安80或北京54老资料里常见。如果你拿到的CSV没有明确标注坐标系直接扔进地图里和底图叠加可能会出现几十米到几百米的偏移。我实测过一个案例某批矿产地数据用的是西安80坐标系直接当WGS84用在东部地区偏移大概在50到80米到了西部能到100米以上。对于大比例尺成图或者矿区边界分析这个误差是不能接受的。怎么判断先看数据来源说明如果没有就看坐标数值特征。一个粗略的办法取几个已知地标附近的矿产地比如某个县城附近的矿区把坐标打到天地图或高德底图上看落点是否吻合。如果整体偏移方向一致大概率是坐标系不匹配。处理办法是用七参数或四参数转换工具可以用Python的pyproj或者QGIS里的“坐标转换”功能。提示如果这份数据是要和手机信令、行政区划边界做叠加分析坐标系必须统一到同一基准否则后续所有空间统计都是错的。2.2 经纬度是度分秒还是十进制CSV里藏着的格式陷阱CSV看着干净但打开之后你会发现经纬度列可能是116°2345这种度分秒格式也可能是116.395833这种十进制。更麻烦的是有些数据混着来一部分是十进制一部分是度分秒甚至还有用空格分隔的116 23 45。我处理过一份类似数据228189条里大概有3000多条是度分秒格式直接pandas读进来是字符串做不了计算。解决办法是用正则表达式批量识别并转换。Python里可以这样写import re import pandas as pd def dms_to_decimal(dms_str): # 匹配 116°2345 或 116 23 45 或 116°2345.6 pattern r(\d)[°\s](\d)[\\s]([\d.])[\s]* match re.match(pattern, str(dms_str).strip()) if match: d, m, s match.groups() return float(d) float(m)/60 float(s)/3600 return None df pd.read_csv(mineral_locations.csv, dtypestr) df[经度_十进制] df[经度].apply(dms_to_decimal) df[纬度_十进制] df[纬度].apply(dms_to_decimal)转换完之后一定要做范围校验中国境内经度大致在73到135之间纬度在3到54之间。超出这个范围的记录要么是坐标写错了要么是格式解析错了得单独拎出来人工核对。2.3 228189条记录里重复和空值怎么处理数据量大重复记录几乎不可避免。我一般会先按“矿产地名称经纬度”做去重因为同一个矿产地可能在不同年份的台账里出现多次。但要注意有些矿产地名称相同但实际是不同矿区比如“XX铁矿”可能有一号矿区和二号矿区坐标不同这种不能简单去重。空值方面重点看经纬度列。如果经纬度缺失这条记录在空间分析里就是废的但它的属性信息矿种、规模、省份可能还有统计价值。我的做法是分两张表一张是带坐标的空间表用于地图和空间统计一张是全量属性表用于非空间维度的汇总。# 去重示例 df_unique df.drop_duplicates(subset[矿产地名称, 经度, 纬度], keepfirst) # 分离有坐标和无坐标 df_with_coord df_unique.dropna(subset[经度, 纬度]) df_no_coord df_unique[df_unique[经度].isna() | df_unique[纬度].isna()]注意去重前先备份原始文件。我踩过的坑是去重之后发现某些重复记录其实是不同年份的更新属性字段有差异结果把最新信息给删了。2.4 省份字段和实际坐标对不上怎么办33个省级行政区听起来覆盖很全但实际数据里可能会出现“省份”字段写的是A省坐标落点却在B省的情况。这通常是因为矿区边界跨省或者数据录入时归属搞错了。处理办法是用空间叠加分析把矿产地坐标和行政区划边界做一次空间连接自动校正省份归属。QGIS里可以用“按位置连接属性”工具PostGIS里可以用ST_Contains。如果发现大量不匹配那可能是坐标系问题先回到2.1步检查坐标系。3. 从CSV到空间数据库的完整实操流程3.1 用pandas做第一轮清洗和格式统一拿到CSV之后我习惯先用pandas做一轮快速体检。不是直接导入数据库而是先看清楚数据长什么样。import pandas as pd df pd.read_csv(全国矿产地.csv, encodingutf-8) print(df.shape) # 看行数和列数 print(df.columns.tolist()) # 看列名 print(df.head(10)) # 看前10行 print(df.dtypes) # 看每列数据类型 print(df.isnull().sum()) # 看每列空值数量这一步的重点是确认列名。不同来源的CSV列名可能是“经度”“纬度”“Longitude”“Latitude”“X”“Y”甚至中文拼音。统一列名之后后续处理会顺很多。# 统一列名 df df.rename(columns{ Longitude: 经度, Latitude: 纬度, X: 经度, Y: 纬度, 矿种: 矿产种类, 省份: 所属省份 })然后做坐标范围过滤把明显错误的记录标记出来# 标记异常坐标 df[坐标异常] ~df[经度].between(73, 135) | ~df[纬度].between(3, 54) print(df[df[坐标异常]].shape)异常记录不要直接删先导出到单独文件人工看一眼。有些可能是海外矿产地有些可能是录入错误。3.2 导入PostGIS做空间索引和查询CSV适合存储和交换但要做空间分析还是得进空间数据库。PostGIS是我用得最多的导入流程也不复杂。首先在PostgreSQL里建表CREATE TABLE mineral_locations ( id SERIAL PRIMARY KEY, name VARCHAR(255), mineral_type VARCHAR(100), province VARCHAR(50), longitude DOUBLE PRECISION, latitude DOUBLE PRECISION, geom GEOMETRY(Point, 4326) );然后用COPY命令导入CSVCOPY mineral_locations(name, mineral_type, province, longitude, latitude) FROM /path/to/mineral_locations.csv DELIMITER , CSV HEADER;导入之后把经纬度转成空间几何字段UPDATE mineral_locations SET geom ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);建空间索引CREATE INDEX idx_mineral_geom ON mineral_locations USING GIST(geom);这一步做完你就可以用空间SQL做各种查询了。比如查某个省范围内所有铁矿SELECT name, longitude, latitude FROM mineral_locations WHERE mineral_type LIKE %铁% AND province 山西省;或者查某个点周围50公里内的所有矿产地SELECT name, mineral_type, ST_Distance(geom::geography, ST_SetSRID(ST_MakePoint(112.5, 37.8), 4326)::geography) / 1000 AS distance_km FROM mineral_locations WHERE ST_DWithin(geom::geography, ST_SetSRID(ST_MakePoint(112.5, 37.8), 4326)::geography, 50000) ORDER BY distance_km;提示ST_DWithin用geography类型计算的是米用geometry类型计算的是度。做距离查询一定要用geography否则结果差得离谱。3.3 用QGIS做可视化快速验证数据库建好之后我一般会先用QGIS连上PostGIS把点图层拖进来看一眼。这一步不是为了出图而是为了验证数据质量。在QGIS里加载PostGIS图层然后叠加天地图或OSM底图。如果点都落在合理位置说明坐标系没问题。如果整体偏移那就回到坐标系转换那一步。QGIS里还可以做快速热力图图层属性里把渲染方式改成“热力图”半径设成10到20像素你就能一眼看出哪些区域矿产地密集。我实测下来这份数据在华北、华东、西南几个成矿带的聚集特征非常明显和已知的地质构造带吻合度很高。如果要做更正式的地图可以用QGIS的“打印布局”功能加上图例、比例尺、指北针导出成PDF或PNG。228189个点直接渲染可能会卡建议先按省份或矿种做筛选或者用聚类渲染。3.4 用Python做空间统计和聚类分析QGIS适合可视化但批量统计和聚类还是Python方便。我常用geopandas和scikit-learn。import geopandas as gpd from sklearn.cluster import DBSCAN import numpy as np # 读取带坐标的数据 gdf gpd.GeoDataFrame( df_with_coord, geometrygpd.points_from_xy(df_with_coord[经度], df_with_coord[纬度]), crsEPSG:4326 ) # 转成投影坐标系再做聚类单位是米 gdf_proj gdf.to_crs(EPSG:3857) # DBSCAN聚类eps是邻域半径min_samples是最小点数 coords np.array(list(zip(gdf_proj.geometry.x, gdf_proj.geometry.y))) clustering DBSCAN(eps10000, min_samples5).fit(coords) gdf[cluster] clustering.labels_ # 统计每个聚类的矿产地数量 cluster_stats gdf[gdf[cluster] ! -1].groupby(cluster).size().sort_values(ascendingFalse) print(cluster_stats.head(20))这段代码能帮你找出矿产地密集区。eps10000表示10公里半径min_samples5表示至少5个点才算一个聚类。你可以根据实际需求调整这两个参数。我试过用5公里半径结果聚类数量太多后来改成10公里效果比较合理。4. 坐标转换和格式互转的实战细节4.1 经纬度转XY坐标别直接用公式硬算很多人问“经纬度怎么转XY坐标”网上能搜到一堆公式但直接套公式很容易出错。因为经纬度转平面坐标核心是投影不同投影方式结果完全不同。国内常用的投影有高斯-克吕格投影分3度带和6度带和UTM投影。如果你只是想在本地做距离计算用pyproj做投影转换最稳妥from pyproj import Transformer # WGS84转高斯-克吕格3度带中央经线117度 transformer Transformer.from_crs(EPSG:4326, EPSG:4547, always_xyTrue) x, y transformer.transform(116.395833, 39.904167) print(x, y)EPSG:4547是CGCS2000的3度带投影中央经线117度适合北京、天津、河北一带。如果你要处理全国数据建议按省份分带转换或者直接用Web MercatorEPSG:3857做统一投影虽然面积变形大但做可视化足够。注意不要用简单的x 经度 * 111000这种近似公式。在低纬度地区误差还能接受到了高纬度地区经度方向的实际距离会明显缩小误差可能超过20%。4.2 CSV和其他格式的互转哪些坑要避开CSV转Excel很简单pandas一行代码df.to_excel(矿产地.xlsx, indexFalse)但Excel有行数限制1048576行228189条没问题。不过Excel打开大CSV会卡建议用openpyxl或xlsxwriter写入。CSV转Shapefile要注意字段名长度限制。Shapefile的字段名最多10个字符中文列名可能被截断或乱码。我一般先把列名改成英文短名转完再在QGIS里改回来。gdf gpd.GeoDataFrame(df, geometrygpd.points_from_xy(df[经度], df[纬度])) gdf.to_file(mineral_locations.shp, encodingutf-8)CSV转GeoJSON更推荐没有字段名限制而且文本格式方便查看gdf.to_file(mineral_locations.geojson, driverGeoJSON)多个CSV合并也很常见。如果你手上有分省的矿产地CSV可以用import glob files glob.glob(省份数据/*.csv) df_list [pd.read_csv(f, encodingutf-8) for f in files] df_all pd.concat(df_list, ignore_indexTrue) df_all.to_csv(全国矿产地合并.csv, indexFalse, encodingutf-8-sig)encodingutf-8-sig是为了让Excel打开时不乱码这个细节很多人会忽略。4.3 用PostgreSQL做CSV导入和SQL过滤除了PostGIS普通PostgreSQL也能处理CSV。导入语句前面已经写过这里补充一个过滤技巧如果你只想导入某个省的矿产地可以先用pandas过滤再导出CSV或者用COPY的WHERE条件需要先导入临时表。-- 创建临时表 CREATE TEMP TABLE temp_mineral (LIKE mineral_locations); -- 导入全部数据 COPY temp_mineral(name, mineral_type, province, longitude, latitude) FROM /path/to/mineral_locations.csv CSV HEADER; -- 只插入山西省的数据 INSERT INTO mineral_locations(name, mineral_type, province, longitude, latitude) SELECT name, mineral_type, province, longitude, latitude FROM temp_mineral WHERE province 山西省;SQL过滤的好处是可以做复杂条件组合比如“山西省的铁矿且规模为大型”SELECT * FROM mineral_locations WHERE province 山西省 AND mineral_type LIKE %铁% AND scale 大型;4.4 用Postman批量调用接口时怎么用CSV做参数这个场景偏开发测试。如果你有一个矿产地查询接口想用CSV里的经纬度批量调用Postman的Collection Runner支持CSV数据文件。准备一个CSV列名对应请求里的变量longitude,latitude,radius 116.395833,39.904167,50000 112.548879,37.870590,30000在Postman请求里用{{longitude}}、{{latitude}}、{{radius}}引用变量然后在Collection Runner里选择这个CSV文件设置迭代次数就能批量跑。注意CSV的编码要是UTF-8否则中文参数会乱码。5. 常见问题排查与避坑经验实录5.1 坐标偏移、乱码、导入失败一张表对照排查问题现象可能原因排查方法解决办法点整体偏移坐标系不匹配叠加底图看偏移方向用pyproj或QGIS做坐标转换经纬度是字符串度分秒格式看列数据类型正则表达式批量转换导入后中文乱码编码不是UTF-8用记事本看编码转成UTF-8-sig再导入部分点落在境外坐标录入错误范围过滤单独导出人工核对PostGIS导入报错字段类型不匹配看错误信息先建临时表全用文本类型QGIS渲染卡顿点数太多看图层加载时间按省筛选或做聚类渲染距离计算结果离谱用了geometry而非geography检查SQL改用geography类型CSV合并后列错位列名不一致对比各文件列名统一列名后再concat这张表是我处理这类数据时最常遇到的八种情况基本上覆盖了90%的问题。剩下的10%通常是数据源本身的特殊问题比如某些矿区坐标是矿区中心点有些是边界点这种只能看数据说明或者联系数据提供方。5.2 大数据量下的性能优化技巧228189条记录在现在的硬件条件下不算特别大但如果你要做复杂的空间连接或者聚类分析还是要注意性能。第一建空间索引。PostGIS的GIST索引能让空间查询快几十倍。QGIS里加载PostGIS图层时如果没索引缩放和平移会非常卡。第二用投影坐标系做距离计算。前面说过geography类型计算距离虽然准但比geometry慢。如果数据范围不大可以先投影到本地坐标系再用geometry计算。第三分块处理。如果内存不够可以用pandas的chunksize参数分块读取chunk_list [] for chunk in pd.read_csv(mineral_locations.csv, chunksize50000): # 对每个chunk做处理 chunk_list.append(chunk) df pd.concat(chunk_list, ignore_indexTrue)第四用Dask或PySpark。如果数据量再大一个数量级pandas就吃力了。Dask的API和pandas很像可以无缝切换。5.3 数据安全与备份别等丢了才后悔228189条记录清洗和转换可能要花好几个小时。我踩过的坑是做坐标转换的时候直接覆盖了原始列结果转换参数设错了原始数据也没了只能重新下载。我的习惯是原始CSV只读所有处理结果另存新文件。命名规则用原始文件名_处理步骤_日期.csv比如全国矿产地_去重_20231015.csv。这样即使中间步骤出错也能快速回滚。如果数据要分享给别人注意脱敏。矿产地数据本身不涉及个人隐私但有些属性字段可能包含企业内部信息比如开采企业名称、联系方式。分享前把这些列删掉或者替换成编号。提示CSV文件本身没有加密功能。如果确实需要加密可以打包成带密码的压缩包或者用Python的cryptography库做AES加密。但一般情况下矿产地位置数据不需要这么处理。5.4 几个让我印象深刻的实操案例案例一某次做成矿带分析发现某省矿产地数量异常少。排查后发现该省数据用的是北京54坐标系而其他省是WGS84。统一坐标系后数量恢复正常。这个坑让我养成了“先验坐标系再干活”的习惯。案例二用DBSCAN聚类时eps参数设成5000米结果聚出来几百个类太碎。后来改成15000米聚出30多个类和已知成矿带对应得很好。参数调整没有固定公式得多试几次结合地质背景判断。案例三把CSV导入PostGIS时因为经度列里有几条记录是空字符串导致COPY命令报错。解决办法是在pandas里先把空字符串转成NaN再导出CSV或者用NULL 参数指定空值表示。6. 这份数据还能怎么扩展用6.1 结合手机信令数据做矿区人口活动分析热词里提到“2023年全国区县级手机信令数据csv”这个和矿产地数据结合能做一些有意思的分析。比如把矿产地坐标和手机信令的基站位置做空间连接估算矿区周边的人口活动强度。当然手机信令数据涉及隐私使用前必须确保合规这里只是从技术可行性上讨论。技术上可以用PostGIS做空间连接SELECT m.name, m.mineral_type, COUNT(s.id) AS signal_count FROM mineral_locations m JOIN signal_data s ON ST_DWithin(m.geom::geography, s.geom::geography, 5000) GROUP BY m.name, m.mineral_type ORDER BY signal_count DESC;这个查询能找出5公里范围内信令记录最多的矿产地间接反映矿区活跃程度。6.2 和地震数据叠加看构造关联热词里有“近十年全球地震发震情况.csv”矿产地和地震带的空间关联是地质研究的老话题。把两份CSV都导入PostGIS做缓冲区分析SELECT m.name, m.mineral_type, COUNT(e.id) AS earthquake_count FROM mineral_locations m JOIN earthquake_data e ON ST_DWithin(m.geom::geography, e.geom::geography, 20000) WHERE e.magnitude 4.0 GROUP BY m.name, m.mineral_type ORDER BY earthquake_count DESC;这个查询能找出20公里范围内有4级以上地震的矿产地。当然关联不等于因果但作为探索性分析能帮你快速定位值得进一步研究的区域。6.3 用Hutool或C#做CSV生成和写入的参考如果你需要把处理结果生成CSV给Java或C#系统用Hutool和C#的CSV库都很成熟。Hutool的CsvWriterCsvWriter writer CsvUtil.getWriter(output.csv, CharsetUtil.CHARSET_UTF_8); writer.write(new String[]{名称, 经度, 纬度}); writer.write(new String[]{XX铁矿, 116.395833, 39.904167}); writer.close();C#用CsvHelperusing (var writer new StreamWriter(output.csv)) using (var csv new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.WriteRecords(mineralList); }注意C#写CSV时如果文件被其他程序占用会报“文件正在被另一进程使用”。解决办法是写入前检查文件锁或者用临时文件再替换。6.4 用Stata或Simulink读取CSV的注意事项Stata导入CSV用import delimited命令import delimited mineral_locations.csv, encoding(UTF-8) clear如果中文列名乱码加encoding(UTF-8)。Stata对变量名有限制中文列名会自动转成拼音或v1、v2建议导入前先把列名改成英文。Simulink读取CSV如果只是静态数据用readmatrix或readtable就行。如果是实时读取需要用From File模块或者写S-Function。注意Simulink对CSV的解析不支持中文列名而且要求数值列不能有缺失值。7. 我个人在实际操作中的几点体会这份228189条矿产地的CSV从数据量上看不算特别大但它的价值在于“带坐标”和“全国覆盖”。我处理过不少类似数据最大的感受是数据清洗的时间永远比分析的时间长。你可能花两天做坐标转换、去重、格式统一最后跑分析只花了半小时。但这半小时的结果可不可靠完全取决于前面两天的清洗质量。另一个体会是不要迷信数据的完整性。228189条记录听起来很多但实际做空间分析时你会发现某些区域点很密某些区域几乎空白。这不一定是数据缺失可能只是那些区域本来矿产地就少。做统计的时候要把“数据空白”和“真实空白”区分开。最后如果你只是想做一张全国矿产地分布图其实不需要把228189个点全部渲染出来。按省份或矿种做聚合用热力图或六边形网格图效果更好性能也更优。我试过用六边形网格做聚合每个网格统计矿产地数量出来的图既美观又能反映密度差异比直接撒点强得多。这个数据后续还可以和行政区划、交通网络、水系数据叠加做更多维度的分析。但不管怎么用坐标系统一、格式规范、备份原始数据这三条是底线。踩过几次坑之后我现在拿到任何CSV第一件事就是看编码、看列名、看坐标范围确认无误再动手。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

高级玩法揭秘:如何用Seedance2-Skill精准复刻任意运镜与创意特效 2026/9/26 2:50:09

高级玩法揭秘:如何用Seedance2-Skill精准复刻任意运镜与创意特效

高级玩法揭秘:如何用Seedance2-Skill精准复刻任意运镜与创意特效 【免费下载链接】seedance2-skill skill to create best prompts for generating videos with seedance2.0 项目地址: https://gitcode.com/gh_mirrors/se/seedance2-skill Seedance2-Skill 是…

阅读更多 →
Claude Code 完全指南:从安装到高级 Agent 工作流(2026 版)——TaoToken 统一 Key 接入与 settings.json 配置实战 2026/9/26 2:50:09

Claude Code 完全指南:从安装到高级 Agent 工作流(2026 版)——TaoToken 统一 Key 接入与 settings.json 配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
The Concise TypeScript Book:TypeScript 入门实战指南——安装、tsconfig.json 配置与渐进式迁移 2026/9/26 2:50:09

The Concise TypeScript Book:TypeScript 入门实战指南——安装、tsconfig.json 配置与渐进式迁移

文档教程 【免费下载链接】typescript-book The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. 项目地址: https://gitcode.com/gh_mirrors/typ/typescript-book 点击查看 免费下载 本文是开源项目 Th…

阅读更多 →
AI Agent Harness Engineering 性能指标体系:响应时间、准确率与吞吐量的完整测量 2026/9/26 2:50:08

AI Agent Harness Engineering 性能指标体系:响应时间、准确率与吞吐量的完整测量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
分配条件型(Distributive Conditional Types)深度解析:让 TypeScript 条件类型在联合类型上自动分发 2026/9/26 2:50:08

分配条件型(Distributive Conditional Types)深度解析:让 TypeScript 条件类型在联合类型上自动分发

文档教程 【免费下载链接】typescript-book The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. 项目地址: https://gitcode.com/gh_mirrors/typ/typescript-book 点击查看 免费下载 本文基于开源项目 …

阅读更多 →
Nebular Security 模块安装指南:从 npm 安装到 forRoot 注册 2026/9/26 2:50:02

Nebular Security 模块安装指南:从 npm 安装到 forRoot 注册

前端UI组件 【免费下载链接】nebular :boom: Customizable Angular UI Library based on Eva Design System :new_moon_with_face::sparkles:Dark Mode 项目地址: https://gitcode.com/gh_mirrors/ne/nebular 点击查看 免费下载 本文以 Nebular 组件库中的 nebular…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉