做地理信息项目的,谁没被数据合并折磨过?特别是拿到手的一堆散乱的_geo文件,格式不一,坐标系乱飞。今天不扯虚的,直接上干货,讲讲怎么把_geo数据集怎么合并这事儿办利索。
先说个真事儿。上个月有个做智慧城市的朋友找我,手里有十几个区县的POI数据,想拼成全市的。他之前自己用Excel转,结果坐标全歪了,街道名字还重复了三次。最后不得不花了两千块找外包重做。其实这事儿根本不用那么复杂,关键在流程。
第一步,别急着合并。先检查坐标系。这是90%的人踩坑的地方。有的数据是WGS84,有的是CGCS2000,还有可能是北京54。直接合并?那地图上点位能飘到隔壁省去。我用QGIS或者ArcGIS打开每个文件,看属性表里的投影信息。如果不一样,必须先统一重投影。这一步不能省,省了后面全白搭。
第二步,清理脏数据。很多_geo数据里,字段名都不一样。有的叫“名称”,有的叫“NAME”,有的叫“地名”。合并前,得先把字段标准化。我用Python写个小脚本,或者直接在GIS软件里用字段计算器,把关键字段名统一。比如统一成“name”、“type”、“lon”、“lat”。这一步看着繁琐,但能省后面无数麻烦。
第三步,才是正式合并。如果你数据量小,几百条,用ArcGIS的“合并”工具或者QGIS的“合并图层”功能,手动操作就行。勾选“创建唯一ID”,别偷懒。如果数据量大,比如几十万条,手动点鼠标会卡死。这时候建议用Python的geopandas库。代码很简单:
import geopandas as gpd
import os
files = [f for f in os.listdir('.') if f.endswith('.geojson')]
gdfs = [gpd.read_file(f) for f in files]
merged = gpd.GeoDataFrame(pd.concat(gdfs, ignore_index=True))
merged.to_file('merged.geojson', driver='GeoJSON')
这段代码能帮你快速搞定。但注意,内存够不够?如果内存爆了,得用分块读取。
关于价格,市面上做数据清洗和合并的服务,小项目大概500-1000元,大项目按条收费,每条0.1-0.5元不等。别信那些说“一键免费合并”的,多半是坑,要么数据丢失,要么坐标错误。
再分享个避坑点:属性冲突。合并后,如果两个数据源对同一个POI的描述不同,比如一个说“麦当劳”,一个说“McDonald's”,合并后会出现两条记录。这时候得用空间连接(Spatial Join)或者模糊匹配来去重。这一步很考验经验,建议保留原始数据,新增一列“来源”,方便后续核对。
我见过有人为了省事,直接复制粘贴字段,结果数据类型不对,比如把经纬度存成了字符串,后面没法做空间分析。所以合并后,一定要检查数据类型,确保经纬度是浮点数,面积是数值型。
最后,合并完别急着交付。随机抽10个点,在地图上打点,看看位置对不对。再跑一下拓扑检查,看看有没有重叠、缝隙。这些细节,客户一眼就能看出来。
做这行,靠谱比速度重要。数据合并不是简单的拼接,而是数据的重构和标准化。如果你自己搞不定,或者时间紧,找专业的人做也不亏。毕竟,数据错了,后面所有分析都是废纸。
本文关键词:_geo数据集怎么合并