Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Postgresql i postgis
26-04-2013, 10:22,
#4
RE: Postgresql i postgis
(26-04-2013, 08:10)sebaq napisał(a): Cześć!
A jak najszybciej uzupełnić tabelę geometry_columns? Insertami, czy może QGIS/PostgreSQL/PostGIS to zrobi automatem? QGIS ładnie dodaje wpisy przy użyciu wtyczki SPIT, aczkolwiek dane mogą być dodawane z różnych źródeł i nie zawsze się o tym pamięta.

Kiedy tworzysz tabelę, w poleceniu CREATE TABLE powinieneś pominąć kolumnę geometrii i dodać ją później funkcją AddGeometryColumn (patrz: dok. PostGIS-a), która od razu doda wpis do geometry_columns oraz pozakłada constrainty. SPIT również trzyma się tej zasady.

Jeśli dodałeś (albo coś dodało) kolumnę od razu w poleceniu CREATE TABLE, to trzeba oddzielnie wstawiać insertami.

Cytat: I jak rozpoznać poprawną geometrię...

Np. SELECT DISTINCT ST_GeometryType na każdej tabeli, czyli to, co teraz robi QGIS przy każdym łączeniu się z bazą.

Cytat:Nie zawsze mamy pewność czy mamy do czynienia tylko z LINESTRING czy MULTILINESTRING. Być może lepiej wtedy stosować 'nadmiarowo' prefix MULTI?

Mieszanie różnych typów geometrii w jednej tabeli generalnie nie jest dobrym pomysłem. Po pierwsze QGIS nie obsługuje mieszanych warstw i właśnie po to analizuje typy geometrii w każdej tabeli, żeby móc je porozbijać na osobne warstwy w razie znalezienia różnych typów. Jeśli oszukasz go w geometry_columns, to może to prowadzić do błędów (a co najmniej do pominięcia rekordów z niepasującym typem). Po drugie to się zwykle wyspie przy eksporcie (np. przez ogr2ogr), po trzecie czasami przy wewnętrznych operacjach w PostGISie trzeba wiedzieć, czy to jest MULTI czy nie i wtedy trzeba takie działania robić dwukrotnie z WHERE ST_GeometryType. Poza tym wszystkim, gdybym wiedział, że w tabeli jest tylko jeden typ geometrii, to w poprzednim akapicie zamiast DISTINCT dałbym zwykłe LIMIT 1.

Absolutnie nie możesz wpisać do geometry_columns MULTI, jeśli w tabeli siedzą zwykłe linie. To jest inny typ, np. po pierwszej konwersji do WKT wysypie się na brakujących nawiasach. Jeśli masz w tabeli MULTI i zwykłe, to przekonwertuj wszystkie zwykłe do MULTI (patrz: google).

Cytat:No i co w przypadku warstw opartych na widokach?

Nie próbowałem, ale jeśli masz porządek w danych, to typy nie powinny się pomieszać, a wpis w geometry_columns powinien działać i dla widoków. Jeśli masz tylko kilka, to zresztą można by je zostawić je w spokoju - może przyśpieszenie na zwykłych tabelach wystarczy.

Cytat:Dodatkowo spytam czy dodanie CONSTRAINTów typu enforce_geotype_the_geom, enforce_srid_the_geom czy enforce_dims_the_geom na tabeli z geometrią jest obligatoryjne i czy cokolwiek poprawia?

Technicznej obligatoryjności nie ma, ale poprawia rzecz najbardziej fundamentalną, czyli spójność danych... Smile


Wiadomości w tym wątku
Postgresql i postgis - przez Kaczka - 22-04-2013, 12:05
RE: Postgresql i postgis - przez borys - 24-04-2013, 22:53
RE: Postgresql i postgis - przez sebaq - 26-04-2013, 08:10
RE: Postgresql i postgis - przez borys - 26-04-2013, 10:22
RE: Postgresql i postgis - przez sebaq - 26-04-2013, 12:33
RE: Postgresql i postgis - przez Kaczka - 29-04-2013, 16:49
RE: Postgresql i postgis - przez PanKuleczka - 15-05-2013, 13:30

Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  QGIS Postgresql Postgis - przybliżenie kamilwydra 5 4 284 23-11-2021, 02:05
Ostatni post: gsienko

Skocz do: