выберите строку из базы данных MySQL на основе широты, длинных координат многоугольника - PullRequest
2 голосов
/ 10 июля 2011

В базе данных mysql у меня есть таблица географических областей, в которой у каждой строки есть идентификатор и набор координат (широта, длина) вершин многоугольника, который составляет область (может быть неограниченным числом вершин) имаркер как таковой:

  id  |              poly_coords             |    marker
------|--------------------------------------|-------------
  0   | x1,y1|x2,y2|x3,y3|x4,y4|x4,y4|x4,y4| |      0
---------------------------------------------|-------------
  1   | x1,y1|x2,y2|x3,y3|x4,y4|x4,y4|x4,y4| |      0
---------------------------------------------|-------------
  .                      .                          .
  .                      .                          .
  .                      .                          .

То, что я пытаюсь сделать, это когда задана определенная координата X, Y:

  1. Если маркер == 0, мне нужновыберите строку (и), в которой заданные координаты X, Y будут находиться внутри многоугольника или где координаты X, Y находятся на определенном расстоянии от многоугольника.

  2. Если маркер == 1 Вершины - это точки на линии (т. Е. Область поли = 0), и мне нужно выбрать строку (и), где координаты X, Y находятся в пределахопределенное расстояние от линии.

Я не уверен, как начать здесь.Как я могу сделать это с помощью запроса MySql?Должен ли я использовать другие методы в сочетании с несколькими запросами, чтобы сделать эту работу?

1 Ответ

1 голос
/ 10 июля 2011

Вы можете проверить эту ссылку: http://www.sql -statements.com / point-in-polygon.html Это должно обеспечить базовое начало для решения вашей проблемы. Я бы начал с создания хранимой процедуры для преобразования столбца poly_coords в массив строк, каждая из которых представляет «x, y» (или «x | y», если вы рассматриваете использование 0,0 в качестве значения для координат вместо 0,0). После этого вы можете внести некоторые изменения в метод, указанный в ссылке, для достижения требуемой функциональности. Я бы предоставил больше помощи, но у меня нет доступа ни к MySql, ни к другим sql. Другой подход заключается в создании таблицы, как в ссылке, таким образом, вам не потребуется фактически анализировать строки координат

...