Geografisk analyse med Turf.js
var p1 = turf.point([10.681142, 60.7897436]);
var p1_buffer = turf.buffer(p1, 500, {units: 'meters'})
var p2 = turf.point([10.6964777, 60.7860676]);
var p2_buffer = turf.buffer(p2, 500, {units: 'meters'})
console.log('disjoint? ' + turf.booleanDisjoint(p1_buffer, p2_buffer));
console.log('overlap? ' + turf.booleanOverlap(p1_buffer, p2_buffer));
- Oppretter punktobjekt (2x)
- Lager bufferobjekt (2x)
- Bruker topologiske funksjoner for å undersøke om objektene overlapper eller ikke.
NB: analysen foregår uten noen direkte forbindelse til kartet.
map.addLayer({
"id": "p1",
"type": "circle",
"source": {
'type': 'geojson',
'data': p1,
},
"paint": {
"circle-radius": 8,
"circle-color": "#008000"
}
});
Mapbox-kode:
Legger til punkt i kartet.
Punkt:
type: circle
Trenger:
circle-radius
circle-color
map.addLayer({
"id": "p1_buffer",
"type": "fill",
"source": {
'type': 'geojson',
'data': p1_buffer,
},
"paint": {
"fill-color": "#088",
"fill-outline-color": "#000",
"fill-opacity": 0.5,
}
});
Mapbox-kode:
Legger til buffersonen i kartet.
Polygoner:
type: fill
Trenger:
fill-color
fill-outline-color
map.on('load', function () {
// Tidligere vist kode skal inn her.
});
Turf.js helper-funksjoner
Oppretter geometri-objekter og feature-objekter:
Turf.js analyse-funksjoner
- Measurement: area, length, distance, centroid
- Transformation: buffer, circle, union, intersect
- Feature Conversion: lineToPolygon, polygonToLine
hackathon:
hack4no 2017
Om "hacking"
Ordet "hackathon" er samansett av “hacke” og “maraton”. Å "hacke" tyder i denne samanhengen å programmere, bruke data og lage appar, tenester og andre digitale løysingar. "Maraton" spelar på at ein over to heile dagar jobbar i eitt for å bli ferdig med ei løysing eller utvikle ein idé.
Idé:
Lage en vær- og føre-rapport for en veistrekning
https://www.vegvesen.no/
trafikkinformasjon/
reiseinformasjon
Veiblikk:
var route_API_request =
'https://www.vegvesen.no/ws/no/vegvesen/' +
'ruteplan/routingService_v1_0/routingService' + '?' +
'stops=' + stops + '&' +
'returnDirections=false' + '&' +
'returnGeometry=true' + '&' +
'route_type=best' + '&' +
'format=json';
route = turf.lineString(vertices);
map.addLayer({
'id': 'svv_route',
'type': 'line',
'source': {
'type': 'geojson',
'data': route
},
'layout': {
"line-join": "round",
"line-cap": "round"
},
'paint': {
"line-color": "#e94e1b",
"line-width": 4
}
});
var route_bbox = turf.bbox(route);
map.fitBounds(route_bbox, {
'padding': 25,
'animate': false
});
var route_buffer = turf.buffer(
route_segment,
buffer_width,
option_units_meters
);
route_segments = turf.lineChunk(
route,
segment_length,
option_units_kilometers
);
var cctv_point = turf.point([cctv_lon, cctv_lat]);
if (turf.booleanPointInPolygon(cctv_point, route_buffer)) {
store_cctv_point(cctv_point, cctv_record);
};
var svv_image = document.createElement('div');
svv_image.className = 'svv_image';
svv_image.innerHTML =
'<h4>' + distance + ' km - ' + camera_site + '</h4>' +
'<p><img src="' + web_image_url + '" /></p>' +
'<p><a href="' + yr_url + '" target="_blank">' +
decodeURI(yr_url) + '</a></p></div>';
var webcams = document.getElementById('webcams');
webcams.appendChild(svv_image);
Geografisk analyse med Turf.js
By sverres
Geografisk analyse med Turf.js
- 388