Вот проблема: у меня есть файлы geoJSON и topoJSON, которые дают мне полигоны для групп блоков переписи и избирательных участков. Я пытаюсь увидеть, насколько данная группа блоков переписи перекрывается с данным участком.
Я видел пару примеров того, что мне нужно на других языках, т.е. R и в некоторых инструментах ГИС, но Я пытаюсь написать это как скрипт Node.js. Несколько вопросов:
- Есть ли модуль NPM (я много гуглил, но так и не нашел), который может выдать процентное перекрытие?
- Есть ли алгоритм или пример, написанный на другом языке, о котором я должен знать (я просмотрел, но не знаю, с чего начать) и который я мог бы перенести на JavaScript?
- В противном случае кто-нибудь может объяснить мне, как я буду думать о создании алгоритма для этого?
В конце концов, конечный продукт будет выглядеть примерно так: представьте, что у меня есть массивы участков и групп блоков, и каждый из них является объектом со свойством геометрии, которое содержит данные полигона для участка или группы блоков, а также представьте, что я есть функция с именем overlap
, которая при передаче двух полигонов выдает процент перекрытия:
// Iterate over each precinct.
_.each( precincts, function ( precinct ) {
// Iterate over each blockgroup.
_.each( blockgroups, function ( blockgroup ) {
// Get the overlap for the current precinct and blockgroup.
var o = overlap( precinct.geometry, blockgroup.geometry );
// If they overlap at all...
if ( o > 0 ) {
// ...Add information about the overlap to the precinct.
precinct.overlaps.push({
blockgroup: blockgroup.id,
overlap: o
});
}
}
}
(Я видел этот модуль, но он дает только if em> полигоны перекрываются, а не насколько.)