Поиск по координатам excel
Необходимо составить запрос на выборку всех записей, которые находятся (по координатам longitude и latitude) в радиусе N метров от точки A (координаты которой известны).
P.S. До этого координаты хранил с помощью типа POINT, но после долгих поисков в интернете понял, что в MySQL очень урезаны возможности работы с этим типом, в отличие, к примеру, от PostgreSQL (PostGIS). Собственно по этому и пришлось перейти на хранение значений долготы и широты в разных полях.
- Вопрос задан более трёх лет назад
- 16793 просмотра
А не могли бы вы помочь конкретными запросами? Эту документацию я читал, но, к сожалению, так конкретно и не понял как составить нужный запрос.
При создании индекса
ALTER TABLE `my_table` ADD SPATIAL INDEX ( `coordinates` ) ;
выдает ошибку
Cannot get geometry object from data you send to the GEOMETRY field
А все, с индексом разобрался — некоторые записи в таблице имели «пустые» поля coordinates.
Теперь бы разобраться с запросом. Выборка в пределах квадрата, как я понимаю, делается так, верно?
SELECT * FROM `my_table` WHERE MBRWithin(`coordinates`, GeomFromText('Polygon((50.456736 30.510540, 50.455690 30.510540, 50.455690 30.513295, 50.456736 30.513295))')) = 1;
А как теперь все это обрезать до окружности? И здесь же нужно знать координаты углов квадрата, а у нас известны только координаты точки, в радиусе которой необходимо произвести поиск, ну и собственно сам радиус.
Выборка в пределах квадрата у вас не верная, полигон нужно замкнуть на первую точку иначе не заработает функция.
Дело в том, что расстояние разное в разных частях света, но я честно говоря уже не помню как это считается, но можно сделать иначе. Допустим есть координаты человека $q=array(55,44); Тогда что бы узнать длину одного градуса долготы на его широте, проверяем функцией расстояние:
Теперь количество градусов в 1 км:
Ну и для получения сторон квадрата:
Ну и что бы срезать до окружности дописываете в HAVING обычную теорему пифагора, только уже учитывая нужное количество градусов:
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Описание
В этой статье приведены пошаговые инструкции по поиску данных в таблице (или диапазоне ячеек) с помощью различных встроенных функций Microsoft Excel. Для получения одного и того же результата можно использовать разные формулы.
Создание образца листа
В этой статье используется образец листа для иллюстрации встроенных функций Excel. Рассматривайте пример ссылки на имя из столбца A и возвращает возраст этого человека из столбца C. Чтобы создать этот лист, введите указанные ниже данные в пустой лист Excel.
Введите значение, которое вы хотите найти, в ячейку E2. Вы можете ввести формулу в любую пустую ячейку на том же листе.
Определения терминов
В этой статье для описания встроенных функций Excel используются указанные ниже условия.
Определение
Вся таблица подстановки
Значение, которое будет найдено в первом столбце аргумента «инфо_таблица».
Просматриваемый_массив
-или-
Лукуп_вектор
Диапазон ячеек, которые содержат возможные значения подстановки.
Номер столбца в аргументе инфо_таблица, для которого должно быть возвращено совпадающее значение.
3 (третий столбец в инфо_таблица)
Ресулт_аррай
-или-
Ресулт_вектор
Диапазон, содержащий только одну строку или один столбец. Он должен быть такого же размера, что и просматриваемый_массив или Лукуп_вектор.
Логическое значение (истина или ложь). Если указано значение истина или опущено, возвращается приближенное соответствие. Если задано значение FALSE, оно будет искать точное совпадение.
Число столбцов, находящегося слева или справа от которых должна указываться верхняя левая ячейка результата. Например, значение "5" в качестве аргумента Оффсет_кол указывает на то, что верхняя левая ячейка ссылки состоит из пяти столбцов справа от ссылки. Оффсет_кол может быть положительным (то есть справа от начальной ссылки) или отрицательным (то есть слева от начальной ссылки).
Функции
LOOKUP ()
Функция Просмотр находит значение в одной строке или столбце и сопоставляет его со значением в той же позицией в другой строке или столбце.
Ниже приведен пример синтаксиса формулы подСТАНОВКи.
= Просмотр (искомое_значение; Лукуп_вектор; Ресулт_вектор)
Следующая формула находит возраст Марии на листе "образец".
= ПРОСМОТР (E2; A2: A5; C2: C5)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в векторе подстановки (столбец A). Формула затем соответствует значению в той же строке в векторе результатов (столбец C). Так как "Мария" находится в строке 4, функция Просмотр возвращает значение из строки 4 в столбце C (22).
Примечание. Для функции Просмотр необходимо, чтобы таблица была отсортирована.
Чтобы получить дополнительные сведения о функции Просмотр , щелкните следующий номер статьи базы знаний Майкрософт:
Функция ВПР или вертикальный просмотр используется, если данные указаны в столбцах. Эта функция выполняет поиск значения в левом столбце и сопоставляет его с данными в указанном столбце в той же строке. Функцию ВПР можно использовать для поиска данных в отсортированных или несортированных таблицах. В следующем примере используется таблица с несортированными данными.
Ниже приведен пример синтаксиса формулы ВПР :
= ВПР (искомое_значение; инфо_таблица; номер_столбца; интервальный_просмотр)
Следующая формула находит возраст Марии на листе "образец".
= ВПР (E2; A2: C5; 3; ЛОЖЬ)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в левом столбце (столбец A). Формула затем совпадет со значением в той же строке в Колумн_индекс. В этом примере используется "3" в качестве Колумн_индекс (столбец C). Так как "Мария" находится в строке 4, функция ВПР возвращает значение из строки 4 В столбце C (22).
Чтобы получить дополнительные сведения о функции ВПР , щелкните следующий номер статьи базы знаний Майкрософт:
INDEX () и MATCH ()
Вы можете использовать функции индекс и ПОИСКПОЗ вместе, чтобы получить те же результаты, что и при использовании поиска или функции ВПР.
Ниже приведен пример синтаксиса, объединяющего индекс и Match для получения одинаковых результатов поиска и ВПР в предыдущих примерах:
= Индекс (инфо_таблица; MATCH (искомое_значение; просматриваемый_массив; 0); номер_столбца)
Следующая формула находит возраст Марии на листе "образец".
= ИНДЕКС (A2: C5; MATCH (E2; A2: A5; 0); 3)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Затем он будет соответствовать значению в той же строке в столбце C. Так как "Мария" находится в строке 4, формула возвращает значение из строки 4 в столбце C (22).
СМЕЩ () и MATCH ()
Функции СМЕЩ и ПОИСКПОЗ можно использовать вместе, чтобы получить те же результаты, что и функции в предыдущем примере.
Ниже приведен пример синтаксиса, объединяющего смещение и сопоставление для достижения того же результата, что и функция Просмотр и ВПР.
= СМЕЩЕНИЕ (топ_целл, MATCH (искомое_значение; просматриваемый_массив; 0); Оффсет_кол)
Эта формула находит возраст Марии на листе "образец".
= СМЕЩЕНИЕ (A1; MATCH (E2; A2: A5; 0); 2)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Формула затем соответствует значению в той же строке, но двум столбцам справа (столбец C). Так как "Мария" находится в столбце A, формула возвращает значение в строке 4 в столбце C (22).
Чтобы получить дополнительные сведения о функции СМЕЩ , щелкните следующий номер статьи базы знаний Майкрософт:
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 для Mac Excel для iPad Excel для iPhone Excel для планшетов с Android Excel для телефонов с Android Excel Mobile Еще. Меньше
С помощью диаграммы с картой можно сравнивать значения и показывать категории по географическим регионам. Используйте ее, если ваши данные включают географические регионы (например, сведения о странах, областях или почтовых индексах).
Скачивание примеров
Вы можете скачать книгу с несколькими примерами диаграмм с картами, как в этой статье.
На диаграммах с картами значения и категории могут отображаться по-разному. Значения представляются небольшими вариантами двух–трех цветов. Категории представлены разными цветами.
Например, на приведенной ниже диаграмме Countries by Tax Revenue % используются значения. Значения представляют налоговый доход в каждой стране, каждый из которых представлен с использованием спектра двух цветов градиента. Цвет для каждой области определяется местом, в котором находится его значение в спектре. По умолчанию чем выше значение, тем темнее соответствующий цвет.
В приведенном ниже примере карты стран по численности населения для отображения категорий используется легенда, чтобы показать группы или связи. Каждая страна представлена разными цветами.
Создание диаграммы с картой с типами данных
Диаграммы с картами стали еще проще благодаря географическим типам данных. Просто ввести список географических значений, таких как страна, область, округ, город, почтовый индекс и так далее, а затем выберите свой список и перейдите на вкладку Данные > Типы данных >Geography. Excel данные будут автоматически преобразованы в географический тип данных и будут включать свойства, соответствующие этим данным, которые можно отобразить на диаграмме с картой. В следующем примере мы преобразуем список стран в географические типы данных, а затем выбрали налоговый доход (%). из области "Добавить столбец" для использования на карте.
Теперь нужно создать диаграмму с картой, поэтому выберем любую ячейку в диапазоне данных, а затем перейдите на вкладку Вставка > Диаграммы > Карты> Картас заливкой .
Если предварительный просмотр выглядит хорошо, нажмите кнопку ОК. В зависимости от данных Excel вставляется карта значений или категорий.
Совет: Если данные настроены как таблица Excel ,а затем вы добавите страну в список, Excel автоматически обновить их как географический тип данных и обновить связанную диаграмму с картой. Аналогично, если вы удалите страну, Excel также удалит ее с диаграммы.
Форматирование диаграммы с картой
После создания диаграммы с картой вы можете легко настроить ее оформление. Просто щелкните карту, а затем выберите вкладку Конструктор диаграмм или Формат на ленте. Вы также можете дважды щелкнуть диаграмму, чтобы запустить области задач Формат объекта ,которая появится в правой части окна Excel объекта. При этом на диаграмме с картой также будут доступны определенные параметры ряда (см. ниже).
Существует несколько параметров ряда диаграмм скартами, но они не поддерживаются на устройствах с Android и Excel Mobile. Если вам нужны некоторые параметры ряда карт, вы можете создать диаграмму в Excel для Windows или Mac и просмотреть ее на устройстве с Android или Excel Mobile.
Дополнительные сведения см. в статье Форматирование диаграмм с картой.
Проекции карты— изменение стиля проекции карты. По умолчанию Excel будет отображаться наиболее эффективный стиль.
Область карты: изменение масштаба карты в представлении области или края до всемирного представления.
Подписи на карте— показывать географические названия стран и регионов. Выберите отображение названий по размещению или всех надписей.
Вопросы и ответы
Ответ. Если вы используете данные, в которых может быть несколько похожих мест в мире, диаграммы с картами не могут различить их без дополнительных указаний. По возможности добавьте столбец с подробными данными более высокого уровня. Например, следующие расположения могут не совпадать с тем, как вы ожидаете, так как в мире есть много мест, где есть допустимые названия округов:
Однако данные должны правильно соотвяться, если добавить еще один столбец для более высокого уровня детализации, в данном случае — Province — это называется Устранение неоднозначности.
Если имеется несколько уровней географических данных, необходимо разделить каждый уровень на отдельную ячейку или столбец. Например, "Вашингтон, США" (штат, страна) не будет успешно создавать карту. В этом случае данные будут успешно соблюском при размещении "Вашингтон" и "США" в отдельных столбцах.
данные, которые не соединяются (объединяются области и страна)
данных, которые создадут карту штата Вашингтон
Ограничения
На диаграммах с картами могут быть только географические данные высокого уровня, поэтому широта и долгота, а сопоставление улиц не поддерживается. Кроме того, на диаграммах с картами допустимо только одномерное отображение, поэтому для работы с многомерными данными используйте функцию 3D Maps в Excel.
При создании новых карт или добавлении данных на имеющиеся необходимо подключение к Интернету (для подключения к службе карт Bing).
Для просмотра имеющихся карт подключение к Интернету не требуется.
Существует известная проблема, из-за которой диаграммы с картами, в которых используются географические типы данных, иногда соеданы неправильно. При попытке отфиксировать эти поля, пока проблема не будет устранена, попробуйте включить в нее поля администрирования, например "Край" или "Страна".
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Всем привет и хорошего настроения!
Предлагаю Вашему вниманию мою реализацию в Excel формулы гаверсинусов.
Первоисточник - вики, можно найти ЗДЕСЬ. С указанным мной радиусом земли погрешность получается до 1%, можно улучшить если поиграть значением. Не рекомендуется для проверки расстояний между объектами, расположенными диаметрально противоположно друг от друга через центр планеты.
Во вложении есть развёрнутый пошаговый вариант расчётов. Если вкратце, то суть такая:
Всем привет и хорошего настроения!
Предлагаю Вашему вниманию мою реализацию в Excel формулы гаверсинусов.
Первоисточник - вики, можно найти ЗДЕСЬ. С указанным мной радиусом земли погрешность получается до 1%, можно улучшить если поиграть значением. Не рекомендуется для проверки расстояний между объектами, расположенными диаметрально противоположно друг от друга через центр планеты.
Во вложении есть развёрнутый пошаговый вариант расчётов. Если вкратце, то суть такая:
Предлагаю Вашему вниманию мою реализацию в Excel формулы гаверсинусов.
Первоисточник - вики, можно найти ЗДЕСЬ. С указанным мной радиусом земли погрешность получается до 1%, можно улучшить если поиграть значением. Не рекомендуется для проверки расстояний между объектами, расположенными диаметрально противоположно друг от друга через центр планеты.
Во вложении есть развёрнутый пошаговый вариант расчётов. Если вкратце, то суть такая:
Где А1:А4 - координаты точек, А11 - радиус Земли в километрах. Автор - Rioran
Дата добавления - 16.10.2015 в 15:24
Иногда все проще чем кажется с первого взгляда.
SLAVICK, спасибо за информацию. Да, формулы принципиально одинаковы и используют гаверсинусы. Вижу, что вроде AlexM первее всех это сделал - 09.07.2014 здесь. Только в той теме такой термин отсутствует, поэтому когда я гуглил форум - не нашёл, пришлось задублить =)
SLAVICK, спасибо за информацию. Да, формулы принципиально одинаковы и используют гаверсинусы. Вижу, что вроде AlexM первее всех это сделал - 09.07.2014 здесь. Только в той теме такой термин отсутствует, поэтому когда я гуглил форум - не нашёл, пришлось задублить =) Rioran
Новая версия макроса для Excel (VBA) для быстрого и удобного получения гео-координат/адресов из Yandex и Google. В качестве исходных данных на листе указывается список адресов (для получения координат) или список координат (для обратного геокодирования). Результаты запроса будут выведены в соседние ячейки.
Подробное описание
Некоторое время назад на сайте был опубликован макрос для получения координат из Yandex.
Несмотря на небольшой размер своего кода, макрос в удобном режиме позволяет по заданному списку адресов получать их geo-координаты (широту и долготу).
В текущей статье публикуем новый (доработанный) макрос для работы с координатами и адресами.
Изменения в новом макросе:
- Макрос может работать с API Яндекса и Гугла.
Для работы с сервисом Яндекса используйте лист "yandex", для работы с Гуглом - лист "google". Предыдущая версия работала только с Яндекс. - Из кода макроса исключен параметр KEY.
Это значит, что теперь не нужно получать ключ разработчика для корректной работы макроса. Теперь всё работает без KEY. Разумеется, общие ограничения сервисов по прежнему имеют место - это около 25 000 запросов в сутки с одного IP. При необходимости узнать более подробно о действующих ограничениях, следуйте по ссылкам: лимиты для яндекса, лимиты для гугл. - Добавлена возможность обратного геокодирования (определение адреса по долготе и широте).
Для работы с обратным геокодированием необходимо соблюдать несколько важных нюансов, касающихся формата записи строки с координатами:
- для Yandex координаты необходимо указывать в формате (через запятую, без пробелов): долгота,широта
- для Google координаты необходимо указывать в формате (через запятую, без пробелов): широта,долгота
В приложенном файле с макросом на соответствующих листах есть примеры как для Yandex, так и для Google. - Добавлена статистика по количеству обработанных строк.
Статистика начинает отображаться после запуска макроса. Наблюдать статистику можно в строке статус бара Excel. - Типы переменных для работы с XML переименованы в Object.
В предыдущей версии макроса типы были строго заданы как MSXML2.DOMDocument и MSXML2.IXMLDOMNodeList. Как следствие, возникали ошибки в процессе работы, если на ПК пользователя не было соответствующих библиотек "Microsoft XML".
Помимо указанных изменений, новый макрос содержит ряд других улучшений кода, в той или иной степени влияющих на корректность результата. По опыту, при тестировании макроса сервис Yandex показал более точный результат определения координат. Google, в свою очередь, показал более высокую скорость работы.
Также не забывайте, что оба сервиса хоть и служат одной и той же цели, но результат, полученный в каждом из них, немного отличается. Отличие не большое, но оно есть и, возможно, его стоит учесть. Поэтому, если этот момент вам принципиально важен, обязательно вручную проверьте результат в разных поисковых системах.
Для работы с макросом предварительно необходимо получить API-ключ для Yandex/Google. Видео с инструкцией, как подключить нужный API Yandex, можно посмотреть по ссылке.
Соответствующее значения API-ключа указывается на листе "Настройки".
В целом, для Yandex принципиально ничего не изменилось, а вот у Google с августа 2018 г. действуют новые условия получения API (необходимо регистрировать аккаунт Google Cloud Platform и привязывать к нему свою б/карту; после данных настроек суточный бесплатный лимит по-прежнему работает).
В случае неработоспособности данного макроса, перед написанием комментария и/или отправки писем на мой адрес обязательно ознакомьтесь со списком основных проблем и способами их решения.
Читайте также: