I casi border-line: MySQL Point-in_Polygon funzione Risultati in duplicati Quando il punto si trova al confine

StackOverflow https://stackoverflow.com/questions/3122088

  •  30-09-2019
  •  | 
  •  

Domanda

Sto usando MySQL per tirare anela lat da un database e verificare se sono in un particolare quartiere.

Tutto grandi opere, a meno che il punto è al confine tra due quartieri. Quindi, il punto è incluso in entrambi i quartieri. Essa viene duplicato. Qual è il modo migliore per gestire i punti che si trovano sul confine?

Ogni punto deve essere contato in un solo neighborhood-- non entrambe. Inoltre, io non voglio, per esempio, quartiere un per ottenere tutti i casi di confine, ma il quartiere confinante, quartiere di B, per arrivare a zero i casi.

Immaginate che il punto di 30,3030, -70,7070 si trova al confine tra Newport e Oldport. Purtroppo, il punto viene contato due volte. Esso viene registrato come sia Oldport e Newport.

  

tipo | latitudine | longitudine | vicinato

small |  30.3030  | -70.7070  | Newport
small |  30.3030  | -70.7070  | Oldport
small |  30.3344  | -70.7274  | Anotherport

I utilizzare l'istruzione SELECT di seguito:

SELECT t.type, t.latitude, t.longitude, s.neighborhoods 
  FROM my_type_table t, neighborhood_shapes s
WHERE myWithin(POINTFROMTEXT( CONCAT( 'POINT(', t.latitude, ' ', t.longitude, ')' ) ) , s.neighborhood_polygons )) = 1

my_type_table ha colonne:

  • tipo (VARCHAR)
  • latitudine (decimale)
  • longitudine (decimale)

... e neighborhood_shapes ha colonne:

  • quartieri (VARCHAR)
  • neighborhood_polygons (geometria)

Io uso la funzione myWithin per verificare se il punto è in un quartiere o in un altro. Ecco un link ad esso: myWithin funzione al forum mySQL . La funzione restituisce 1 quando il punto è nel poligono e 0 quando non è nel poligono.

Come vi risolvere questo problema? Qualche consiglio?

È stato utile?

Soluzione

Va bene, ho capito. C'era una piccola sovrapposizione in alcuni dei poligoni. Così, quando la funzione di corse ha messo il punto in entrambi i quartieri.

Grazie.

-Laxmidi

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