![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam czy jest możliwość pobrania punktów z bazy danych (mając tylko współrzędne lat i lon) które są w wybranym obszarze np. w powiecie. Mam koordynaty powiatów ale jak wykonać takie zapytanie.
Koordynaty mam w pliku json ale chcę je dodać do bazy danych bo tak chyba będzie najprościej. Jaki powinien być format bazy danych dla takich danych? Proszę o jakieś wskazówki. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 377 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Postgres ma rozszerzenie postgis które daje spore możliwości wyszukiwania rożnych punktów. Mysql nie słyszałem.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mam taką bazę danych z punktami
![]() Druga tabela z koordynatami ![]() Teraz jak wyciągnąć punkty z pierwszej tabeli które mieszczą się w tych koordynatach z drugiej tabeli? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A ta kolumna KOORDYNATY to co to jest? Zwykla kolumna TEXT?
Jak juz napisano, masz uzyc albo postgis dla PGSQL albo SPATIAL dla mysql - wowczas mozesz dzialac. edit: od biedy, jesli tych punkow nie masz za duzo, mozesz wszystko liczyc w php. z tego co widze jest pare klas, ktore sprawdzaja czy punkt jest w poligonie czy nie. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Niestety punktów jest trochę liczone nawet w tysiącach.
Możesz podać przykłady takich klas? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to w takim przypadku, przy paru tysiacach punkow oraz kilkuset powiatach do sprawdzenia to nie ma zadnego sensu robienie tego w php.
Co do klas to wpisze sobie w google: php point inside polygon i ci wyrzuci -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Powiatów będzie tylko kilka i nie będzie wszystko sprawdzane na jeden raz tylko wybrany jeden powiat. Fakt punktów może być trochę.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przy tylko kilku powiatach wytargałbym to wszystko z bazy i opakował w jakąś klasę z listą pkt a potem wrzucił to w cache np. Redis czy cokolwiek. Potem możesz sobie mielić dane ile Ci się podoba.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod
W tym miejscu
są przykładowe dane a w tym $polygon = array($powiat); powinny być dane z bazy danych ale nie ma. Jak można dodać zmienną $powiat która jest pobierana z bd mysql do tablicy array. W bazie danych pod koordynaty mam takie wartości "15.301023 52.952381", "15.306165 52.965328", "15.307717 52.972298", "15.307131 52.982159", "15.301071 52.991863" |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
$powiaty to już jest tablica. A ty powinieneś wywołać to tak:
pointInPolygon($point, $powiat['koordynaty']) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mówisz o tym?
pointInPolygon($point, $polygon) Zamieniłem to ale nadal nic pointInPolygon($point, $powiat['koordynaty']) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tam nie jest potrzebna pętla. Zakładam, że wybierasz jeden rekord, gdzie w kolumnie jest ten JSON, tak? Przeparsuj ten JSON do tablicy, sklej każde dwa elementy w string, a każdy taki string wrzucaj do tablicy. Ten post edytował trueblue 31.12.2019, 17:57:13 -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
W sumie robiłem coś podobnego, tyle że można powiedzieć bez bazy danych. Używałem do tego https://github.com/phayes/geoPHP i wydajnosciowo smigalo dobrze. Jeśli masz mozliwosc instalacji dodatkow, to sprawdz dokumentacje czy bedzie ci to odpowiadało.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Coś namieszałem to nie ma prawa działać
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
W zmiennej $powiat nie ma indeksu koordynaty.
Pisałem Ci wyżej jak masz zbudować tablicę. 0=>"x1 y1", 1=>"x2 y2" itd. Gdybyś się pokusił o zmianę kodu, to mógłbyś tak nie robić, bo i tak metoda pointStringToCoordinates rozbija ponownie taki string na dwie odrębne wartości. -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Niestety tak nie działa
Zamiana tego pointInPolygon($point, $polygon) na to pointInPolygon($point, $powiat) Też nie działa |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat W bazie danych pod koordynaty mam takie wartości "15.301023 52.952381", "15.306165 52.965328", "15.307717 52.972298", "15.307131 52.982159", "15.301071 52.991863" Ze screenu pare postow wyzej widac, ze jednak masz tam dane w zupelnie innym formacie. Po co wprowadzasz ludzi w blad? No i tyle lat naforum, i patrzac po historii twoich postow - tyle lat z tym samym skryptem, a ty nadal nie potrafisz wlaczyc wyswietlania wszystkich bledow czy tez zajrzec do logow aplikacji, mimo ze wielokrotnie ciebie o to prosilem i inni pewnie tez. Po co w ogole przychodzisz na forum jak wiekszosc uwag w latuje jednym uchem a drugim od razu wylatuje? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Chyba nie rozumiecie mojego problemu.
Chodzi mi o coś takiego: https://assemblysys.com/php-point-in-polygon-algorithm/ Z tym, że współrzędne punktów pobierane są z bazy danych. $polygon dane pobierane z bazy danych albo z pliku txt. |
|
|
![]()
Post
#20
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Kazdy tutaj rozumie o co tobie chodzi. To ty poki co stwarzasz problemy:
1) Nie wylaczysz wyswietlania bledow jak nie raz byles proszony 2) Raz podajesz ze baza ma dane w postaci X, innym razem podajesz ze ma w formacie Y - wprowadzasz ludzi w blad przez to 3) Generalnei nie stosujesz sie do tego co i ludzie pisza A na koniec zwalasz wine, ze nikt ciebie nie rozumie.... ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 23:57 |