英国车辆事故数据UTM转经纬度的区域选择及区域划分咨询
问题
处理英国车辆事故DataFrame时,需要把UTM格式的东向坐标(location_easting_osgr)和北向坐标(location_northing_osgr)转成经纬度,再进一步划分区域。目前已写了转换函数,但不确定该用哪个UTM区域,也不知道怎么新增列把经纬度转成区域。现有函数如下:
def rule(row): lat, lon = utm.to_latlon(row["location_easting_osgr"], row["location_northing_osgr"], 30, 'U') return pd.Series({"lat": lat, "long": lon}) df = df.merge(df_subset.apply(rule, axis=1), left_index= True, right_index= True)
一、确定英国对应的UTM区域
英国本土大部分区域属于UTM 30U和UTM 31U:
- 西经2°到东经6°之间的区域(包括英格兰大部分、威尔士、苏格兰南部)用UTM 30U
- 东经6°到东经12°之间的区域(苏格兰北部、英格兰东部小部分)用UTM 31U
如果数据集覆盖全英国,建议先通过坐标判断所属区域,再分情况转换:
def get_utm_zone(easting): # 英国东向坐标大致范围:300000到650000 if easting < 500000: # 大致对应30U区域 return 30, 'U' else: return 31, 'U' def convert_coords(row): zone_num, zone_letter = get_utm_zone(row["location_easting_osgr"]) lat, lon = utm.to_latlon(row["location_easting_osgr"], row["location_northing_osgr"], zone_num, zone_letter) return pd.Series({"lat": lat, "long": lon}) # 直接新增列,不用merge更高效 df[["lat", "long"]] = df.apply(convert_coords, axis=1)
二、将经纬度转换为区域
提供两种实用方法:
- 基于经纬度范围划分(适合大致分区)
比如按英格兰、苏格兰、威尔士的大致经纬度边界判断:
def assign_region(row): lat = row["lat"] lon = row["long"] if lat < 54.5 and lon > -5.0: # 威尔士范围 return "Wales" elif lat < 55.0 and lon > -2.0: # 英格兰范围 return "England" elif lat >= 55.0: # 苏格兰范围 return "Scotland" else: return "Other" df["region"] = df.apply(assign_region, axis=1)
- 基于官方地理边界数据(更精准)
用英国官方区域边界Shapefile(比如ONS发布的边界数据),结合geopandas做空间匹配:
import geopandas as gpd # 读取Shapefile(替换为你的文件路径) uk_regions = gpd.read_file("uk_regions.shp") # 将原始DataFrame转为GeoDataFrame df_geo = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df["long"], df["lat"]), crs="EPSG:4326") # 空间匹配,获取所属区域 df_geo = gpd.sjoin(df_geo, uk_regions, how="left", predicate="within") # 将区域列转回原DataFrame df["region"] = df_geo["region_name"] # 替换为Shapefile中对应的区域名称列
三、代码优化提示
- 避免用
merge,直接通过df[["lat", "long"]] = df.apply(...)新增列,效率更高 - 如果数据集很大,用
swifter库加速apply操作:import swifter df[["lat", "long"]] = df.swifter.apply(convert_coords, axis=1)
内容的提问来源于stack exchange,提问作者E. Artemis
相关产品推荐
相关产品推荐

