我正在使用 Google Apps 脚本通过调用 jsonStringify 将 Google 电子表格中的数据格式化为geoJSON。我的代码是从这个原始示例修改的。电子表格中的每一行代表一个国家,一个单元格包含相关的 geoJSON 多边形数据:
[[[74.92,37.24],[74.57,37.03],...[73.31,37.46],[74.92,37.24]]]
但是由于该单元格不包含数字,因此 jsonStringify 将其解析为字符串,并返回:
"coordinates":["[[[74.92,37.24],[74.57,37.03],...[73.31,37.46],[74.92,37.24]]]"]
...我不能使用,因为引号使它无效的geoJSON。当我输入一个数字时, jsonStringify 返回它而不带引号,我假设因为它识别出它是一个数字。有什么方法可以强制它将多边形数据解释为数字或以其他方式转义引号?这是我的代码的相关部分:
function getObjects(data, keys) {
var objects = [];
var headers = getHeaders(sheet, activeRange, 1);
var zip = function(keys, data) {
var obj = {};
for (var i = 0; i < keys.length; i++) {
obj[keys[i]] = data[i];
}
return obj;
};
for (var i = 0; i < data.length; i++) {
var obj = zip(headers, data[i]);
//this is the polygon data
var poly = obj[settings.poly];
var coordinates = [poly];
// If we have an id and polygon data
if (obj[settings.id] && poly) {
// Define a new GeoJSON feature object
var feature = {
type: 'Feature',
// Get ID from UI
id: obj[settings.id],
geometry: {
type: 'MultiPolygon',
// Get coordinates from UIr
coordinates: coordinates
},
// Place holder for properties object
properties: obj
};
objects.push(feature);
}
}
return objects;
}