咨询:如何将经纬度(Lat Long)转换为加拿大正向分拣区(FSA)
经纬度转加拿大正向分拣区(FSA)的实现方法
Python 实现
核心思路是利用空间边界数据完成点与多边形的归属匹配,步骤如下:
- 获取加拿大FSA边界数据:从加拿大统计局官网下载FSA级别的shapefile(对应普查数据里的Forward Sortation Areas图层)。
- 用
geopandas处理空间数据:- 加载FSA边界的shapefile为GeoDataFrame
- 将经纬度数据转换为带地理坐标系的点要素
- 通过空间连接判断每个点所属的FSA
示例代码:
import geopandas as gpd from shapely.geometry import Point # 加载FSA边界数据,转换为WGS84坐标系(适配经纬度) fsa_gdf = gpd.read_file("path/to/your/fsa_shapefile.shp").to_crs(epsg=4326) # 处理自定义经纬度数据 lat_lon_data = [ {"latitude": 43.6532, "longitude": -79.3832}, # 多伦多市中心 {"latitude": 45.5017, "longitude": -73.5673} # 蒙特利尔市中心 ] # 转换为带地理信息的GeoDataFrame points_gdf = gpd.GeoDataFrame( lat_lon_data, geometry=[Point(xy["longitude"], xy["latitude"]) for xy in lat_lon_data], crs="EPSG:4326" ) # 空间连接,匹配点所属的FSA result = gpd.sjoin(points_gdf, fsa_gdf, how="left", predicate="within") # 提取目标字段(CFSAUID为FSA编码字段,需根据实际shapefile调整) final_result = result[["latitude", "longitude", "CFSAUID"]] print(final_result)
Tableau 实现
Tableau通过空间匹配完成转换,步骤如下:
- 导入FSA边界shapefile:点击「数据」>「新建数据源」,选择下载好的FSA边界文件。
- 导入经纬度数据集:确保数据包含
纬度和经度字段,将这两个字段的地理角色设置为「纬度」和「经度」,Tableau会自动识别为点要素。 - 建立空间连接:
- 在数据窗口中,依次拖入FSA数据集和经纬度数据集。
- 选择「空间连接」,匹配条件设置为「点位于多边形内」。
- 提取FSA信息:连接完成后,即可在视图中获取每个经纬度对应的FSA编码、名称等字段。
注意:两个数据集需统一坐标系,默认使用WGS84即可,若匹配异常可在「地图」>「地图层」>「坐标系」中调整。
内容的提问来源于stack exchange,提问作者Aspiring TM
相关产品推荐
相关产品推荐

