Нужна помощь с использованием функции Turf "Union" для объединения нескольких наборов полигонов из файла GeoJSON - PullRequest
0 голосов
/ 15 июня 2019

Есть ли у кого-нибудь опыт сопоставления JavaScript с leaflet.js, turf.js и mapbox? Я пытаюсь использовать функцию объединения turf для объединения нескольких серий полигонов, которые я извлекаю из файла geoJSON. Любая помощь с благодарностью!

Команда объединения turf.js: https://turfjs.org/docs/#union

Я вызываю данные по округам Техаса из файла GeoJSON, как показано ниже. У меня уже есть код для обозначения наборов округов из агломерации одного цвета - см. Ниже. Я пытаюсь использовать функцию объединения turf.js, чтобы превратить каждый из этих наборов - например, 3 округа для Абилина и 5 округов для Амарилло, показанные ниже - для создания объединенных (мульти) полигонов для каждого набора округов, включая устранение внутренних границ и позволяя каждому быть выбранным в качестве единицы для отображения всплывающего окна.

// Creating map object
var map = L.map("map", {
  center: [31, -97],
  zoom: 6
});

// Adding tile layer
L.tileLayer("https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}", {
  attribution: "Map data &copy; <a href=\"https://www.openstreetmap.org/\">OpenStreetMap</a> contributors, <a href=\"https://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>, Imagery © <a href=\"https://www.mapbox.com/\">Mapbox</a>",
  maxZoom: 18,
  id: "mapbox.streets",
  accessToken: API_KEY
}).addTo(map);

var link = "https://raw.githubusercontent.com/TNRIS/tx.geojson/master/counties/tx_counties.geojson";


// Function that will determine the color of a metropolitan area based on the county it belongs to
function chooseColor(COUNTY) {
  switch (COUNTY) {

//Abilene
case "Callahan County":
  return "pink";
case "Jones County":
  return "pink";
case "Taylor County":
  return "pink";

//Amarillo
case "Armstrong County":
  return "lightgreen";
case "Carson County":
  return "lightgreen";
case "Oldham County":
  return "lightgreen";
case "Potter County":
  return "lightgreen";
case "Randall County":
  return "lightgreen";

  default:
    return "black";
  }
}

// Grabbing our GeoJSON data..
d3.json(link, function(data) {
  // Creating a geoJSON layer with the retrieved data
  L.geoJson(data, {
    style: function(feature) {
      return {
        color: "white",
        fillColor: chooseColor(feature.properties.COUNTY),
        fillOpacity: 1,
        weight: 1.5
      };
    }
  }).addTo(map);
});

Не могу понять, как структурировать команду turf.union и хотел бы помочь!

...