Autor Zpráva
David Klouček
Profil
Mám v DB uložené záznamy a u každého souřadnice místa. Potom si určím oblast a v ní se je snažím najít, ale nenajde to nic. Tak jsem si našel funkční příklad se státem Colorado a přidal tam i ČR.

CREATE TABLE IF NOT EXISTS `stuff` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
  `lat` decimal(12,7) NOT NULL,
  `lon` decimal(12,7) NOT NULL,
  `location` point NOT NULL,
  primary key(id)
) ENGINE=innodb  DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

-- první záznam je nějaký bod v USA, druhý praha
INSERT INTO `stuff` (`lat`, `lon`, `location`) VALUES
(40.2488450, -103.8003460, GeomFromText('POINT(40.248845 -103.800346)')),
(50.084292, 14.3903, GeomFromText('POINT(50.084292 14.3903)'));

-- tady se hledá v oblasti v USA - funguje
SELECT *, AsText(location) FROM stuff 
WHERE Contains(GeomFromText('POLYGON((
41.000497 -109.050149,
41.002380 -102.051881,
36.993237 -102.041959,
36.999037 -101.045220,
41.000497 -109.050149
))'), location );

-- tady v ČR - nevrátí nic
SELECT *, AsText(location) FROM stuff
WHERE Contains(GeomFromText('POLYGON((
50.835801 12.019306,
50.585351 17.666278,
48.859678 18.017840,
49.119209 11.612812,
50.835801 12.019306
)'), location);

Je záhadou proč to nejde. Polygon je snad správně, pro Colorado vypadá takhle:



A pro ČR:



Živá ukázka: http://sqlfiddle.com/#!2/1624a8/1
_es
Profil
David Klouček [#1]:
Nejako ti tam nesedia zátvorky.
David Klouček
Profil
Jo dík, už to jde. Zvláštní, jak člověk vždycky marně hledá chybu v největší kravině.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: