Eksport do PostgreSQL
Mapit GIS potrafi eksportować warstwy obiektów bezpośrednio do bazy PostgreSQL z rozszerzeniem PostGIS. Eksport korzysta z bezpośredniego połączenia JDBC z urządzenia - nie jest potrzebny żaden pośrednik w chmurze ani serwer proxy.
Przydaje się to do przesyłania danych zebranych w terenie do centralnej bazy na potrzeby analiz, raportowania lub integracji z korporacyjnymi procesami GIS.
- Android
- iOS
Wymagania wstępne
Przed eksportem upewnij się, że:
- Serwer PostgreSQL działa i jest osiągalny z sieci urządzenia (Wi-Fi, dane komórkowe lub VPN).
- Rozszerzenie PostGIS jest zainstalowane w docelowej bazie (
CREATE EXTENSION IF NOT EXISTS postgis;). - Dostęp sieciowy pozwala urządzeniu połączyć się bezpośrednio z hostem i portem bazy danych.
- Dane połączenia są skonfigurowane w aplikacji (patrz niżej).
Od wersji 3.0.4 aplikacja łączy się z PostgreSQL bezpośrednio przez JDBC. Nie trzeba dodawać adresu IP serwera pośredniczącego do listy dozwolonych. Połączenie nawiązywane jest z samego urządzenia.
Konfiguracja połączenia
- Otwórz Ustawienia z menu głównego.
- Przejdź do Połączenia zdalne → Ustawienia PostgreSQL.
- Podaj dane połączenia:
| Ustawienie | Opis | Przykład |
|---|---|---|
| Host | Nazwa hosta lub adres IP serwera bazy danych | db.example.com lub 192.168.1.50 |
| Port | Port PostgreSQL | 5432 (domyślny) |
| Nazwa użytkownika | Użytkownik bazy danych | mapit_user |
| Hasło | Hasło do bazy danych | |
| Nazwa bazy danych | Docelowa baza | field_data |
- Skorzystaj z przycisku Testuj połączenie, aby sprawdzić łączność przed wyjściem w teren.
Dane logowania przechowywane są lokalnie na urządzeniu. Zadbaj o to, aby użytkownik bazy danych miał wyłącznie minimalne niezbędne uprawnienia - zwykle CREATE, INSERT, SELECT i DROP w docelowym schemacie.
Eksport warstwy
- Otwórz ekran Warstwy.
- Przytrzymaj warstwę, którą chcesz wyeksportować.
- Wybierz Eksportuj z menu kontekstowego.
- W panelu miejsc docelowych dotknij Eksport do PostgreSQL.
Wybierz tryb eksportu
Dolny panel przedstawia dwie opcje:
| Tryb | Zachowanie |
|---|---|
| Nadpisanie | Usuwa istniejącą tabelę (jeśli istnieje) i tworzy nową z eksportowanymi danymi |
| Dopisanie | Dodaje obiekty do istniejącej tabeli albo tworzy ją, jeśli nie istnieje |
Nadpisanie trwale usuwa wszystkie istniejące dane w tabeli docelowej. Zachowaj ostrożność w środowiskach produkcyjnych.
Każdą z tych opcji można ukryć w Ustawienia → Ustawienia eksportu, jeśli chcesz zapobiec przypadkowemu nadpisaniu albo ograniczyć pracę wyłącznie do dopisywania.
Postęp eksportu
Okno postępu pokazuje liczbę wyeksportowanych obiektów. Obiekty wysyłane są partiami po 500 wierszy przy użyciu wielowierszowych poleceń INSERT, co poprawia wydajność.
Po zakończeniu komunikat potwierdzający pokazuje nazwę tabeli i łączną liczbę wyeksportowanych obiektów.
Struktura tabeli
Wyeksportowana tabela PostgreSQL ma następującą strukturę:
- Tabela tworzona jest w schemacie public pod nazwą warstwy.
- Dodawana jest kolumna geometrii obsługiwana przez PostGIS, z właściwym typem geometrii i SRID.
- Wszystkie kolumny atrybutowe warstwy GeoPackage są mapowane na typy danych PostgreSQL:
| Typ w GeoPackage | Typ w PostgreSQL |
|---|---|
| TEXT | TEXT |
| INTEGER | BIGINT |
| REAL / DOUBLE | DOUBLE PRECISION |
| BOOLEAN | BOOLEAN |
| DATE | DATE |
| DATETIME | TIMESTAMP |
| BLOB | BYTEA |
Obsługa geometrii
- Geometrie proste (punkt, linia, poligon) są automatycznie zamieniane na odpowiedniki wieloczęściowe (MultiPoint, MultiLineString, MultiPolygon) dla zachowania spójności.
- Jeśli warstwa źródłowa ma współrzędne Z, geometria tworzona jest z użyciem
ST_Force3DZ. - Geometrie wstawiane są przy użyciu
ST_GeomFromWKBz odpowiednim SRID. - SRID wynika z układu współrzędnych warstwy (domyślnie 4326, jeśli nie ustawiono).
Obsługa błędów
| Sytuacja | Zachowanie |
|---|---|
| Dane połączenia nieskonfigurowane | Eksport zostaje odrzucony z komunikatem o konieczności skonfigurowania połączenia z bazą |
| Sieć nieosiągalna lub połączenie odrzucone | Eksport kończy się błędem połączenia |
| Brak uprawnień w bazie danych | Eksport kończy się błędem uwierzytelnienia lub uprawnień |
| Nieprawidłowa geometria obiektu | Obiekt zostaje pominięty; eksport jest kontynuowany |
Przykładowy przebieg pracy
Typowa droga od terenu do bazy danych:
- W terenie: zbieraj obiekty w Mapit GIS z zewnętrznym odbiornikiem GNSS dla wysokiej dokładności.
- W biurze (lub przez dane komórkowe): otwórz ekran warstw, przytrzymaj warstwę i wyeksportuj ją do PostgreSQL w trybie dopisania.
- Na serwerze: przeglądaj dane w QGIS, pgAdmin lub swoich narzędziach raportowych. Tabela zawiera pełną geometrię i wszystkie atrybuty.
-- Przykład: podgląd wyeksportowanych danych w PostgreSQL
SELECT fid, name, ST_AsText(geometry) FROM tree_survey LIMIT 10;
-- Przykład: liczba obiektów według stanu
SELECT overall_condition, COUNT(*) FROM tree_survey GROUP BY overall_condition;
Przy cyklicznych eksportach tej samej warstwy używaj trybu dopisania i dodaj do schematu warstwy kolumnę z datą, aby rozróżniać kolejne sesje pomiarowe.
Jeśli łączysz się przez internet, rozważ użycie VPN lub tunelu SSH w celu zabezpieczenia połączenia z bazą. Połączenie JDBC nie jest domyślnie szyfrowane, chyba że Twój serwer PostgreSQL jest skonfigurowany z obsługą SSL.
Eksport do PostgreSQL wymaga uprawnienia Import/eksport, dostępnego w planach Pro i Pro+.
Mapit GIS na iOS potrafi eksportować warstwy obiektów bezpośrednio do bazy PostgreSQL z rozszerzeniem PostGIS. Połączenie nawiązywane jest bezpośrednio z urządzenia — nie jest potrzebny żaden pośrednik ani serwer proxy.
Eksport do PostgreSQL na iOS wymaga Mapit Pro+. Użytkownicy Pro po dotknięciu któregokolwiek z przycisków eksportu zobaczą okno zakupu z ofertą przejścia na Pro+.
Wymagania wstępne
Przed eksportem:
- Serwer PostgreSQL działa i jest osiągalny z urządzenia (Wi-Fi, dane komórkowe lub VPN).
- Rozszerzenie PostGIS jest zainstalowane w docelowej bazie (
CREATE EXTENSION IF NOT EXISTS postgis;). - Dane połączenia są skonfigurowane w aplikacji — zobacz Połączenia zdalne — PostgreSQL.
Konfiguracja połączenia
Otwórz Ustawienia → Połączenia zdalne → PostgreSQL i uzupełnij dane połączenia:
| Ustawienie | Opis | Domyślnie |
|---|---|---|
| Host | Nazwa hosta lub adres IP serwera | — |
| Port | Port PostgreSQL | 5432 |
| Baza danych | Nazwa docelowej bazy | — |
| Nazwa użytkownika | Użytkownik bazy danych | — |
| Hasło | Przechowywane bezpiecznie w pęku kluczy iOS | — |
| Schemat | Schemat docelowy | public |
| Tryb SSL | disable / prefer / require | prefer |

