PHP třída pro práci s GPS souřadnicemi

Woof,

napsal jsem v PHP třídu pro práci s GPS souřadnicemi. Ke stažení je zatím na http://www.blackwolf.cz/data/Gps.php.txt

Píšu to sem z několika důvodů:

  • Budu ji zveřejňovat jako open source, takže pokud někomu k něčemu bude, použijte ji :slight_smile: Sem to prvně dávám proto, že kešeři by k tomuhle mohli mít blíže než obyčejný programátor mudla;)
  • Hodil by se mi někdo, kdo by to pořádně otestoval. Jednak z pohledu funkčnosti, druhak kvalitu API (zda je dobře použitelné). Dobře otestovaný (včetně praktického nasazení) je jen parser, zbytek jsem dopsal během dvou odpolední a otestoval zběžně.
  • Nenašel jsem nikde žádný rozumný vzorec pro spočítání průměru souřadnic (těžiště n-úhelníka tvořeného souřadnicemi). Nezná někdo?
  • Ocením nápady na další vylepšení a konstruktivní připomínky. Případně nápad co s tím celkově – třeba by mohl být dobrý nějaký framework pro výpočty s gps, převody mezi souřadnými systémy atp. ale nemám moc přehled co by bylo reálně využitelné.
  • V neposlední řadě by se mi hodil nějaký dobrovolník angličtinář, který by mi po gramatické stránce zkontroloval komentáře, případně později manuál.

A co to vlastně umí?

  • zapouzdření gps souřadnic a běžná práce s nimi
  • parsování gps souřadnic ve všech formátech imunní vůči možných chybám uživatelů. Tohle je nejsilnější část, protože to přečte téměř cokoliv z čeho lze jednoznačně dostat čísla a ztotožnit je se souřadnicemi.
  • převod souřadnic mezi gps formáty
  • sčítání a odčítání souřadnic
  • vzdálenost mezi body
  • projekci souřadnic dle azimutu a vzdálenosti
  • průměrování (zatím jen triviální implementace)

Přijde mi, že to počítána kouli, takže výsledky (projekce a vzdálenost bodů) nebudou asi úplně přesné. Pro ČR (a místa v jejích zeměpisných) šířkách asi ano, ale ve vzdálenějších oblastech by s tím mohl být problém (když už to má být někde zveřejněno jako open source). Co si matně pamatuji, tak sférická trigonometrie na kouli je pár celkem jednoduchých vzorečků, ale na elipsoidu už to je poněkud komplikovanější. A Země je spíš ten elipsoid… Nebo se pletu?

Ano, je to zjednodušené na kouli (a průměr dokonce na plochu), takže to úplně přesné zatím není, protože Země je, jak píšeš, rotační elipsoid.
Bohužel se mi ale příslušné vzorečky pro elipsoid zatím nepodařilo dohledat, ten průměr jsem nenašel ani pro kouli.
Nejlepší by bylo ty vzorečky někde vyhrabat, o což se budu průběžně pokoušet. Případně můžu ty výpočetní části z třídy vhodit (aby to dělalo sice méně věcí, zato ale úplně přesně :D)

Třeba ti k něčemu bude tohle: Vincenty's formulae - Wikipedia

Těžiště:
Těžiště uzavřeného nepravidelného mnohoúhelníku lze spočítat jako vážený průměr těžišť trojúhelníků, do nichž rozdělíme celou plochu.
http://www.astro.cz/clanek/1647

Algoritmus je popsaný např. v knize Graphics Gems IV, zdroják v C je soubor centroid.c v http://tog.acm.org/resources/GraphicsGems/gemsv.zip

Snad Ti to pomůže.