У меня есть два слоя: точечный слой, определяющий свойства (95 объектов), и слой многоугольника, определяющий участки земли, связанные со свойствами (211 объектов). Каждая точка относится к одному или нескольким полигонам. Я хотел бы создать таблицу расстояний каждой точки до ВСЕХ многоугольников, связанных с этой точкой (ближайший край или центроид многоугольника - подойдет любой). Вычисление ближайшего расстояния относительно просто в QGIS и ArcGIS, но в этих вычислениях опущены все удаленные полигоны, по крайней мере, теми методами, которые я использовал. В идеале я хотел бы вывод
Point_ID | distance to polygon 1 | distance to polygon 2 | distance to polygon 3 | etc.
Любые указатели в ArcGIS 10 или QGIS 2.2+ будут наиболее полезными.
Ответы:
Для этого вы можете использовать матрицу расстояний в QGIS. Сначала вам нужно будет преобразовать полигоны в точки центроида либо с помощью Vector > Geometry Tools > Polyroid centroids, либо с помощью SAGA-версии многоугольных центроидов. Причиной этого является функция матрицы расстояний, которая может анализировать только между двумя точечными слоями. Кроме того, вывод будет выглядеть так:
Выводом будет файл .csv, чтобы вы могли вручную редактировать макет с помощью другого программного обеспечения, такого как Microsoft Excel.
источник
Это довольно просто сделать, используя QGIS (думаю, подойдет любая версия) и очень простой оператор SQL в менеджере БД. Но для этого вы должны быть в какой-то пространственной базе данных (Postgis или пространственный). Поскольку он более доступен для большинства людей, я предполагаю использовать пространственный, но операторы SQL одинаковы для Postgis.
Расстояние от всех точек до всех границ полигонов
Расстояние до всех точек до границ связанных полигонов (при условии, что существует общее поле)
Расстояние до всех точек до связанных многоугольников центроидов :
Обратите внимание, что вы можете добавить любое поле из ваших слоев к результату:
Или даже все поля:
источник
Инструмент « Создать ближнюю таблицу» в ArcGIS будет делать то, что вы хотите, но он требует расширенной лицензии и будет делать это для всех точек / многоугольников, а не только для тех, которые связаны друг с другом. Это означает, что для каждого из ваших 95 объектов вы получите ранжированное расстояние для всех 211 свойств, то есть 20 045 строк в таблице. Вам нужно будет либо отфильтровать полученную таблицу, либо, как Эмиль предлагает автоматизировать задачу, чтобы создать выборки на основе ассоциации и запускать ее только в этих группах.
Что касается фильтрации, да, объединение (за которым следует запрос или выбор определения) - это все, что вам нужно. Результат инструмента дает вам IN_FID и NEAR_FID. В зависимости от того, как вы запустите инструмент (свойства рядом с точкой или свойство точки рядом), определите, какой FID является каким. Затем вы присоединяете свои таблицы точек и свойств (обе) к результату инструмента на основе соответствующего FID.
Это предполагает, что каждая из ваших 211 записей свойств имеет атрибут, который говорит, к какой из 95 точек они принадлежат, поскольку следующим шагом является выбор (или запрос определения) всех записей в объединенной таблице (таблицах), где два поля одной записи должны поле имени совпадающей точки = свойство связанное поле имени точки. Случаи, когда они не совпадают, представляют собой полигоны, которые не связаны с этой точкой, поэтому вам не важно их расстояние от этой точки.
источник