求助:Google Sheet中使用Regexextract提取GeoJSON坐标的正则表达式
从Google Sheet的GeoJSON单元格提取坐标的Regexextract方案
嘿,我明白你在Google Sheet里提取GeoJSON坐标时遇到的正则难题了——GeoJSON的格式虽然规范,但用REGEXEXTRACT抓坐标确实得精准匹配结构。我来给你几个实用的方案,覆盖常见的GeoJSON类型:
1. 提取Point类型的坐标(最常见)
如果你的GeoJSON是Point类型,结构类似:
{"type": "Point", "coordinates": [120.12345, 30.67890]}
用下面的公式可以直接提取逗号分隔的经纬度字符串:=REGEXEXTRACT(A1, "\"coordinates\":\s*\[([^\]]+)\]")
拆分经度和纬度
如果要分别拿到经度和纬度,可以配合SPLIT和INDEX:
- 提取经度:
=INDEX(SPLIT(REGEXEXTRACT(A1, "\"coordinates\":\s*\[([^\]]+)\]"), ","), 1) - 提取纬度:
=INDEX(SPLIT(REGEXEXTRACT(A1, "\"coordinates\":\s*\[([^\]]+)\]"), ","), 2)
2. 提取Polygon/MultiPolygon类型的坐标
如果是多边形类的GeoJSON,结构类似:
{"type": "Polygon", "coordinates": [[[120.1,30.2],[120.3,30.4],[120.5,30.6],[120.1,30.2]]]}
- 提取完整的外层坐标数组:
=REGEXEXTRACT(A1, "\"coordinates\":\s*(\[\[.*?\]\])") - 提取第一个顶点的坐标:
=REGEXEXTRACT(A1, "\"coordinates\":\s*\[\[\[([^\]]+)\]\]")
关键细节说明
\s*:匹配任意数量的空格(包括换行),兼容GeoJSON里可能存在的格式空格[^\]]+:匹配直到]的所有字符,完美适配带负号、小数点的坐标值.*?:非贪婪匹配,避免在嵌套数组结构中匹配到多余的内容
如果你的GeoJSON有特殊嵌套结构或者额外属性,可以把单元格里的具体内容贴出来,我再帮你调整正则表达式~
内容的提问来源于stack exchange,提问作者Gusepo
相关产品推荐
相关产品推荐

