Datacleaning and transforming - Jelmerovereem/frontend-data GitHub Wiki

Datacleaning

Transforming

First I have to clean the coordinates from the RDW dataset: From POINT (6.8635054 53.325557274) to long: 6.8635054, lat: 53.325557274

// from Stan Brankras  https://github.com/StanBankras/functional-programming/blob/56585a9b63601b68de3bcc3b26050b85ca05cf5e/utils.js#L36-L54

function replaceOccurences(string, replace, replaceBy) {
  return string.split(replace).join(replaceBy);
}

function replaceMultipleOccurences(string, replaceArray, replaceBy) {
  let replaceString = string;
  replaceArray.forEach((r) => replaceString = replaceOccurences(replaceString, r, replaceBy));
  return replaceString;
}

function isCoordInPolygon(centerCoord, polygons) {
  let zone = undefined;
  for(let i = 0;i < polygons.length;i++) {
    if(inside(centerCoord, polygons[i].polygon)) {
      zone = polygons[i].municipality; 
      break;
    }
  }
  return zone;
}

function getCenterCoord(coordinates) { 
  const type = coordinates.split(' ')[0];
  let longLat = replaceMultipleOccurences(coordinates, [type + ' (', '(', ')', ','], '').split(' ');
  if(type === 'POINT') {
    longLat = [ Number(longLat[0]), Number(longLat[1]) ];
  } else {
    let latTotal = 0;
    let longTotal = 0;

    longLat.forEach((x, index) => {
      if(index === 0 || index % 2 === 0) return longTotal += Number(x);
      return latTotal += Number(x);
    });

    longLat = [ longTotal / (longLat.length / 2), latTotal / (longLat.length / 2) ];
  }

  return longLat;
}

This cleaned most of all the coordinates from the RDW Dataset, but some returned NaN. I excluded these with an if statement:

if (!Number.isNaN(getCenterCoord(garage.areageometryastext)[0]) || !Number.isNaN(getCenterCoord(garage.areageometryastext)[1])) {
	coordinateObj = {
		long: getCenterCoord(garage.areageometryastext)[0],
		lat: getCenterCoord(garage.areageometryastext)[1]
	}
	coordinatesArray.push(coordinateObj)
}