Tryb prefer ufa dowolnemu certyfikatowi serwera, co odpowiada domyślnemu zachowaniu na Androidzie. W przypadku produkcyjnych baz danych w publicznym internecie używaj trybu require i zadbaj o ważny certyfikat serwera.
Eksport warstwy
- Otwórz ekran Warstwy.
- Dotknij warstwy, którą chcesz wyeksportować, i wybierz Eksportuj.
- W panelu miejsc docelowych wybierz Eksport do PostgreSQL — nadpisanie albo Eksport do PostgreSQL — dopisanie.

Eksport do PostgreSQL działa wyłącznie na poziomie warstwy. Eksport całego projektu do PostgreSQL nie jest obsługiwany — do przenoszenia całych projektów użyj GeoPackage, Dropbox lub SFTP.
Tryby eksportu
| Tryb | Zachowanie |
|---|---|
| Nadpisanie | Usuwa istniejącą tabelę (jeśli istnieje), tworzy nową wraz z indeksem przestrzennym GIST, a następnie wstawia wszystkie obiekty. Operacja nieodwracalna. |
| Dopisanie | Tworzy tabelę, jeśli nie istnieje (CREATE TABLE IF NOT EXISTS), a następnie wstawia obiekty. Istniejące wiersze pozostają nietknięte. |
Przed każdą z tych operacji pojawia się panel potwierdzenia z nazwą warstwy, hostem i bazą danych, dzięki czemu możesz wszystko zweryfikować przed zapisem.


