script.coordinateSystem = 'bottom-up'; var file = new File(script.file.parent, '85km Comp.csv'); if(file.exists()){ // Import data and create 2D data array //========================================================================================= file.open(); var data = file.readAll(); file.close(); var firstArray = data.split('\n'); for(i = 0; i < firstArray.length; i++){ firstArray[i] = firstArray[i].split(','); } // Get max & min lat & long //========================================================================================= var minLat; var minLon; var maxLat; var maxLon; for(i = 0; i < firstArray.length; i++){ for(j = 0; j < firstArray[i].length; j++){ if(firstArray[i][j] == 'minlat'){ minLat = firstArray[i + 1][j]; }else if(firstArray[i][j] == 'minlon'){ minLon = firstArray[i + 1][j]; }else if(firstArray[i][j] == 'maxlat'){ maxLat = firstArray[i + 1][j]; }else if(firstArray[i][j] == 'maxlon'){ maxLon = firstArray[i + 1][j]; } } } var totalLat = maxLat - minLat; var totalLon = maxLon - minLon; // Get origin & scale //========================================================================================= var margin = 10; // Percentage of width or height var origin = new Point(0, 0); var scale; if(((document.size.height * ((100 - (margin * 2)) / 100)) / (document.size.width * ((100 - (margin * 2)) / 100))) > (totalLat / totalLon)){ scale = (document.size.width * ((100 - (margin * 2)) / 100)) / totalLon; origin.x = document.size.width * (margin / 100); origin.y = (document.size.height - (totalLat * scale)) / 2; }else{ scale = (document.size.height * ((100 - (margin * 2)) / 100)) / totalLat; origin.x = (document.size.width - (totalLon * scale)) / 2; origin.y = document.size.height * (margin / 100); } // Create track arrays //========================================================================================= var tracks = []; var trackCount = 0; var pointCount = 0; function addTrack(i){ tracks[trackCount] = { name: firstArray[i][1].substring(1, firstArray[i][1].length - 1), points: [] } trackCount++; if(Number(firstArray[i + 1][0]) == Number(firstArray[i][0]) + 1){ addTrack(i + 1); }else{ trackCount = 0; } } function newPoint(i){ var myPoint = new Point((firstArray[i][3] - minLon) * scale + origin.x, (firstArray[i][2] - minLat) * scale + origin.y); tracks[trackCount].points[pointCount] = myPoint; if(Number(firstArray[i + 1][0]) == Number(firstArray[i][0]) + 1){ pointCount++; if(Number(firstArray[i + 1][1]) == Number(firstArray[i][1]) + 1){ trackCount++; pointCount = 0; } newPoint(i + 1); } } // Create waypoint array //========================================================================================= var wayPoints = []; var wayPointCount = 0; function newWayPoint(i){ var myPoint = new Point((firstArray[i][2] - minLon) * scale + origin.x, (firstArray[i][1] - minLat) * scale + origin.y); wayPoints[wayPointCount] = { name: firstArray[i][7].substring(1, firstArray[i][7].length - 1), symbol: firstArray[i][11].substring(1, firstArray[i][11].length - 1), point: myPoint } wayPointCount++; if(Number(firstArray[i + 1][0]) == Number(firstArray[i][0]) + 1){ newWayPoint(i + 1); } } // Iterate through data file //========================================================================================= for(i = 0; i < firstArray.length; i++){ if(firstArray[i][0] == 'trk\r' && firstArray[i + 2][0] == '1'){ addTrack(i + 2); }else if(firstArray[i][0] == 'trkpt\r' && firstArray[i + 2][0] == '1'){ newPoint(i + 2); }else if(firstArray[i][0] == 'wpt\r' && firstArray[i + 2][0] == '1'){ newWayPoint(i + 2); } } // Draw paths //========================================================================================= for(i = 0; i < tracks.length; i++){ var myPath = new Path(); myPath.name = tracks[i].name; for(j = 0; j < tracks[i].points.length; j++){ myPath.add(tracks[i].points[j]); } } for(i = 0; i < wayPoints.length; i++){ var myPath = new Path(); myPath.name = wayPoints[i].name; myPath.add(wayPoints[i].point); } }else{ Dialog.alert('The file specified in the script does not exist in the location specified.'); }