Nanoszenie punktów GPS na mapę

Odpowiedz Nowy wątek
2019-08-09 15:43
1

Witam.
Podpowie ktoś może w jaki sposób podzielić mapę (obraz jpg,png) na współrzędne i przy pomocy funkcji dodawać punkty do mapy ?

Pozostało 580 znaków

2019-08-09 15:45
1

a masz jakiekolwiek punkty odniesienia na tej mapie?


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2019-08-09 15:56
0

54°50'08.8'' N 14°07' E (54.835778, 14.116667) chodzi mi o mapę polski.
Coś jak ma policja policja.pl/dokumenty/zalaczniki/1/mini/1-321796_mo4.gif .
Na początek bez gifów :)

Pozostało 580 znaków

2019-08-09 19:30
0

Może to na oko nanieśli?

Nie znam się w sumie, ale jeśli chciałbyś dokładnie to zrobić, to potrzebujesz współrzędne całego boxa (wszystkie 4 rogi mapki). A potem znając współrzędne punktu możesz wyliczyć odległość w jakiej ma się punkt znaleźć.

Pozostało 580 znaków

2019-08-09 19:54
0

Nanieść można tylko, że chciałbym to połączyć z bazą danych przez PHP. Masz jakiś pomysł ? Ja próbowałem tak, że pobierałem rozmiar obrazu mapy i dzieliłem przez współrzędne ale nic konkretnego z tego nie wyszło....

Pozostało 580 znaków

2019-08-09 23:40
0

Weź pokaż jakiś kod, który napisałeś.

Pozostało 580 znaków

2019-08-10 09:56
0

Jakiegoś konkretnego kodu nie mam... rozkminiam jak to policzyć.

Próbowałem tak:

// import obrazu mapy
$im = imagecreatefrompng('map.png'); // lub => https://4programmers.net/Forum/Download/24398

// Punkt początkowy
$x1 = 54.835778;
$y1 = 14.116667;

// Punkt końca mapy
$x2 = 48.487771;
$y2 = 23.995084;

$stepX = ($x1-$x2)/imagesx($im);
$stepY = ($y2-$y1)/imagesy($im);

// Współrzędne Krakowa
$kX = 50.061583;
$kY = 19.937268;

$x = ($x1-$kX)*$stepX;
$y = ($kY-$y1)*$stepY;

$pointColor = imagecolorallocate($im, 255, 0, 0);
imagefilledrectangle($im,$x, $y, $x+5, $y+5, $pointColor);

header("Content-Type: image/png");
imagepng($im);

W załączniku mapa.

  • map.png (0,02 MB) - ściągnięć: 114
edytowany 1x, ostatnio: Lok alny, 2019-08-10 10:01

Pozostało 580 znaków

2019-08-10 19:32
0

Jak chcesz obliczyć punkt X, to musisz skorzystać z długości geograficznej (longitude), a Ty używasz szerokości (latitude).
A dla Y powinieneś użyć szerokości, a nie długości.

I kroki dla X powinieneś liczyć tak, że długość obrazka dzielisz przez różnicę skrajnych długości. Wtedy wyjdzie Ci ile px odpowiada na 1 stopień długości geograficznej.
A dla kroku Y, wysokość obrazka dzielisz przez różnicę skrajnych szerokości.

Mam nadzieję, że nic nie pomyliłem^^

EDIT: Powinno chyba być coś takiego:

<?php
$url    = 'https://4programmers.net/Forum/Download/24398';
$image  = imagecreatefrompng($url);

// Punkt początkowy
$lat1  = 54.835778;
$long1 = 14.116667;

// Punkt końca mapy
$lat2  = 48.487771;
$long2 = 23.995084;

$stepX = imagesx($image) / abs($long1 - $long2);
$stepY = imagesy($image) / abs($lat1 - $lat2);

// Współrzędne Krakowa
$latK  = 50.061583;
$longK = 19.937268;

$x = abs($long1 - $longK) * $stepX;
$y = abs($lat1 - $latK) * $stepY;

$pointColor = imagecolorallocate($image, 255, 0, 0);
imagefilledrectangle($image, $x, $y, $x + 5, $y + 5, $pointColor);

header("Content-Type: image/png");
imagepng($image);
edytowany 2x, ostatnio: serek, 2019-08-10 22:38

Pozostało 580 znaków

2019-08-11 11:47
0

Czyli sobie pomieszałem :)
Twój kod działa ;D

Mam jeszcze takie pytanie.
Czy można jakoś poprawić dokładność punktów na mapie ?

Pozostało 580 znaków

2019-08-11 20:17
0

Może masz niedokładnie podany punkt początkowy i końcowy? Albo mapka nie ma dobrej skali^^

Pozostało 580 znaków

2019-08-11 20:24
0

Czy można jakoś poprawić dokładność punktów na mapie ?

Jaką chcesz mieć dokładność przy takiej skali mapy? Punktem możesz sobie wskazać dowolne miejsce na mapie - budynek, róg ulicy, kosz na śmieci tylko musi być odpowiednia skala. Chyba że ogólnie nie trafiasz w miasto to musisz sprawdzić współrzędne czy na pewno są ok lub czy na pewno mapa jest w porządku (Ziemia to jajo (na równiku jest dłuższa), więc może musisz wziąć odpowiednią mapę)

edytowany 2x, ostatnio: OtoKamil, 2019-08-11 20:25

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0