Mam problem z Postgresql i QGIS:
- Mogę dodawać punkty / linie / wielokąty i pola wypełnienia
Ale nie mogę:
- usuń punkty / linie / wielokąty
- modyfikuj punkty / linie / wielokąty (przesuń lub zmodyfikuj pole)
np .: dbname = 'Europa' host = port lokalny host = 5432 użytkownik = 'postgres' sslmode = wyłącz klucz = 'tid' szacowanymetadata = prawda srid = 900913 typ = Tabela punktów = „publiczny”. „planet_osm_point” (sposób) sql =
QGIS jest podłączony jako poziom administratora do bazy danych. Dzięki pdAdmin III mogę zrobić wszystko (tworzyć, usuwać, modyfikować ...)
Baza danych postgresql jest importowana z OSM za pomocą osm2pgsql .
Na innej warstwie, takiej jak .shp, nie mam tego problemu.
Dowolny pomysł ?
Konfiguracja: Ubuntu 14.04 / Posgresql 9.4 / QGIS 2.10
qgis
postgresql
editing
osm2pgsql
Mathieu
źródło
źródło
Odpowiedzi:
Naprawiony. Problem polegał na tym, że nie ma klucza podstawowego.
W pgAdmin zrób to żądanie.
ALTER TABLE tableName ADD PRIMARY KEY (id);
Przykład tabeli planet_osm_line i ustawienia kolumny osm_id jako klucza podstawowego:
ALTER TABLE planet_osm_line DODAJ KLUCZ PODSTAWOWY (osm_id);
dopóki osm_id jest unikalny.
źródło
Rozwiązaniem jest utworzenie klucza podstawowego, jak już wspomniano.
Ale z założenia
osm2pgsql
nie gwarantuje, żeosm_id
jest wyjątkowy. Może wygenerować kilka wierszy o tym samym osm_id .Aby edytować
planet_osm_*
tabele w QGIS, dobrze jest na przykład dodać kolejną kolumnę id, na przykładgid
.Aby dodać unikalną
gid
kolumnę:QGIS ma problemy, jeśli kolumna geometrii to po prostu GEOMETRIA. Niektóre zapytania mogą się nie powieść. Przydało mi się zmienić
planet_osm_polygon
geometrię naMultiPolygon
:źródło
Myślę, że to podstawowy problem. Twój stół powinien go mieć i jest rozpoznawany, gdy przeglądasz go za pomocą PGAdmin.
Miałem ten sam problem, ale ponownie załadowałem warstwę za pomocą pola klucza podstawowego o nazwie ID (dowolne), a wszystkie moje narzędzia edycji są teraz aktywne na pasku narzędzi.
Za pomocą SQL można dodać kolumnę OID typu danych „serial” i utworzyć klucz podstawowy za pomocą tej instrukcji:
Za pomocą GUI możesz ponownie załadować warstwę za pomocą klucza podstawowego, który zostanie rozpoznany przez bazę danych, a tym samym PostGIS i QGIS:
Stamtąd wróć do PGAdmin, połącz się z bazą danych i kliknij tabelę, którą właśnie utworzyłeś - możesz teraz zobaczyć, czy kolumna OID jest rozpoznawana:
źródło