Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Generator współrzędnych. Problem
Forum PHP.pl > Forum > Przedszkole
warland
Witam.
Potrzebuję pomocy we wprowadzeniu do skryptu pewnej poprawki.

Skrypt generuje współrzędne z danego przedziału liczb.
Potrzebuję dodać wyjątek który będzie omijał wyniki gdy tylko jedna ze współrzędnych posiada 2 liczby po przecinku.
Przykład na podstawie wyników generowanych przez poniższy skrypt:
- wygenerowana współrzędna (49.1 , 16) - poprawna, (49.15 , 16.1) - niepoprawna, (49.15 , 16.05) - poprawna

Co dodać w skrypcie by nie były wyświetlane te współrzędne niepoprawne?


Skrypt:
  1. <?php
  2. // wielkość pola między 1 a 12
  3. $box_size = 0.05;
  4.  
  5. // liczby 84 i 180 są maksymalną wielkością (od ujemnej do dodatniej) mapy google
  6. $lat_limit = 50;
  7. $lat_limit_min = 49;
  8. $lng_limit = 17;
  9. $lng_limit_min = 16;
  10.  
  11. $result = '';
  12. $land_insert_statement = "coord_slug , lat , lng";
  13. $result .= $land_insert_statement;
  14. $result .= '<br>';
  15.  
  16. $i = 0.05;
  17. for ($lng = $lng_limit_min; $lng <= $lng_limit; $lng = $lng + $box_size) {
  18.  
  19. for ($lat = $lat_limit_min; $lat <= $lat_limit; $lat = $lat + $box_size) {
  20. // Zapobiega błędowi, w którym -180 i 180 nakładają się, tworząc ląd, do którego interfejs użytkownika nie może uzyskać dostępu
  21. if ($lng != '-180') {
  22. $coord_slug = $lat . ',' . $lng;
  23. $result .= " . $coord_slug . ', ' . $lat . ', ' . $lng . '";
  24. if ($i % 1000 == 0)
  25. {
  26. $result .= ';';
  27. $result .= '<br>';
  28. $result .= $land_insert_statement;
  29. $result .= '<br>';
  30. } else {
  31. $result .= ',';
  32. }
  33. $result .= '<br>';
  34. $i++;
  35. }
  36. }
  37. }
  38.  
  39.  
  40. $search = ',';
  41. $replace = ';';
  42. $result = strrev(implode(strrev($replace), explode($search, strrev($result), 2)));
  43.  
  44. echo $result;
Kshyhoo
A jakie są kryteria poprawności?
warland
Cytat(Kshyhoo @ 19.02.2018, 07:10:51 ) *
A jakie są kryteria poprawności?


