(Kiedy) powinienem używać bazy danych obsługującej GIS?

22

Jestem długoletnim programistą, nowym w GIS. Próbuję zapoznać się z aspektami GIS związanymi z bazami danych i rozumiem, że niektóre bazy danych specjalizują się w korzystaniu z GIS. Zasadniczo próbuję zrozumieć, czy korzystać z takiej bazy danych, czy trzymać się bardzo popularnego, dobrze znanego, szeroko obsługiwanego (i bezpłatnego) MySql.

Aplikacje, które mogę kodować, to:

  • zarządzanie flotą (pojazdy lądowe lub oceaniczne)
  • śledzenie pracowników
  • kontrola zapasów (z dokładnością do fizycznej pozycji z dokładnością do około metra)
  • errm, o to chodzi, naprawdę

Zwykle spodziewałbym się, że będę śledził nie więcej niż 1 kilkaset (maksymalnie, prawdopodobnie kilka tysięcy) przedmiotów. Czasami przedmioty będą znajdować się w tym samym (dużym) budynku, serii budynku, mieście, kraju lub na całym świecie, w zależności od zastosowania.

Od czasu do czasu będę ich wizualnie przedstawiał na niestandardowym rzucie budynku lub, co bardziej prawdopodobne, w Google Earth lub podobnym (więcej w innym pytaniu).

Wydaje mi się, że dobrze mi idzie z MySql i dodawaniem kolumn dla danych lat / long lub innych danych pozycyjnych, ale może to być spowodowane tym, że znam MySql.

Czy jest jakiś powód, dla którego powinienem szukać bardziej specjalistycznej bazy danych?

Mawg
źródło

Odpowiedzi:

13

Prawdziwą zaletą przestrzennych baz danych (PostGIS, rozszerzenia przestrzenne do MySQL lub cokolwiek innego) jest to, że można wykonywać operacje przestrzenne na danych przestrzennych. Jeśli przechowujesz tylko współrzędne punktu, to tak naprawdę niewiele zyskujesz na przestrzeni (wystarczy użyć dwóch kolumn numerycznych). Jeśli przechowujesz kombinacje współrzędnych punktów (tam, gdzie są klienci) i współrzędnych linii (tam, gdzie jeżdżą samochody dostawcze) i wielokątów (regiony sprzedaży), a następnie wykonujesz zapytania dotyczące tych różnych bitów informacji (ilu klientów w ramach sprzedaży strefy, ile ciężarówek przejechało dziś mniej niż 2 km od strony klienta, ale nie dokonało dostawy ani odbioru), możesz wiele zyskać.

Jak zauważył iant, PostGIS z pewnością warto poszukać aplikacji serwerowej. SpatiaLite to przestrzenne rozszerzenia SQLite, które mogą lepiej pasować do aplikacji mobilnej na komputery stacjonarne / osadzone / offline, oferując dość podobne funkcje SQL [ Ujawnienie: Pracuję na SpatiaLite ], zauważając, że nic nie stoi na przeszkodzie , aby używać PostGIS w aplikacja komputerowa.

BradHards
źródło
+1 i dzięki. Ciekawe, dlaczego został oparty na Sqlite, a nie MySql ...
Mawg
1
Myślę, że to po prostu inne cele projektowe (osadzone, bez konfiguracji itp.).
BradHards,
+1 tak myślałem (pochodzę też z osadzonego tła). Dzięki za informację. Spodziewam się, że skończę z aplikacjami opartymi na przeglądarce (większość z nas, nawet jeśli wolelibyśmy tego nie robić), więc „Lite” nie jest tak konieczne. Ciekawe, jakie aplikacje teraz mają d / b we wbudowanym systemie / urządzeniu? (przepraszam, wciąż się uczę)
Mawg
1
Osadzony jest duży obszar, ale mobilny tryb offline wydaje się być nowym obszarem.
BradHards
2
@Mawg Większość nowoczesnych telefonów i przeglądarek używa sqlite jako magazynu danych. To naprawdę jest jeden plik c, a interfejs API jest bardzo prosty i działa w procesie. Porównaj to z MySQL, który wymaga wielu uruchomionych procesów i architektury klient / serwer. Dwa bardzo różne przypadki użycia
Ragi Yaser Burhum
8

Z pewnością powinieneś wziąć pod uwagę niezwykle popularny, ugruntowany, szeroko wspierany (i bezpłatny) PostGIS . Zrobi wszystko, co MySQL może zrobić, i obsłuży lokalizacje przestrzenne jako obiekty pierwszej klasy. W ten sposób możesz dokonywać selekcji na podstawie punktów w obwiedni (lub innym wielokącie) bez konieczności zapisywania wszystkich porównań itp.

Gdy zaczniesz zadawać pytania, na przykład, które obiekty znajdują się w jakim kraju (lub budynku), PostGIS naprawdę wchodzi w grę i jeśli zdecydujesz, że musisz zmapować swoje obiekty, wszystkie popularne narzędzia open source będą rozmawiać z PostGIS poza pudełko.

Ian Turton
źródło
+1 i wielkie dzięki. Nie mogę się już temu przyjrzeć. Z punktu widzenia programistów chcę dobrze widzieć hos. Mówię do PHP, jeśli korzystam z Internetu, a jeśli korzystam z aplikacji komputerowej Widnwos, korzystam z komponentów dostępu do bazy danych AnyDac dla Delphi, więc wyślę e-mail do pomocy AnyDac. Dzięki jeszcze raz!
Mawg
1
Do Mawga: Nadal muszę widzieć dowolne biblioteki baz danych delphi innych firm, które obsługują dowolną funkcjonalność GIS w postgis, db2, spatiallite, serwerze sql itp. Wygląda na to, że musisz to zrobić sam.
Uffe Kousgaard
+1 @UffeKousgaard Znalazłem to tylko za 295 USD za najtańszy cartovcl.com
Mawg
1
Cartovcl (którego używam od prawie 10 lat) to płaski plik GIS SDK, który ma wbudowaną funkcjonalność GIS. To nie jest cienki interfejs API na zdalnie włączonej bazie danych.
Uffe Kousgaard
1
Dokument historyczny :-) Ale TatukGIS jest prawdopodobnie jednym z najbardziej wszechstronnych dostępnych zestawów GIS SDK (ale także nieco droższym). Ale należy do tej samej ligi co cartovcl, tzn. Wbudowana jest funkcja gis, nie jest to interfejs API na zdalnej bazie danych.
Uffe Kousgaard
2

Aby dodać do odpowiedzi i powtórzyć niektóre punkty, używa się bazy danych z włączoną przestrzenią, jeśli masz zapytania dotyczące relacji przestrzennych danych, z których kilka to:

  1. które punkty są w odległości x kilometrów od moich punktów zainteresowania
  2. które punkty są bliżej
  3. jak daleko jest punkt od innego punktu
  4. które punkty są x kilometrów w obrębie drogi dojazdowej

Jeśli takie zapytania dotyczące GDZIE są istotną cechą aplikacji, zwykle zdecydowanie zaleca się korzystanie z przestrzennej bazy danych.

Oczywiście, w przypadku niektórych z tych zapytań można zastosować logikę kodowania / aplikacji, na przykład używając wzoru odległości dla 1, ale nie trzeba wymyślać koła na nowo.

arcsum
źródło