Wpis z mikrobloga

Pytanie do wszystkich #programista15k w szczególności zajmujących się #programowanie i #sql #mysql #sqlite #postgresql #postgres

Macie w bazie (np. MySQL, Postgres, SQLite) sporą tabelkę zawierającą punkty z przypisanym słowem kluczowym:

CREATE TABLE points ( x INTEGER, y INTEGER, keyword TEXT );
Użytkownik jako zapytanie podaje:
- listę interesujących go regionów (lista dowolnej długości)
- listę słów kluczowych (lista dowolnej długości)

Sposób zdefiniowana regionów jest drugorzędny, można zrobić dowolny z kształtów lub zaproponować jakiś inny:
- prostokąty (x1,y1,x2,y2)
- koła (x,y,promień)
- kwadraty (x,y,bok)

Chcemy przefiltrować tabelkę points, aby znaleźć tylko te, które znajdują się w którymś z regionów i zawierają słowo kluczowe z podanej listy.

Regiony mogą na siebie nachodzić, ale punkt znajdujący się w kilku regionach wolelibyśmy dostać w zbiorze wynikowym tylko raz.

Jak byście to zaimplementowali w wybranym języku programowania ( np. #php #python #java #csharp #rubyonrails #go #rust #perl #nodejs )?

Jak byście to zrobili, żeby użyć prepared statements?

To nie jest praca domowa ani zadanie w pracy jakby co :-) Znam rozwiązanie, ale ciekawi mnie, czy ktoś zaproponuje coś lepszego.
  • 11
via Wykop Mobilny (Android)
  • 0
@mateusza: są specjalne indeksy do tego bazach. Szukaj coś w stylu geoindex. W MongoDB trzeba określić przedziały x i y żeby stworzyć taki indeks.
@mateusza: tak naprawdę wiele baz ma rozszerzenia GISowe i tam takie rzeczy robi się out-of-the-box.
Z darmowych to jeszcze w SQLite jest spatialite i wbudowana obsługa GIS w mongodb.

A jak chcesz mieć modele Javowe w kodzie, to jest biblioteka JTS Topology Suite
Pasuje do wszystkiego, co zwraca WKB lub WKT jako dane.

A jeśli musisz to tylko wyświetlić, to całe przetwarzanie robisz bazą, wywalasz jako GeoJSON i bezpośrednio na front.
@mateusza: A kim ty jesteś, jakimś PMem, że możesz mówić co cię interesuje i na czym mamy się skupić? xDDD Dostałeś półprodukty, wykombinuj sobie rozwiązanie a nie szukasz darmowej porady na portalu ze śmiesznymi obrazkami
@mateusza: A kim ty jesteś, jakimś PMem, że możesz mówić co cię interesuje i na czym mamy się skupić? xDDD Dostałeś półprodukty, wykombinuj sobie rozwiązanie a nie szukasz darmowej porady na portalu ze śmiesznymi obrazkami


@LolsLols: usuń konto zielonko. Napisałem, że znam rozwiązanie i nie szukam porady.

Piszę artykuł do pewnego magazynu programistycznego i opisuję pewną technikę, którą kiedyś wymyśliłem i wydaje mi się, że nikt nigdy jej nie stosował