|
|
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
Здрасте! Создал таблицу для хранения геометрической фигуры. Помещаю туда точку. Код: sql 1. 2. 3. 4. 5. у меня есть многоугольник (полигон), я хочу узнать входит ли это точка в мой многоугольник Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. все вроде хорошо, но делаю так и ругается на синтаксис... #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT AsText(g) FROM `geom` WHERE GISWithin(g, @poly)' at line 2 не могу понять что он хочет... если перезапустить сервер и делать просто Код: sql 1. то этот простой запрос работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 12:12:29 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
однобитныйЗдрасте! Создал таблицу для хранения геометрической фигуры. Помещаю туда точку. Код: sql 1. 2. 3. 4. 5. у меня есть многоугольник (полигон), я хочу узнать входит ли это точка в мой многоугольник Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. все вроде хорошо, но делаю так и ругается на синтаксис... #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT AsText(g) FROM `geom` WHERE GISWithin(g, @poly)' at line 2 не могу понять что он хочет... если перезапустить сервер и делать просто Код: sql 1. то этот простой запрос работает никогда не имел дело с подобным, НО просто зайдя на страницу документации понял 1)функция ждёт mp MULTIPOLIGON 2)такой тип строиться путём MULTIPOLYGON(poly1,poly2) 3)poly1 = POLYGON(ls11,ls12), poly2 = POLYGON(ls21,ls22) 4)ls11 = LINESTRING(pt111,pt112,pt113), ls12....... 5)pt111 = POINT(0 0);..... Тоесть задание мультиполигона с полигоном типо кдвадрата 00 11 01 10 будет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:01:50 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, результат функции astext вполне может быть такой, какого ожидает функция ТСа (пример с лайнстрингом тут ). Другое дело, что функция ТСа ожидает именно полигон, а не мультиполигон. Но я не понимаю, начешуя это всё нужно, если есть куча встроенных функций. И тем более я не понимаю, почему ТС использует MBR-функции, но не использует "точные" функции, расположенные в соседнем разделе хелпа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:12:19 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
спасибо, думал что мультиполигон пропускает полигоны, точки и т.д. как geometry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:13:25 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
tangliralex564657498765453, результат функции astext вполне может быть такой, какого ожидает функция ТСа (пример с лайнстрингом тут ). Другое дело, что функция ТСа ожидает именно полигон, а не мультиполигон. Но я не понимаю, начешуя это всё нужно, если есть куча встроенных функций. И тем более я не понимаю, почему ТС использует MBR-функции, но не использует "точные" функции, расположенные в соседнем разделе хелпа я был бы рад, если бы вы кинули ссылкой, на штатную функцию определения точки внутри полигона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:20:37 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
однобитный, последняя ссылка в предыдущем посте. ST_within. Разве не оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:31:31 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
tangliralex564657498765453, результат функции astext вполне может быть такой, какого ожидает функция ТСа (пример с лайнстрингом тут ). Другое дело, что функция ТСа ожидает именно полигон, а не мультиполигон. Но я не понимаю, начешуя это всё нужно, если есть куча встроенных функций. И тем более я не понимаю, почему ТС использует MBR-функции, но не использует "точные" функции, расположенные в соседнем разделе хелпа я и сам это хотел дописать, но запнулся на тестах у себя... почему не работает Код: sql 1. 2. 3. 4. пишет ошибку что р1 не геометрическая фигура!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:35:41 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
но что-то не хочет работать со штатными... SELECT * FROM `geom` WHERE ST_Intersects(GeomFromText('PONT(55.753575000000 37.621040000000)'), GeomFromText('POLYGON(55.78285293197814 37.546170438598594, 55.728061591974 37.5458271158447, 55.73271120739292 37.695859159301726, 55.78846322660012 37.67148324377439, 55.78285293197814 37.546170438598594)')); SELECT * FROM `geom` WHERE ST_Intersects(GeomFromText('POLYGON(55.78285293197814 37.546170438598594, 55.728061591974 37.5458271158447, 55.73271120739292 37.695859159301726, 55.78846322660012 37.67148324377439, 55.78285293197814 37.546170438598594)'),GeomFromText('PONT(55.753575000000 37.621040000000)')); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:36:42 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
alex564657498765453 я и сам это хотел дописать, но запнулся на тестах у себя... почему не работает Код: sql 1. 2. 3. 4. пишет ошибку что р1 не геометрическая фигура!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:36:53 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
alex564657498765453почему не работаетпотому что, насколько я могу судить из доки , лайнстринг задаётся не так. У меня вышеприведённый код отрабатывает без ошибок, но результат - NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 13:58:34 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
tangliralex564657498765453почему не работаетпотому что, насколько я могу судить из доки , лайнстринг задаётся не так. У меня вышеприведённый код отрабатывает без ошибок, но результат - NULL. :) да я и сам доки почитал, но английский я знаю плохо, а не работал с геометрией ваще в базе... есть два формата - строка текста, и бинарное представление функция linestring строит тип ЛИНИЯ из точек или бинарного представления точек итого Код: sql 1. 2. 3. 4. 5. так что вопрос остаёться в силе, почему??? Код: sql 1. 2. в выводе 1 колонка отличаеться от 2 и 3. видимо WKB - well known binary, и геометрический тип это не совсем одно и тоже. геометрический тип, это как тип текст(который может быть в разной кодировке) а бинарное представление геометрического обьекта - это посути внутренее хранение типа + указатель на тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 14:49:00 |
|
||
|
(MySQL 5.5.36) spatial, работа с геометрией
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. к слову Код: sql 1. 2. видать, если мы в процедуре обьявим переменую как точка, тогда строка 1 заработает, а просто отправляя кусок кода с перемеными, не срабатывает ибо идёт автопреобразование... по сути получаеться Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 14:52:36 |
|
||
|
|

start [/forum/moderation_log.php?user_name=Gospel_Soldier]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 3775ms |
| total: | 3977ms |

| 0 / 0 |
