如何将javascript数组转换为geojson数据?

时间:2017-09-10 13:05:16

标签: javascript jquery arrays leaflet

我想将txt,xls和csv文件上传到传单中。首先,我正在尝试txt文件。 Js将我的txt读作js数组。现在我想将我的js数组转换为geojson。但我在这里感到困惑。需要一些关于我应该遵循何种方式的线索。感谢您的时间,感谢您的回复。

 $(function () {
            document.getElementById('file').onchange = function () {
				debugger;
                var file = this.files[0];
                var reader = new FileReader();
                reader.onload = function (progressEvent) {
                    // Entire file
                    console.log(this.result);
                    // By lines
                    var lines = this.result.split('\n');
                    var list = [];
                    for (var line = 0; line < lines.length; line++) {
                        list.push(lines[line]);
                    }
                };
                reader.readAsText(file);
            };
        });
        

1 个答案:

答案 0 :(得分:0)

根据给定github链接的映射,我猜你可以按照我在下面给出的给定案例进行操作,但是对于一般方法,如果你使用github geoJSON library或者如果你有冒险精神你可能会更好尝试扩展以下代码...

var dataStr = "name: 'Location A', category: 'Store', street: 'Market', lat: 39.984, lng: -75.343, name: 'Location B', category: 'House', street: 'Broad', lat: 39.284, lng: -75.833, name: 'Location C', category: 'Office', street: 'South', lat: 39.123, lng: -74.534",
    data    = dataStr.split(/\s*,\s*(?=name)/g)
                     .map(function(d){
                            return d.split(/\s*,\s*/)
                                    .reduce(function(r,s){
                                              var [k,v] = s.replace(/\s*'|'\s*$/g,"")
                                                           .split(":");
                                              return k === "name"    || 
                                                     k === "category" ? (r.properties[k] = v, r)
                                                                      : k === "lat" ||
                                                                        k === "lng"  ? (r.geometry.coordinates.unshift(+v), r)
                                                                                     : r;
                                            }, {type      : "feature",
                                                geometry  : {type : "Point", coordinates: [] },
                                                properties: {name    : "",
                                                             category: ""
                                                            }
                                               });
                                    }),
  geoJSON   = { type    : "FeatureCollection",
                features: data
              };

console.log(geoJSON);