Ik heb een widget, "NL Weerradar", voor Mac OS X Dashboard. Daarin worden een aantal weerkaarten van verschillende bronnen geladen. Nu speel ik al een tijd met het idee een functie toe te voegen waarmee je een "pin" op een kaart kan plaatsen aan de hand van het opgeven van een lokatie. De latitude/longitude wordt dan opgezocht m.b.v. een geocoding service en vertaald naar het pixel grid van de weerkaart image. Voor deze vertaalslag zijn parameters nodig.
Het "reverse referencing" van het pixel grid van een bitmap image naar de corresponderende latitude/longitude heet "georeferencing" en het wiskundige principe heet "polynomial transformation", ben ik na enig zoeken achter. Bijvoorbeeld Mathlab heeft een dergelijke functie ingebouwd.
De werking is simpelweg gebaseerd op het bekend zijn van bepaalde punten op de kaart en de pixel waarden laten corresponderen met de latitude/longitude waarden. Hieruit volgt een stelsel van vergelijkingen, wat uiteraard valt op te lossen bij voldoende referencing points.
De meest simpele vorm van "georeferencing" kan d.m.v. een "linear transformation" met de vorm:
maar dit geldt alleen wanneer de bitmap kaart qua Noord-Zuid oriëntatie klopt en de latitude en longitude gelijkvallen met de horizontale en verticale pixel-rijen in de bitmap.
Dus valt de transformatie te benaderen met een tweedegraads polynoom (volgens mij):
Daarnaast kunnen de kaarten zijn geroteerd, in het algemeen geldt dan:
Substitutie van x en y in x' en y' geeft dan:
Dit stelsel met zeven onbekenden (a, b, c, d, e, f, alpha) heb ik als test m.b.v. een tiental bekende punten (x, y, longitude, latitude) in Maple ingevoerd en in verschillende combinaties gesolved, maar daar komen elke keer (in verschillende combinaties) zulke verschillende combinaties uit (totaal verschillende hoeken bijvoorbeeld), dat ik niet goed weet hoe ik dit stelsel kan oplossen en daarnaast met behulp van de niet gebruikte punten de benadering kan verbeteren.
Verder lees ik op de pagina's van een aantal tools die dit kunnen, zoals GCPWorks => Polynomial transformations dat er zeven punten nodig zijn voor het oplossen van een tweedegraads polynomial transformation, maar voor het stelsel vergelijkingen heb je ogenschijnlijk aan vier punten (= acht vergelijkingen: 4 maal x, 4 maal y) genoeg.
Weet iemand of de vergelijkingen kloppen en hoe ik het georeferencen kan verbeteren? Als er behoefte aan is kan ik de Maple worksheet en/of de tabel met pixel grid en lat/lon waarden online zetten.
Het "reverse referencing" van het pixel grid van een bitmap image naar de corresponderende latitude/longitude heet "georeferencing" en het wiskundige principe heet "polynomial transformation", ben ik na enig zoeken achter. Bijvoorbeeld Mathlab heeft een dergelijke functie ingebouwd.
De werking is simpelweg gebaseerd op het bekend zijn van bepaalde punten op de kaart en de pixel waarden laten corresponderen met de latitude/longitude waarden. Hieruit volgt een stelsel van vergelijkingen, wat uiteraard valt op te lossen bij voldoende referencing points.
De meest simpele vorm van "georeferencing" kan d.m.v. een "linear transformation" met de vorm:
code:
1
2
| x = a*longitude + b y = c*latitude + d |
maar dit geldt alleen wanneer de bitmap kaart qua Noord-Zuid oriëntatie klopt en de latitude en longitude gelijkvallen met de horizontale en verticale pixel-rijen in de bitmap.
Dus valt de transformatie te benaderen met een tweedegraads polynoom (volgens mij):
code:
1
2
| x = a*lon^2 + b*lon + c y = d*lat^2 + e*lat + f |
Daarnaast kunnen de kaarten zijn geroteerd, in het algemeen geldt dan:
code:
1
2
| x' = x*cos(alpha) - y*sin(alpha) y' = x*sin(alpha) + y*cos(alpha) |
Substitutie van x en y in x' en y' geeft dan:
code:
1
2
| x' = (a*lon^2 + b*lon + c)*cos(alpha) - (d*lat^2 + e*lat + f)*sin(alpha) y' = (a*lon^2 + b*lon + c)*sin(alpha) + (d*lat^2 + e*lat + f)*cos(alpha) |
Dit stelsel met zeven onbekenden (a, b, c, d, e, f, alpha) heb ik als test m.b.v. een tiental bekende punten (x, y, longitude, latitude) in Maple ingevoerd en in verschillende combinaties gesolved, maar daar komen elke keer (in verschillende combinaties) zulke verschillende combinaties uit (totaal verschillende hoeken bijvoorbeeld), dat ik niet goed weet hoe ik dit stelsel kan oplossen en daarnaast met behulp van de niet gebruikte punten de benadering kan verbeteren.
Verder lees ik op de pagina's van een aantal tools die dit kunnen, zoals GCPWorks => Polynomial transformations dat er zeven punten nodig zijn voor het oplossen van een tweedegraads polynomial transformation, maar voor het stelsel vergelijkingen heb je ogenschijnlijk aan vier punten (= acht vergelijkingen: 4 maal x, 4 maal y) genoeg.
Weet iemand of de vergelijkingen kloppen en hoe ik het georeferencen kan verbeteren? Als er behoefte aan is kan ik de Maple worksheet en/of de tabel met pixel grid en lat/lon waarden online zetten.
NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard