Domanda

Ho lavorato in Postgis per il punto in poli di e ho questa funzione:

select * from table_name dove ST_Contains (colonna, st_setsrid (st_makepoint (-92,095109, 46,804 mila cento), 4326));

la colonna è una Multipoly (((punti)))

Sto cercando di trovare un modo per fare un esercizio simile con MySQL, e si chiese se ci fossero funzioni analoghe a farlo. Il sito dev per MySQL è molto limitato con le descrizioni e documentazioni sul Multipolys.

Qualcuno ha fatto qualcosa di simile?

È stato utile?

Soluzione

MySQL non implementa un sacco di interrogazioni spaziali - non so per sicuro contiene, ma ci sono modi di ravvicinare e altre funzioni. Ad esempio, si può fare distanze tra i punti tirando tutti i risultati con coordinate in un dato rettangolo e quindi calcolare la distanza come descritto qui. È inoltre possibile utilizzare rettangoli un'approssimazione del problema contains. In primo luogo, una sintassi più generale WKT per il vostro prescelto:

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

Credo che la specifica aperta per contains non è implementata, ma c'è una funzione di MySQL per l'utilizzo di un rettangolo di delimitazione sul ravvicinamento se il punto è nel poligono:

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

Ho finito per usare un sacco di rettangoli in generale su MySQL perché è facile calcolare i limiti esterni delle coordinate set. PostGIS Nel complesso è molto meglio, ma si può fare un paio di cose tra database se è necessario.

UPDATE : Dopo questa domanda è stato chiesto un bel riassunto è stato inviato alle opengeo.org; sembra che anche dove non è ovvio o dichiarato MySQL utilizza spesso MBR. Anche guardare il Postgres nativi tipi point, lseg, box, path, polygon, e circle se si vuole capire di più su come funziona PostGIS e perché la sua caratteristica esecutori 2D hanno una fila più corta a zappare in generale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top