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));
  1. Oppretter punktobjekt (2x)
  2. Lager bufferobjekt (2x)
  3. 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.
  
});

Komplett eksempel:

 

index.html

index.js

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

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

  • 363