Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
message: ErrorMessages.UPLOAD_SHAPE_FILE.PARSING_ERROR,
});
};
if (fileExtension === "json") {
try {
this.props.onUpload(JSON.parse(contents));
} catch (error) {
showErrorState(error);
}
} else {
/* shp accepts shapefiles and GeoJSON zipped files:
* https://github.com/calvinmetcalf/shapefile-js/blob/gh-pages/lib/index.js#L59
*/
shp(contents)
.then(geojson => {
this.props.onUpload(geojson);
/*
* remain in the "loading" state until the value comes
* back to the component in componentWillReceiveProps
*/
})
.catch(showErrorState);
}
};
parse(data, options = {}) {
let result;
// If a zip is present, don't read anything else
if (data.zip) {
result = shp.parseZip(data.zip);
} else if (data.shp && data.shx && data.dbf) {
result = Promise.all([
shp.parseShp(data.shp, data.prj),
shp.parseDbf(data.dbf),
]).then(shp.combine);
}
options.crsIn = data.prj ? proj4(data.prj).oProj.datumName : undefined;
return Promise.resolve(result).then(res => GeoJsonParser.parse(res, options));
},
};
parse(data, options = {}) {
let result;
// If a zip is present, don't read anything else
if (data.zip) {
result = shp.parseZip(data.zip);
} else if (data.shp && data.shx && data.dbf) {
result = Promise.all([
shp.parseShp(data.shp, data.prj),
shp.parseDbf(data.dbf),
]).then(shp.combine);
}
options.crsIn = data.prj ? proj4(data.prj).oProj.datumName : undefined;
return Promise.resolve(result).then(res => GeoJsonParser.parse(res, options));
},
};
parse(data, options = {}) {
let result;
// If a zip is present, don't read anything else
if (data.zip) {
result = shp.parseZip(data.zip);
} else if (data.shp && data.shx && data.dbf) {
result = Promise.all([
shp.parseShp(data.shp, data.prj),
shp.parseDbf(data.dbf),
]).then(shp.combine);
}
options.crsIn = data.prj ? proj4(data.prj).oProj.datumName : undefined;
return Promise.resolve(result).then(res => GeoJsonParser.parse(res, options));
},
};
parse(data, options = {}) {
let result;
// If a zip is present, don't read anything else
if (data.zip) {
result = shp.parseZip(data.zip);
} else if (data.shp && data.shx && data.dbf) {
result = Promise.all([
shp.parseShp(data.shp, data.prj),
shp.parseDbf(data.dbf),
]).then(shp.combine);
}
options.crsIn = data.prj ? proj4(data.prj).oProj.datumName : undefined;
return Promise.resolve(result).then(res => GeoJsonParser.parse(res, options));
},
};
reader.onload = e => {
const arrayBuff = reader.result
shp(arrayBuff).then(geojson => {
console.log(geojson)
geojson.key = Math.random()
dispatch(receivedRoutesShapefile(feedSource, geojson))
})
}
reader.readAsArrayBuffer(file)
reader.addEventListener('loadend', () => {
const blob = reader.result;
shp(blob).then(json => {
FileUtil.addGeojsonLayer(json, map);
});
});
}
reader.addEventListener('loadend', () => {
const blob = reader.result;
shp(blob).then(json => {
FileUtil.addGeojsonLayer(json, map);
});
});
}
reader.onload = function () {
if (reader.readyState != 2 || reader.error) {
return;
} else {
shp(reader.result).then(function (geojson) {
addLayer(geojson);
}).catch(function (err) {
err.message = "Not a proper zipped shapefile " + file.name;
cb(err);
})
}
}
reader.readAsArrayBuffer(file);
shapefileRead = (e: ProgressEvent & {target: EventTarget}) => {
debug(`read ${e.target.result.byteLength} bytes`)
const shapefile = shp.parseZip(e.target.result)
const properties = []
for (const key in shapefile.features[0].properties) {
if (shapefile.features[0].properties.hasOwnProperty(key)) {
properties.push(key)
}
}
this.setState({
shapefile,
properties,
nameProp: properties[0],
freqProp: properties[0],
speedProp: properties[0],
error: undefined
})