使用Google Sheets App Script转换POLYGON坐标格式的需求
Google Sheets 脚本:POLYGON 坐标转指定 JSON 格式
需要将表格中的POLYGON格式坐标文本转换为嵌套JSON数组格式,核心要求:
- 输入坐标为先经度、后纬度,转换后需调整为
lat(纬度)、lng(经度)的顺序 - 支持处理200+个点的多边形(此前用公式实现因点数过多失效)
脚本代码
function POLYGONTOJSON(polygonText) { // 清理输入文本,提取核心坐标字符串 const coordsStr = polygonText.replace(/POLYGON \(\(|\)\)/g, '').replace(/\n/g, ''); // 分割为单个坐标对并过滤空值 const coordPairs = coordsStr.split(',').map(pair => pair.trim()).filter(pair => pair); // 转换坐标对为lat/lng对象,反转经纬度顺序 const points = coordPairs.map(pair => { const [lng, lat] = pair.split(' ').map(Number); return { lat, lng }; }); // 可选:去除重复坐标点(如果不需要可删除此段) const uniquePoints = points.filter((point, index, self) => index === self.findIndex(p => p.lat === point.lat && p.lng === point.lng) ); // 包裹为要求的嵌套数组格式并转为JSON字符串 return JSON.stringify([uniquePoints]); }
使用步骤
- 打开目标Google表格,点击菜单栏「扩展程序」→「Apps 脚本」
- 将上述代码粘贴到脚本编辑器,保存项目(命名如「PolygonConverter」)
- 返回表格,在输出单元格中输入:
=POLYGONTOJSON(A1)(替换A1为你的POLYGON文本所在单元格)
示例测试
输入(A1单元格内容):
POLYGON ((-111.705934405 32.76300316, -111.706191897 32.748205765,
-111.706191897 32.748205765, -111.706191897 32.748205765, -111.688682437 32.748566707, -111.688939929 32.733261511, -111.655036807 32.732828307, -111.655294299 32.740914437, -111.645938754 32.740842243, -111.646024585 32.748783271, -111.654607654 32.74914421, -111.654092669 32.763291866, -111.705934405 32.76300316))
输出结果:
[[{"lat":32.76300316,"lng":-111.705934405},{"lat":32.748205765,"lng":-111.706191897},{"lat":32.748566707,"lng":-111.688682437},{"lat":32.733261511,"lng":-111.688939929},{"lat":32.732828307,"lng":-111.655036807},{"lat":32.740914437,"lng":-111.655294299},{"lat":32.740842243,"lng":-111.645938754},{"lat":32.748783271,"lng":-111.646024585},{"lat":32.74914421,"lng":-111.654607654},{"lat":32.763291866,"lng":-111.654092669}]]
内容的提问来源于stack exchange,提问作者user8702720
相关产品推荐
相关产品推荐

