Pergunta

Eu tenho trabalhado em Postgis para ponto de poli e eu tenho essa função:

* seleccione a partir nome_da_tabela onde ST_Contains (coluna, st_setsrid (st_makepoint (-92,095109, 46,804100), 4326));

a coluna é uma multipoly (((pontos)))

Eu estou tentando encontrar uma maneira de fazer um exercício semelhante com MySQL, e se perguntou se havia funções similares a fazê-lo. O site dev para MySQL é muito limitado com as descrições e documentação sobre os Multipolys.

Alguém já fez algo assim?

Foi útil?

Solução

MySQL não implementa uma série de consultas espaciais - Não sei ao certo sobre contém, mas existem maneiras de aproximar-lo e outras funções. Por exemplo, você pode fazer as distâncias entre os pontos puxando todos os resultados com coordenadas em um determinado retângulo e, em seguida, calcular a distância conforme descrito aqui. Você também pode usar retângulos para uma aproximação do seu problema contains. Primeiro, uma sintaxe mais geral WKT para a sua escolha:

select * from table_name where contains(the_polygon, GeomFromText('POINT(12.3 45.6)');

Eu acho que a especificação aberta para contains não está implementado, mas há uma função MySQL para usar um href="http://en.wikipedia.org/wiki/Minimum_bounding_rectangle" rel="nofollow noreferrer"> mínimo para aproximar se o seu ponto é no polígono:

select * from table_name where MBRContains(the_polygon, GeomFromText('POINT(12.3 45.6)');

Eu acabei usando um monte de retângulos em geral sobre MySQL porque é fácil de calcular os limites exteriores de coordenar conjuntos. No geral PostGIS é muito melhor, mas você pode fazer algumas coisas entre banco de dados se você tiver que.

Atualização : Após esta pergunta foi feita a bom resumo foi enviada para opengeo.org; parece que, mesmo quando não é óbvio ou declarado MySQL usa frequentemente MBR. Também olhar para o point, lseg, box, path, polygon, postgres nativos tipos e circle se você quiser entender mais sobre como PostGIS funciona e por seus implementadores recurso 2d tem uma linha mais curta para cavar em geral.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top