Пространственное соединение

Точки в полигонах: подсчёт и пространственное соединение

Сопоставьте файл точек с границами районов, зон или участков: посчитайте точки и значения в каждом полигоне и добавьте к каждой точке атрибуты полигона, в который она попадает.

1 Точки

2 Полигоны

Файлы обрабатываются в браузере, их содержимое не отправляется на сервер. Загружаются только тайлы карты (Esri, OpenStreetMap) и библиотеки (jsDelivr).

Карта

Подготовка файлов

В первой строке таблицы точек должны быть названия столбцов. Полигоны могут быть в GeoJSON (WGS84), шейп-файлом в zip с файлом .prj или KML. Для координат точек в метрах выберите систему координат.

Похожие инструменты

Зачем считать точки в полигонах

Многие организации хранят записи с адресом или координатами, а решения принимают по кварталам, районам, торговым территориям, участкам или зонам обслуживания. Пространственное соединение связывает одно с другим: находит полигон, в котором лежит каждая точка, и делает результат пригодным в обе стороны. Муниципальные службы считают обращения по кварталам, розничные сети распределяют клиентов по территориям, логисты группируют точки доставки по зонам.

Инструмент выдаёт три результата. Первый: сводка по полигонам с числом точек, плотностью на км² и, для выбранного числового столбца, суммой, средним, минимумом и максимумом. Второй: сама таблица точек, в каждую строку которой добавлены название и выбранные атрибуты полигона; это и есть ответ на вопрос «в каком районе находится каждая строка». Третий: список точек, не попавших ни в один полигон, быстрый способ найти ошибочные координаты или записи вне зоны обслуживания.

Как пользоваться

  1. Загрузите файл точек: CSV, Excel, GeoJSON или KML. В таблицах столбцы широты и долготы распознаются по названиям; при необходимости исправьте выбор. Если координаты в метрах, выберите систему координат.
  2. Загрузите файл полигонов: GeoJSON, шейп-файл в zip или KML. Как только оба файла готовы, анализ запускается сам.
  3. Для сумм и средних выберите столбец в списке «Числовое поле» (сумма, длительность, количество и т. п.).
  4. «Поле названия» задаёт имя полигона в таблицах и на карте. Отметьте только те атрибуты, которые нужно добавить к точкам, чтобы не перегружать результат.
  5. Полигоны раскрашиваются по выбранному показателю. Щёлкните по полигону, чтобы увидеть его сводку, или нажмите «Показать» в таблице. Красные точки лежат вне всех полигонов.
  6. Скачайте результаты: полигоны в GeoJSON и сводку в CSV, точки в CSV и GeoJSON, точки вне полигонов в CSV. CSV точек сохраняет разделитель исходного файла.

Данные и метод

Точки проверяются функцией booleanPointInPolygon библиотеки Turf.js 7.2.0 (лицензия MIT); полигоны с дырами и составные полигоны поддерживаются. Чтобы не сравнивать каждую точку с тысячами полигонов по очереди, ограничивающие прямоугольники полигонов помещаются в R-дерево RBush 3.0.1 (MIT), и точка сравнивается только с теми полигонами, чей прямоугольник её содержит. Точка ровно на границе считается внутренней. Площадь полигона рассчитывается сферическим методом Turf, плотность равна числу точек, делённому на эту площадь.

Файлы читаются в браузере: CSV библиотекой PapaParse 5.4.1 (MIT), Excel библиотекой SheetJS xlsx 0.18.5 (Apache-2.0), шейп-файлы библиотекой shpjs 6.1.0 (MIT), KML библиотекой @tmcw/togeojson 5.8.0 (BSD-2-Clause), KMZ библиотекой JSZip 3.10.1 (MIT). Координаты точек в метрах переводятся в WGS84 с помощью proj4js 2.9.0 (MIT); для ED50 применяется преобразование EPSG:1784 (ED50 to WGS 84 (30)), заданное для Турции. Подложки принадлежат Esri и участникам OpenStreetMap. Содержимое файлов никогда не отправляется на сервер; загружаются только тайлы карты и эти библиотеки. Если вы согласились на аналитические cookie, анонимно учитываются только названия событий, например «анализ выполнен». Используемые библиотеки с открытым исходным кодом и их лицензии: Источники данных.

Ограничения точности

Для организаций

Управление адресами, геокодирование и массовое сопоставление адресных списков с границами входят в круг задач, которыми занимается Rodosto. Подробнее на сайте rodostoteknoloji.com, вопрос можно задать через страницу контактов.

Частые вопросы

Как узнать, в каком районе находится каждый адрес из таблицы?

Сначала для каждого адреса нужны широта и долгота; адреса без координат переводятся в координаты геокодированием. Затем загрузите таблицу как файл точек, а границы районов (GeoJSON, шейп-файл или KML) как файл полигонов. Инструмент добавит к каждой строке название и другие атрибуты района, в который она попадает.

Как учитываются точки на границе полигона?

Точка ровно на границе считается лежащей внутри полигона. Поэтому точка на общей границе двух соседних полигонов может быть учтена в обоих; тогда в столбце pip_matches будет 2, а точке присваиваются атрибуты первого по порядку в файле полигона.

Что проверить при загрузке шейп-файла?

Шейп-файл загружается одним zip-архивом с файлами .shp, .shx, .dbf и .prj. Файл .prj описывает систему координат, по нему полигоны переводятся в WGS84; без него полигоны в метрах прочитать нельзя.

Загружаются ли мои файлы на сервер?

Нет. Файлы точек и полигонов читаются и сопоставляются в браузере, их содержимое никуда не отправляется. Из интернета загружаются только тайлы карты (Esri, OpenStreetMap) и библиотеки с открытым кодом (jsDelivr).