Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nanoszenie punktów na mape, przeliczanie polozenia geograficznego na obrazek
karolski
post
Post #1





Grupa: Zarejestrowani
Postów: 199
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Czymiasto

Ostrzeżenie: (0%)
-----


Problem jest nastepujacy mam punkty okreslone geograficznie poprrzez wspolzedne np:

name | lat | deg | min | sec | lon | deg | min | sec
punkt | 54,54167 | 54 | 32,000 | 30,00 | 18,77000 | 18 | 46,000 | 12,00

lat to jest wysokosc geograficzna po przeliczeniu
lon to jest dlugosc geograficzna po przeliczeniu

dla przykladu ten punkt ma byc naniesiony na ta mape
(IMG:http://koronowicz.com/mapa.jpg)
jak wiadomo funkcje rysowania na obrazku punktu w php wymagaja podnia polozenia w pixelach wzgledem x y i teraz mam problem jak to przeniesc na ta mape, jest oan wyskalowana ale dalej nie mam pojecia jak to zrobic
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
thornag
post
Post #2





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Sprawdzic rozpietosc geograficzna tego obszaru, i jego wymiary w pixelach.
Pozniej mamy prosta proporcje.

x = (dlugoscgeograficznapunktu * dlugoscwpixelachobrazka) / dlugoscgeograficznaobrazka. I mamy dlugosc w pikselach.

  1. <?php
  2.  
  3. $geoX = 50 // obrazek jest np od 1 stopnia do 51 czyli ma 50 :)
  4. $geoY = 50 // to samo co wyzej tylko ze szerokosc
  5. $pixX = 1000 // Obrazek ma 1000pixeli dlugosci
  6. $pixY = 1000 // Obrazek ma 1000pixeli wusokosci
  7.  
  8. $pointGeoX = 25,2 // ilosc stopni dlugosci szukanego punktu
  9.  
  10. $pointPixX = ($pixX * $pointGeoX) / $geoX;
  11.  
  12. ?>


Ten post edytował thornag 28.08.2006, 13:51:00
Go to the top of the page
+Quote Post
karolski
post
Post #3





Grupa: Zarejestrowani
Postów: 199
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Czymiasto

Ostrzeżenie: (0%)
-----


wlasnie testuej twoje rozwiaznaie i cos mi nei wychodzi oto link:
http://karol.attu.pl/_mapa/gfx.php
a oto liting tego pliku:
  1. <?php
  2. $filename = 'mapa2.png';
  3. header('Content-type: image/png');
  4.  
  5. $geox = 3.66667; // szerokosc tak jak pisales
  6. $geoy = 1.16667; // dugosc tak jak pisales
  7. $pixx = 800; // dlugosc obrazka
  8. $pixy = 567; // szerokosc obrazka
  9.  
  10. // punkt powinien sie pojawic prawie na przecieciu tych lini na obrazku
  11. $pointGeox = 18; // szerokosc punktu
  12. $pointGeoy = 55; // dlugosc punktu 
  13.  
  14. // przeliczanie
  15. $pointPixx = ($geox * $pointGeox) / $pixx;
  16. $pointPixy = ($geoy * $pointGeoy) / $pixy;
  17.  
  18. $source = imagecreatefrompng($filename);
  19. $bialy=ImageColorAllocate($source, 158,131,73);
  20.  
  21. imagefilledarc($source, $pointPixx,$pointPixy, 10, 10, 0, 360, $bialy, IMG_ARC_PIE);
  22.  
  23. ImageString($source,4,10,10,"x:$pointPixx y:$pointPixy",$bialy);
  24. ImagePng($source);
  25. ImageDestroy($source);
  26. ?>

jak widac na obrazku cos jest nie tak
Go to the top of the page
+Quote Post
legorek
post
Post #4





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Trzeba chyba wziąć jeszcze poprawkę na odwzorowanie kartograficzne, bo inaczej zawsze bedziesz mial kilka pikseli błędu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 02:02