nie bardzo rozumiem.
Skrypt generuje współrzędne z danego zakresu liczb (w podanym skrypcie jest to między 49 a 50 długości geograficznej i między 16 a 17 szerokości. Generowana jest siatka punktów z dokładnością do 0.05.
Potrzebuje by skrypt wyeliminował tylko te wyniki gdy zachodzi konkretne zdarzenie. Gdy w danym wyniku gdy 1 lub 2 współrzędna jest liczbą z dwoma liczbami po przecinku a druga jest liczbą całkowitą lub z jedną liczbą po przecinku.

w wynikach generatora wygląda to przykładowo tak:
. 50,16.04 . ', ' . 50 . ', ' . 16.04 . ',
. 49,16.05 . ', ' . 49 . ', ' . 16.05 . ',
. 49.45,16.05 . ', ' . 49.45 . ', ' . 16.05 . ',

więc wg koncepcji wynik środkowy . 49,16.05 . ', ' . 49 . ', ' . 16.05 . ', nie powinien zostać wyświetlony, ponieważ pierwsza liczba jest liczbą całkowitą z druga z 2 liczbami po przecinku.
W każdym innym wypadku gdy 0=0.0 , 0=0 , 0.00=0.00 wynik powinien być wyświetlony.
Gdy jest 0=0.00 , 0.0=0.00 , 0.00=0 , 0.00=0.0 wynik nie powinien się pojawić po wygenerowaniu zestawu.

Chodzi o ukrycie tych danych które nie są wskazane. Jest to potrzebne np. mi do wygenerowania zestawu współrzędnych które będą wrzucone do bazy danych. W wypadku gdy będzie to ponad 20 tys rekordów ręczne usunięcie współrzędnych nie psujących do kryteriów będzie kłopotliwe. Więc chodzi tylko i wyłącznie by skrypt nie wyświetlał tych zestawów współrzędnych w wynikach.
warland
Cytat(trueblue @ 19.02.2018, 08:12:32 ) *

tamten temat dotyczy całkowicie innego zagadnienia niż przedstawione tutaj.
trueblue
Cytat(warland @ 19.02.2018, 08:17:32 ) *
tamten temat dotyczy całkowicie innego zagadnienia niż przedstawione tutaj.

Czyli uważasz, że:
Cytat
parseInt(liczba)==liczba, jeśli tak, to oznacza, że nie ma wartości dziesiętnych

jest wskazówką nie na miejscu?
Naprawdę nie możesz analogicznie do tego rozwiązania sprowadzić liczby do jednego miejsca po przecinku i porównać z nią samą przed zaokrągleniem?
Pyton_000
A nie możesz po prostu wszystkich liczb zapisać z 2miejscami ?
warland
Cytat(trueblue @ 19.02.2018, 08:30:19 ) *
Czyli uważasz, że:

jest wskazówką nie na miejscu?
Naprawdę nie możesz analogicznie do tego rozwiązania sprowadzić liczby do jednego miejsca po przecinku i porównać z nią samą przed zaokrągleniem?

a czy ja chce zaokrąglać jakieś liczby?

Cytat(Pyton_000 @ 19.02.2018, 08:32:35 ) *
A nie możesz po prostu wszystkich liczb zapisać z 2miejscami ?

nie chodzi o zapisanie liczb z 2 miejscami po przecinku a usunięcie (ukrycie) danych zestawów współrzędnych. Te współrzędne tworzą figury. Niepotrzebne zestawy które chce ukryć w wynikach będą tworzyć precedens nakładania się figur. Dlatego chce wyeliminować te zestawy z wyników które nie spełniają warunku.
trueblue
Cytat(warland @ 19.02.2018, 08:41:17 ) *
a czy ja chce zaokrąglać jakieś liczby?

A czy ja mówię, że chcesz? Jeśli porównasz zaokrągloną do jednego miejsca liczbę z nią samą, to będziesz wiedział czy przed zaokrągleniem były setne części czy nie.
warland
nie potrafię sobie z tym poradzić.
Więc oferuje 150 PLN osobie która się zgłosi i doda do skryptu warunek o którym pisałem na początku.
Płacę od razu po zrobieniu na Paypal.
aras785
O to chodzi?

  1. <?php
  2. // wielkość pola między 1 a 12
  3. $box_size = 0.05;
  4.  
  5. // liczby 84 i 180 są maksymalną wielkością (od ujemnej do dodatniej) mapy google
  6. $lat_limit = 50;
  7. $lat_limit_min = 49;
  8. $lng_limit = 17;
  9. $lng_limit_min = 16;
  10.  
  11. $result = '';
  12. $land_insert_statement = "coord_slug , lat , lng";
  13. $result .= $land_insert_statement;
  14. $result .= '<br>';
  15.  
  16. $i = 0.05;
  17. for ($lng = $lng_limit_min; $lng <= $lng_limit; $lng = $lng + $box_size) {
  18.  
  19. for ($lat = $lat_limit_min; $lat <= $lat_limit; $lat = $lat + $box_size) {
  20. // Zapobiega błędowi, w którym -180 i 180 nakładają się, tworząc ląd, do którego interfejs użytkownika nie może uzyskać dostępu
  21. if ($lng != '-180') {
  22. $coord_slug = $lat . ',' . $lng;
  23. $e_lat = explode('.',$lat);
  24. $e_lng = explode('.',$lng);
  25. if(((array_key_exists(1, $e_lat) && strlen($e_lat[1])==2) && !(array_key_exists(1, $e_lng) && strlen($e_lng[1])==2)) || ((array_key_exists(1, $e_lng) && strlen($e_lng[1])==2) && !(array_key_exists(1, $e_lat) && strlen($e_lat[1])==2))) continue; // ew. uzyj w celu zaznaczenia: $result .= '<font color="red">blad: </font>';
  26.  
  27. $result .= " . $coord_slug . ', ' . $lat . ', ' . $lng . '";
  28. if ($i % 1000 == 0)
  29. {
  30. $result .= ';';
  31. $result .= '<br>';
  32. $result .= $land_insert_statement;
  33. $result .= '<br>';
  34. } else {
  35. $result .= ',';
  36. }
  37. $result .= '<br>';
  38. $i++;
  39. }
  40. }
  41. }
  42.  
  43.  
  44. $search = ',';
  45. $replace = ';';
  46. $result = strrev(implode(strrev($replace), explode($search, strrev($result), 2)));
  47.  
  48. echo $result;
nospor
@aras pomijajac fakt, ze jakos kazdy tutaj ignoruje proste rozwiazanie co podal trueblue to w twoim rozwiazaniu mogles chociaz stworzyc funkcje,np. areTwoDigitsAfterDot() a nie tworzyc takiego potworka co sie czytac nie da wink.gif Za te 150PLN mogles sie troche wysilic wink.gif
warland
a pisałem by do mnie najpierw się zgłosić by nie było draki..
i już kilka chętnych się zgłosiło przed tą publikacją.
Ale ok. Jakoś to załatwimy inaczej. Wysłałem pw
nospor
@warland draki by nie bylo jakbys sie nie wyglupial z tymi 150PLN wink.gif

za te 10 sekund roboty to i za 10zl bys mial chetnych, to tak na przyszlosc. Generalnie fajnie, ze doceniasz prace programistyczne ale 9000PLN/h to lekkie przesacowanie wink.gif
warland
szczerze to chciałem udowodnić sobie i swoim znajomym na czym polega różnica między polskim forum a np. stackoverflow gdzie zazwyczaj nauka kogoś mało doświadczonego polega na wyjaśnieniu problemu by użytkownik dał radę sobie sam z problemem z użyciem przykładów, wzorów które dostaje a nie rzucanie tylko ogólnikami jak jest to tutaj w dużej części.
Większość wiedzy którą posiadłem mam stamtąd niż z polskich for gdzie niby są te przedszkola, pomoc dla niedoświadczonych itp.

150 pln to fakt, dużo za coś takiego ale cóż doceniam zarazem tych co robią to za kasę tak jak ja dostaje odpowiednie pieniądze za swoją.
Nie rozumiem tylko ludzi udających ekspertów, rzucających ogólnikami nie wnoszącymi nic do rozwiązania danego problemu. Może lepiej by w ogóle nie pisali niż tylko zaśmiecali wątek tylko po to by nabić sobie posty. Przykładem jest ten temat.

Na takich forach jak "przedszkole" nie wiem po co zabierają głos osoby które niby chcą pomóc a rzucają ogólnikiem udając jacy oni mądrzy a zarazem piszą że nie będą sobie głowy zawracać by komuś coś wyjaśnić.

a teraz "eksperci" jak chcą mogą porzucać sobie trochę kamieniami..
nospor
Cytat
Jeśli porównasz zaokrągloną do jednego miejsca liczbę z nią samą,
To nie jest ogolnik. To jest naprawde konkretnie podane co masz zrobic. Ale jak sie wacpanu nie chce...
I na stackoverflow za tego typy pytania bardzo czesto leca minusy od samych uzytkownikow i temat bardzo szybko jest z automatu zamykany wiec sobie daruj takie wyssane z palca porownania bo tez siedze na stackoverflow i widze jak to wyglada.
warland
a świstak zawija w te sreberka i zawija.. przejrzyj moje pytania na stackoverflow.. Jak już ktoś decyduje się pomóc to robi to konkretnie dokładnie wyjaśniając zagadnienie (nawet jak sam temat jest minusowany.
Ale co ja tam wiem smile.gif

p.s. i chodzi tylko o przedszkole. Rozumiem tego typu pomoc na innych forach gdzie umieszczam pytania i nie oczekuję wyjaśnienia a względnej wskazówki.
Natomiast w przedszkolu nie polega na tym by walnąć tekst który dla laika w danym problemie nie jest żadną wskazówką.
nospor
Juz pedze szukac twoim tematow na stackoverlow... Moze miales farta. Generalnie widzialem setki tematow jak ten tutaj, gdzie problem jest banalny a Panu leniuszkowi sie nie chcialo i temat byl z miejsca zamykany. Jest na to na stackoverlow specjalny paragraf.

edit: ze mialem minutke wolnego to az sprawdzilem. Wszakze nie raczyles podac nicku pod jakim mam szukac, ale jakos znalazlem. Na stack overflow napisales az 3 tematy. Faktycznie, wyciagnales stamtad duza wiedze... z tego co widze to jednak wiecej pomocy dostales tutaj.
Mniejsza o to. Dwa z tych 3 tematow zostaly zgloszone do zamkniecia. Jednym z nich jest temat dokladnie ten sam co ten tutaj. Kurcze....
Cytat
szczerze to chciałem udowodnić sobie i swoim znajomym na czym polega różnica między polskim forum a np. stackoverflow

To zes faktycznie udowodnil podajac rzetelne porownanie :/ Prace w TVN masz od zaraz wink.gif
Pyton_000
@nospor aż zaczynam się ciebie bać biggrin.gif Powinieneś pracować jako prawa noga Rutkowskiego biggrin.gif
warland
Cytat(nospor @ 19.02.2018, 17:47:33 ) *
edit: ze mialem minutke wolnego to az sprawdzilem. Wszakze nie raczyles podac nicku pod jakim mam szukac, ale jakos znalazlem. Na stack overflow napisales az 3 tematy. Faktycznie, wyciagnales stamtad duza wiedze... z tego co widze to jednak wiecej pomocy dostales tutaj.
Mniejsza o to. Dwa z tych 3 tematow zostaly zgloszone do zamkniecia. Jednym z nich jest temat dokladnie ten sam co ten tutaj. Kurcze....

To zes faktycznie udowodnil podajac rzetelne porownanie :/ Prace w TVN masz od zaraz wink.gif

Proponuje dokładnie sprawdzić bo inaczej to Rutkowski jedynie da Ci posadę wystawki (jak wiesz co to takiego) smile.gif
niektórzy w życiu gdy nie mają określonego bytu w przestrzeni surrealizmu interpretacji swojej jaźni robią sobie fotkę z profesorem by czuć się mądrzejszym.

pewnie zaraz dostanę bana bo niby moderatorowi można więcej ale co mi tam. Ja dużo nie stracę, kolega podbuduje sobie swoje ego smile.gif

a już całkowicie nie rozumiem człowieka którego tak coś uwiera że nie mógł sobie odpuścić pominusowania tam tych tematów. To już chyba mówi wszystko o koledze.. nic dodać, nic ująć.. chyba dzieci w przedszkolu mają większy szacunek do siebie. Pomodlę się o Twoją zdruzgotaną duszę bom dobry człek i życzę ludziom szczęśliwego życia.
nospor
Hmm.... koles
https://stackoverflow.com/users/9373025/inm...lia?tab=profile
zadaje identyczne pytania jak ty. Twierdzisz wiec ze to nie ty? A moze mala schizofremia? wink.gif

za co bana? Za to ze strzelasz sobie fotki z profesorami? A twoja sprawa, co mnie do tego.

Cytat
a już całkowicie nie rozumiem człowieka którego tak coś uwiera że nie mógł sobie odpuścić pominusowania tam tych tematów. To już chyba mówi wszystko o koledze.. nic dodać, nic ująć.. chyba dzieci w przedszkolu mają większy szacunek do siebie. Pomodlę się o Twoją zdruzgotaną duszę bom dobry człek i życzę ludziom szczęśliwego życia.
No teraz zes polecial... Jak znalazlem twoj profil to juz tak bylo. No ale lepiej zwalic teraz wszystko na mnie i podbudowac swoje ego jak to mowisz, niz przyznac sie ze skoro wiecej osob uwaza twoje tematy za lekkie przegiecie to moze cos w tym jest...

edit: o prosze, teraz juz nawet sam kasujesz swoje tematy na stacku....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.