#javascript #leaflet #voronoi #turfjs
#javascript #листовка #вороной #turfjs
Вопрос:
У меня есть карта листовки, в которую я добавил a FeatureCollection
с некоторыми полигонами, созданными voronoi
функцией turfjs
(docs). Теперь я пытаюсь пересечь эти полигоны с a MultiPolygon
, представляющим страну, чтобы полигоны Вороного отображались только внутри указанной страны. Для пересечения я использую martinez.
Полигоны Вороного:
var voronoiPolygons = turf.voronoi(poll1); //Creating the Polygons
voronoiPolygons.features.map((f, i) => {
f.properties = poll1.features[i].properties; //Adding the original properties to the new Polygons
});
Пересечение с границей страны:
voronoiPolygons.features.forEach(trimBorder);
function trimBorder(value,index,array){
//Intersection using Martinez, returns set of coordinates
let newPolygon = martinez.intersection(value.geometry.coordinates, borderPT.geometry.coordinates);
//Change the feature type to MultiPolygon if the intersection generates a MultiPolygon
voronoiPolygons.features[index].geometry.coordinates = newPolygon;
if (newPolygon.length > 1) voronoiPolygons.features[index].geometry.type = "MultiPolygon";
}
Однако, когда я запускаю это, я получаю следующую ошибку:
Uncaught Error: Invalid LatLng object: (-8.395214820999854,37.08713944100005, -8.395575540353551,37.08710300941793)
at new D (LatLng.js:32)
at We (GeoJSON.js:235)
at He (GeoJSON.js:248)
at He (GeoJSON.js:247)
at De (GeoJSON.js:203)
at i.addData (GeoJSON.js:117)
at i.addData (GeoJSON.js:107)
at initialize (GeoJSON.js:92)
at new i (Class.js:22)
at Object.Ke (GeoJSON.js:439)
Насколько я понимаю, в этом объекте не должно быть 2 наборов координат. Что является причиной этого?
Комментарии:
1. Пожалуйста, поделитесь своим полным кодом, потому что ошибка возникает при преобразовании результата пересечения в L.GeoJSON
2. После опубликованного мной кода я просто делаю
L.geoJSON(voronoiPolygons).addTo(map);
. Ну, я просто исправил это, изменив каждый полигон на MultiPolygon. Хотя не уверен, почему.