Случаи границы: функция MySQL Point-in_Polygon приводит к дубликатам, когда точка находится на границе - PullRequest
0 голосов
/ 26 июня 2010

Я использую MySQL для извлечения длинных длин из базы данных и проверки, находятся ли они в определенном районе.

Все отлично работает, за исключением случаев, когда точка находится на границе между двумя окрестностями. Тогда точка входит в обе окрестности. Это дублируется. Как лучше всего обрабатывать точки на границах?

Каждая точка должна учитываться только в одном районе, а не в обоих. Кроме того, я не хочу, например, для района А получить все пограничные случаи, а для соседнего района Б - нулевые.

Представьте, что точка 30.3030, -70.7070 лежит на границе между Ньюпортом и Олдпортом. К сожалению, точка засчитывается дважды. Он записывается как в Олдпорте и Ньюпорте.

тип | широта | долгота | окрестности

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)
  • широта (десятичная)
  • долгота (десятичная)

... и окрестности имеют столбцы:

  • окрестностей (VARCHAR)
  • окрестности_полигоны (геометрия)

Я использую функцию myWithin, чтобы проверить, находится ли точка в той или иной окрестности. Вот ссылка на него: Функция myWithin на форуме mySQL . Функция возвращает 1, когда точка находится в многоугольнике, и 0, когда ее нет в многоугольнике.

Как бы вы решили эту проблему? Любой совет?

1 Ответ

0 голосов
/ 28 июня 2010

Хорошо, я понял это. В некоторых многоугольниках было очень небольшое совпадение. Таким образом, когда функция запускается, она помещает точку в обе окрестности.

Спасибо.

-Laxmidi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...