Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[MySQL] Google Maps - Coordinaten in een polygon terug geven

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

ik ben al een heel tijdje bezig met een functionaliteit voor google maps.
Ik wil dat mijn sitebezoekers een vrije polygoon kunnen tekenen op de map en dat dan een query (met ajax) wordt uitgevoerd die de coordinaten uit een tabel haalt die binnen het polygoon vallen.

Nu had ik het bijna voor elkaar: http://mapki.com/wiki/Spatial_Data_in_MySQL.

Op het eerste zicht lijkt het allemaal goed te gaan, de punten binnen de polygoon worden opgehaald. Maar als je even nachecked, worden de punten opgehaald die binnen de uiterste grenzen van de polygoon liggen, een rechthoek zeg maar. Weet iemand hoe ik de punten die echt binnen de polygoon liggen krijg getoond?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Hoe haal je nu de punten op dan?
Je zult op de één of andere manier moeten interpoleren tussen de punten van je polygoon. Als je een selectie maakt met alleen de hoekpunten zonder interpolatie dan krijg je inderdaad het effect wat je nu beschrijft.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Dat is dus gewoon polygon intersection. Mits je geen ruimtelijke verdeelstructuur van je coordinaten hebt, zul je voor alle coordinaten moeten kijken of ze in de polygoon vallen. Dit kun je dan nog versnellen door een bounding rectangle rond je polygoon te maken, want (axis aligned) rectangle intersection is natuurlijk een stuk sneller.

Daarbij moet je dus niet teveel naar MySQL kijken. Dit los je niet met SQL op, behalve dan voor het persisten van je coordinaten.

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Om even de beschrijving met betrekking tot spatial relation functions te citeren :
Currently, MySQL does not implement these functions according to the specification. Those that are implemented return the same result as the corresponding MBR-based functions.
Oftewel er wordt alleen getest op minimal bounding rectangles. Wil je echt weten of een punt binnen de door jou opgegeven polygoon valt, of welke polygonen een punt bevatten, dan moet je de functionaliteit zelf uitbreiden of een beter alternatief gebruiken voor de spatial extension van MySQL. PostGIS is zo bijvoorbeeld wel een goed alternatief :) .