Nadpisanie trwale usuwa wszystkie istniejące dane w tabeli docelowej. Zachowaj ostrożność w środowiskach produkcyjnych.
Każdy z trybów można niezależnie ukryć w Ustawienia → Połączenia zdalne → PostgreSQL → Opcje eksportu, aby ograniczyć pracę wyłącznie do dopisywania lub wyłącznie do nadpisywania. Szczegóły znajdziesz w Połączenia zdalne — PostgreSQL.
Postęp eksportu
Obiekty zapisywane są partiami po 250 wierszy, a każda partia objęta jest transakcją BEGIN / COMMIT. Wycofanie następuje wyłącznie przy błędzie w bieżącej partii — wcześniej zatwierdzone partie pozostają na serwerze. Wskaźnik postępu pokazuje zaawansowanie eksportu.

Wyjściowy układ współrzędnych
Geometrie eksportowane są w formacie wyświetlania ustawionym w Ustawienia → Jednostki i współrzędne. Jeśli ten układ różni się od WGS84, wszystkie geometrie są przeliczane na urządzeniu przed wysyłką — reprojekcja po stronie serwera nie jest potrzebna.
Struktura tabeli
Wyeksportowana tabela tworzona jest w skonfigurowanym schemacie (domyślnie public) pod nazwą warstwy. Przy eksporcie z nadpisaniem na kolumnie geometrii tworzony jest indeks przestrzenny GIST. Kolumny atrybutowe mapowane są następująco:
| Typ w GeoPackage | Typ w PostgreSQL |
|---|---|
| TEXT | TEXT |
| INTEGER | BIGINT |
| REAL / DOUBLE | DOUBLE PRECISION |
| BOOLEAN | BOOLEAN |
| DATE | DATE |
| DATETIME | TIMESTAMP |
| BLOB | BYTEA |
Obsługa błędów
| Sytuacja | Zachowanie |
|---|---|
| Połączenie nieskonfigurowane | Eksport zostaje odrzucony z komunikatem o konieczności skonfigurowania połączenia |
| Sieć nieosiągalna | Eksport kończy się błędem połączenia |
| Brak uprawnień | Eksport kończy się błędem uwierzytelnienia lub uprawnień |
| Nieprawidłowa geometria | Obiekt zostaje pominięty; eksport kontynuowany jest dla pozostałych obiektów |