简介本资源是一套面向GIS初学者与城市数据分析研究者的伦敦交通与犯罪空间数据集适用于空间分析、城市安全研究、交通规划等教学与实践场景。压缩包共26个文件含3个.shp存储点位几何、4个.dbf记录事件属性如时间、类型、区域编码、3个.prj定义坐标系WGS84/OSGB36、4个.cpg字符编码说明以及CSV、QGIS工程文件.qgz、Excel元数据表LSOA_metadata.xlsx等完整支撑QGIS或ArcGIS平台下的可视化、叠加分析与时空统计。资源大小14.3MB结构规范覆盖2022年6月伦敦犯罪热点crime_202206系列、伦敦交通网络transport_in_London、LSOA层级社会经济指标LSOA_IMD2019及地形高程影像haringeyelevation2.img便于开展犯罪-交通关联性建模、热点探测与社区风险评估。已有318人学习下载提供即开即用的实证分析基础数据显著降低GIS入门者获取权威地理数据的门槛。1. 伦敦交通与犯罪点位数据不是“地图图片”而是可计算的空间事件坐标集很多人第一次拿到crime_202206.shp或transport_in_London.shp文件时会下意识用看图软件打开——结果是空白或报错。这不是数据损坏而是 Shapefile 本质决定的它是一组严格耦合的二进制文本文件.shp.dbf.shx必须同名共存存储的是带属性的地理坐标集合不是 PNG 或 PDF 那样的静态图像。这套伦敦数据真正价值在于每个犯罪点位都附带发生时间、犯罪类型如 BURGLARY、VANDALISM、LSOA 区域编码每条公交线路都含运营公司、线路编号、停靠站数等结构化字段。这意味着你能在 QGIS 里直接做「距地铁站500米内抢劫案数量统计」或用 Python 脚本批量计算「2022年6月各行政区犯罪密度件/km²」。它面向的是空间分析工程师、城市规划研究员和警务建模人员而非仅需示意图的汇报者。如果你的任务是生成热力图、识别高危路段、或叠加 IMD多重剥夺指数评估社会脆弱性这套数据就是起点——但前提是理解.shp不是“能拖进PPT的图”而是可编程、可聚合、可时空切片的坐标事件流。2. Shapefile 解构从.shp文件头到.dbf属性表的逐层解析2.1 Shapefile 的三文件铁三角为什么缺一不可Shapefile 是 Esri 定义的开放格式其核心由三个强制同名文件构成crime_202206.shp二进制文件存储几何对象此处为 POINT 类型包含每个犯罪点的经纬度坐标WGS84 坐标系、点符号样式索引crime_202206.dbfdBase III 表格文件存储属性数据如Crime_Type字符串、Month日期、LSOA_Code11位区域编码、Easting/NorthingOSGB36 坐标用于英国本地投影crime_202206.shx索引文件建立.shp几何记录与.dbf属性行号的快速映射缺失则 GIS 软件无法定位属性。提示压缩包中出现的.prj投影定义、.cpg字符编码声明、.qmdQGIS 元数据虽非强制但缺失.prj将导致坐标系误读——例如把 OSGB36 坐标当 WGS84 显示偏差可达百米级。验证文件完整性最简命令Linux/macOSls -l crime_202206.* # 应输出至少 3 行.shp, .shx, .dbf大小均 0 file crime_202206.dbf # 输出应含 dBase III 字样确认为合法属性表2.2 解析.dbf属性表用 Python 提取关键字段并校验逻辑直接双击.dbf会因编码问题显示乱码尤其含英国地名。推荐用dbfread库安全读取from dbfread import DBF import pandas as pd # 读取犯罪属性表指定编码避免乱码 table DBF(crime_202206.dbf, encodinglatin-1) df pd.DataFrame(iter(table)) # 查看前5行及字段类型 print(df.head()) print(df.dtypes)典型输出字段包括字段名类型含义示例值Crime_IDstr犯罪唯一标识2022060001Monthstr发生年月YYYY-MM2022-06Crime_Typestr英国国家犯罪分类Robbery,Theft from the personLSOA_Codestr2011 年划定的最小统计区编码E01000001LatitudefloatWGS84 纬度若存在51.5074LongitudefloatWGS84 经度若存在-0.1278注意部分英国官方数据使用 OSGB36 坐标Easting/Northing需通过.prj文件确认。若.prj内容为PROJCS[OSGB 1936 / British National Grid...]则必须用pyproj转换为 WGS84 才能与其他全球数据叠加from pyproj import Transformer transformer Transformer.from_crs(EPSG:27700, EPSG:4326, always_xyTrue) # OSGB36 - WGS84 lon, lat transformer.transform(df[Easting], df[Northing]) df[Longitude] lon df[Latitude] lat2.3 几何验证用shapefile库检查点位坐标有效性.shp文件中的点坐标可能因采集误差或格式转换产生异常值如经度超出 -180~180。需校验import shapefile # 读取几何文件 sf shapefile.Reader(crime_202206.shp) shapes sf.shapes() records sf.records() # 检查前10个点是否在伦敦范围内经度-0.5~0.3纬度51.2~51.7 valid_points [] for i, (shape, record) in enumerate(zip(shapes, records)): if len(shape.points) 0: print(f警告第{i1}个要素无几何坐标) continue x, y shape.points[0] # POINT 类型只有一个坐标 if -0.5 x 0.3 and 51.2 y 51.7: valid_points.append((x, y, record[0])) # 存储(经度,纬度,犯罪ID) else: print(f异常点ID {record[0]} 坐标({x:.4f},{y:.4f})超出伦敦范围) print(f有效点位数{len(valid_points)} / {len(shapes)})此步骤可筛出 GPS 采集漂移、坐标系混淆导致的离群点避免后续空间分析被污染。3. QGIS 实战加载、符号化与基础空间查询3.1 正确加载流程避免常见投影陷阱在 QGIS 3.28 中加载crime_202206.shp的标准操作启动 QGIS → Layer → Add Layer → Add Vector Layer在对话框中点击...选择crime_202206.shp自动关联同名.dbf/.shx关键步骤勾选Dont prompt for missing CRS→ 点击Specify CRS若.prj存在QGIS 自动读取如EPSG:27700若无.prj根据数据来源判断英国官方数据默认EPSG:27700OSGB36非官方坐标常为EPSG:4326WGS84点击Add图层加载后右键 →Properties → Source确认 CRS 已正确设置。提示若图层显示为一条直线或完全错位大概率是 CRS 设置错误。此时右键图层 →Set Layer CRS → 选择正确 EPSG勿用 Assign CRS那会强制扭曲坐标。3.2 符号化犯罪点位按类型分级渲染并添加标签犯罪点位需直观区分类型避免重叠遮挡图层右键 →Properties → Symbology将Symbol type设为CategorizedValue字段选Crime_Type点击ClassifyQGIS 自动生成分类如Burglary、Assault为高频犯罪如 Theft设醒目色#FF5733低频犯罪如 Arson用冷色#3357FFLabels → Placement → Point → Offset from point设置X offset: 3mm, Y offset: 3mm避免标签覆盖图标Label with字段选Crime_Type字体设为10pt Bold背景加半透明白底提升可读性3.3 空间查询实战找出地铁站500米内所有抢劫案利用伦敦交通数据transport_in_London.shp含地铁站 POI与犯罪数据叠加分析加载transport_in_London.shp确认其 CRS 与犯罪图层一致均为EPSG:27700Vector → Geoprocessing Tools → BufferInput layer:transport_in_LondonDistance:500单位为图层 CRS 单位OSGB36 下为米Dissolve result:Checked合并重叠缓冲区Vector → Research Tools → Select by LocationSelect features from:crime_202206That intersect:Buffered_transport点击RunQGIS 自动高亮选中点位右键crime_202206→Open Attribute Table→ 点击左上角Show selected features only此时表格仅显示缓冲区内抢劫案可导出为 CSV 进行统计SELECT Crime_Type, COUNT(*) FROM crime_202206 GROUP BY Crime_Type此流程直接产出「地铁站周边高发犯罪类型清单」支撑警力部署决策。4. 进阶应用用 GeoPandas 构建犯罪热点时空立方体4.1 构建时空网格将点数据聚合为 LSOA 区域统计伦敦 LSOALower Super Output Area是官方最小统计单元约1500人LSOA_IMD2019.shp提供其边界。用 GeoPandas 实现点面叠加统计import geopandas as gpd import pandas as pd # 加载犯罪点数据已转为WGS84 crime_gdf gpd.read_file(crime_202206.shp) crime_gdf crime_gdf.to_crs(epsg4326) # 统一为WGS84 # 加载LSOA边界含IMD剥夺指数 lsoa_gdf gpd.read_file(LSOA_IMD2019.shp) lsoa_gdf lsoa_gdf.to_crs(epsg4326) # 空间连接为每个犯罪点分配所属LSOA crime_with_lsoa gpd.sjoin(crime_gdf, lsoa_gdf, howleft, predicatewithin) # 按LSOA分组统计犯罪总数、类型分布 lsoa_stats crime_with_lsoa.groupby(LSOA11CD).agg({ Crime_Type: lambda x: x.value_counts().to_dict(), # 各类型计数 geometry: count # 总案件数 }).rename(columns{geometry: Total_Crimes}) # 合并IMD数据如Deprivation_Score lsoa_enriched lsoa_gdf.merge(lsoa_stats, left_onLSOA11CD, right_indexTrue, howleft) lsoa_enriched[Total_Crimes] lsoa_enriched[Total_Crimes].fillna(0)4.2 生成犯罪密度热力图解决点位重叠导致的视觉失真单纯渲染点位在密集区如市中心会形成黑块需转为核密度估计KDEfrom scipy.stats import gaussian_kde import numpy as np # 提取犯罪点坐标WGS84 coords np.array(list(zip(crime_gdf.geometry.x, crime_gdf.geometry.y))) # 计算KDE带宽设为0.01度≈1km kde gaussian_kde(coords.T, bw_method0.01) # 在伦敦范围网格上计算密度值 x_grid np.linspace(-0.5, 0.3, 200) y_grid np.linspace(51.2, 51.7, 200) X, Y np.meshgrid(x_grid, y_grid) Z np.reshape(kde(np.vstack([X.ravel(), Y.ravel()])).T, X.shape) # 导出为GeoTIFF供QGIS加载 from rasterio.transform import from_origin import rasterio transform from_origin(x_grid[0], y_grid[-1], 0.004, 0.004) # 分辨率约400m with rasterio.open( crime_density_202206.tif, w, driverGTiff, heightZ.shape[0], widthZ.shape[1], count1, dtypeZ.dtype, crsEPSG:4326, transformtransform, ) as dst: dst.write(Z, 1)此热力图可直接拖入 QGIS用Singleband Pseudocolor渲染清晰揭示犯罪密度梯度。4.3 关键技巧用.qgz项目文件复用分析流程压缩包中的project 3.qgz是 QGIS 项目文件包含已配置好的图层、符号化、布局。不要直接双击打开——因路径硬编码图层会丢失。正确做法新建 QGIS 项目 →Project → Import from another project→ 选择project 3.qgz在弹出窗口中勾选Resolve missing layers using file picker对每个缺失图层手动指向解压后的对应.shp文件如crime_202206.shp确认后所有预设样式、标注、布局将自动加载省去重复配置时间。此技巧让团队成员能秒级复现导师/同事的分析环境是 GIS 协作效率的核心杠杆。本文还有配套的精品资源点击获取