Шкафы по границе: функция mysql point-in_polygon приводит к дубликатам, когда точка на границе
-
30-09-2019 - |
Вопрос
Я использую MySQL, чтобы вытащить LAT от базы данных и проверять, есть ли они в определенном районе.
Все работает отлично, за исключением случаев, если точка находится на границе между двумя кварталами. Затем точка включена в оба района. Это дублируется. Какой лучший способ обрабатывать очки, которые находятся на границах?
Каждая точка должна считаться только в одном районе - не оба. Кроме того, я не хочу, например, соседство A, чтобы получить все пограничные случаи, но граничащие соседства, соседство B, чтобы получить нулевые случаи.
Представьте, что точка 30.3030, -70.7070 лежит на границе между Ньюпортком и Олдомпорт. К сожалению, точка считается дважды. Он записан как как в OldPort, так и в Ньюпорт.
Тип |. широта |. долгота |. район
small | 30.3030 | -70.7070 | Newport small | 30.3030 | -70.7070 | Oldport small | 30.3344 | -70.7274 | Anotherport
Я использую оператор выбора ниже:
SELECT t.type, t.latitude, t.longitude, s.neighborhoods
FROM my_type_table t, neighborhood_shapes s
WHERE myWithin(POINTFROMTEXT( CONCAT( 'POINT(', t.latitude, ' ', t.longitude, ')' ) ) , s.neighborhood_polygons )) = 1
my_type_table есть столбцы:
- Тип (varchar)
- широта (десятичная)
- долгота (десятичная)
... и Socorthhood_shapes имеет столбцы:
- Окрестности (Варечар)
- Sockethood_Polygons (геометрия)
Я использую функцию Mywithin для проверки, является ли точка в одной окрестности или другой. Вот ссылка на него: Mywithin Функция на MySQL Forum Отказ Функция возвращает 1, когда точка находится в многоугольнике и 0, когда она не в многоугольнике.
Как бы вы решили эту проблему? Любой совет?
Решение
Хорошо, я понял это. В некоторых многоугольниках было очень маленькое совпадение. Итак, когда функция провела, она поставила точку в оба района.
Спасибо.
-Laxmidi.