У мене є набір точок як файл форми, і я хочу знайти (координати) нової точки, яка матиме найдовшу відстань від кожної з існуючих точок. Це можливо? Якщо так, чи є зразок коду VB? Спасибі Деметрис
У мене є набір точок як файл форми, і я хочу знайти (координати) нової точки, яка матиме найдовшу відстань від кожної з існуючих точок. Це можливо? Якщо так, чи є зразок коду VB? Спасибі Деметрис
Відповіді:
Рекомендація Кірка Куйкендала побудувати сферичну діаграму Вороного (полігони Тіссена) є хорошою, однак, можливо, доведеться вирішити деякі технічні пристосування. Тим часом як альтернативу можна застосувати стандартний растровий розчин, як описано в іншій нитці . Використовуйте сферичні відстані замість евклідових відстаней.
Ось приклад з використанням п'яти пунктів, наведених як (lat, lon):
82.7051 -145.256
60.3321 81.2881
-17.076 105.125
-38.792 -122.686
0.000 180.000
Ця сферична карта відстані охоплює земну кулю від -180 до 180 градусів довготи по горизонталі та від -90 до 90 градусів широти по вертикалі. Точки зображені великими червоними крапками. Відстані збільшуються із яскравістю. Удавані хребти повинні бути частинами великих кіл. Маленька чорна крапка поблизу (-15.3268, -2.04352) позначає точку максимальної відстані 11 227 км. (Відстані були обчислені в еліпсоїдальній даті ITRF00.)
Дозвіл цієї сітки - один градус. Щоб отримати більш точне рішення, можна збільшити масштаб такої точки (і будь-який інший локальний максимум з достатньо близьким значенням до глобального максимуму) і повторити обчислення на меншій, але з більш високою роздільною здатністю сітці.
Я ніколи цього не пробував, але здається, що це спрацювало б:
Створіть тривимірну вороной діаграму сфери. Отримані полігони будуть орієнтовані приблизно на вихідні (насінні) точки.
Проведіть через кожну отриману вершину, щоб знайти ту, яка знаходиться найдалі від її найближчої існуючої точки. Ця точка повинна бути найбільш віддаленою точкою на земній кулі.
Ви можете скористатися функцією відстані у ваговій формі, щоб визначити, наскільки далеко від усіх інших точок відстає кожна клітинка вашого растру.
Наскільки я знаю, цей " полюс неприступності " аналіз повинен бути зроблений повторно.
Ітераційний растровий підхід був би доцільним, якщо ви дивитесь на невелику ділянку з мінімальними спотвореннями від проекції. Для кожної комірки обчисліть відстань до всіх точок, а потім пройдіть мінімальну відстань. Клітина з найвищим значенням - полюс. Ви також можете використовувати евклідову відстань у просторовому аналітику для цього.
Ітеративний векторний підхід є складнішим. Garcia-Castellanos et al 2007 описують ітераційний метод, заснований на земній кулі. Схоже, вони зробили свій C код доступним в Інтернеті . Я можу уявити способи зробити це в Arc з буферами, але це все одно буде ітеративним і повільним.
Ви можете використовувати відстань точок (аналіз) Інструмент створює таблицю з відстанями між двома наборами точок. якщо використовується радіус пошуку за замовчуванням, розраховуються відстані від усіх вхідних точок до всіх близьких точок. Вихідна таблиця може бути досить великою. Наприклад, якщо вхідні та близькі функції мають по 1000 балів кожен, то таблиця виводу може містити один мільйон записів.
Найдальшою точкою у вашому наборі точок було б зворотне відношення до самої внутрішньої точки у вашому наборі. Наприклад, якщо у вашій внутрішній точці у вашому наборі були координати 49 градусів на північ та -144 градуси на схід, то зворотна та найдальша точка мали б координати 49 градусів на південь та 36 градусів на захід. Це не зовсім так, тому що Земля не є абсолютно сферичною, скоріше геоїдальною; отже, правильність результату дуже багато залежить від того, які проекційні та географічні системи (ортографічні, орторектифіковані ...) ви використовуєте. Це може бути корисно знайти зворотний зв'язок для всього набору (перенести антипод для набору), а потім виконати аналіз поверхні в місцевості, охопленій набором антиподів, оскільки місцевість може бути дуже великою. Я припускаю, що ваше питання стосується не будь-яких точок на іноземних тілах, таких як інші планети чи місяці. Вибачте, Я не маю для вас коду VB. 🙄