Teilweiser Import vom Shape-Dateien

Guten Morgen,

habe mal wieder ein Problem:

Mit dem Tool shp2pgsql importierten wir eine ESRI-Shapedate in eine Postgis-Tabelle.

Bei Darstellung dieser Tabelle mit QGIS stellten wir fest, dass in dieser keinerlei Beschriftung der Fundstellen enthalten war.

In der Shapedatei ist die Beschriftung ok; Beschriftung und Grafiken der Fundstellen befinden sich auf einem Layer.

Wo könnte der Fehler liegen? Danke für Eure Ideen :slight_smile:

LG Bernd

Hallo Bernd,

steht in der Spalte “Beschriftung der Fundstellen” der Default-Wert oder ein anderer Wert. Ich hoffe das Du die Spalte mit dem Default-Wert NULL initialisiert hast. Zumindest kann man so feststellen, ob shp2pgsql den Wert auch eingelesen hat.

PS: ich kenne shp2pgsql nicht, ist nur so eine Idee.



mfg

fristo

Guten Morgen, fristo,

die von Dir genannte Spalte ist initialisiert; sie hat aber momentan auch nichts mit der Beschriftung zu tun.

Wir mussten etwas inprovisieren:

Die Fundstellen wurden in Coreldraw erfasst (=gezeichnet) und auch dort eindeutig mit Ziffern beschriftet.

Als das fertig war, haben wir die Schriften in Kurven umgewandelt und das Ganze als DXF-File (Autocad) exportiert. Aus diesem File haben wir dann per Delphi die Splines herausgefiltert.

Danach haben wir mit dem Tool “dfx2shp” das DXF-File in einen ESRI-Shape konvertiert.

Wenn ich mir das Shapefile ansehe, ist dort die Beschriftung rund um die Fundstellen ordnungsgemäß vorhanden.
Nach dem Import mit shp2pgsql sind leider die Zahlen verschwunden, d.h. sie werden mit dem Tool QGIS beim Auslesen der Postgis-Tabelle nicht dargestellt; außerdem dauert das Lesen der ca. 1,5 Millionen Datensätze ca. 2,5 - 3 Stunden.


Gruß Bernd :wink:

Nur nochmal zum Verständnis:
Die Schriften sind als Geometrie abgespeichert? Oder habe ich das falsch Verstanden?

Sie werden in QGIS nicht angezeigt. Sind die Daten in der PostGIS-Tabelle? Oder fehlen die Daten dort auch?

Hallo Maik,

das hast Du richtig verstanden; die Schriften wurden schon in Corel in Kurven umgewandelt; sie sind im Shapefile noch vorhanden, aber leider in der Postgis-Datenbank nach dem Import nicht mehr.

Das heißt, ich gehe davon aus, dass sie nicht vorhanden sind, da QGIS sie nicht darstellt.

Gruß Bernd

Hallo Pegasus.

Das solltest du vielleicht als erstes mal überprüfen. Ich hatte nämlich schonmal ein folgende Fälle.

  1. Die Daten wurden erst garnicht importiert.
  2. Die Daten wurden importiert, waren aber beschädigt.

Gibt es in dem Shapefile nur eine Spalte des Types Geometry oder mehrere?

Maik

Hallo Bernd,

ich habe zwar den Spaltennamen genannt, mir ging es aber darum ob die Daten überhaupt importiert wurden. Das kann man doch ganz einfach mit PgAdmin überprüfen!


Ich kann mir nicht vorstellen, dass das an PostgreSQL liegt. Um eine Zeit für das Lesen der Daten von PostgreSQL zu erhalten solltest Du auf dem Server mit PgAdmin ein SELECT * auf die Tabelle ausführen (vorher aber die Option LIMIT ändern). Unten rechts steht eine Zeit, die PgAdmin zum Lesen braucht. Die restliche Zeit wird dann an anderer Stelle verbraucht. Ist Dein SELECT komplexer, solltest Du ihn mal mit EXPLAIN untersuchen.


mfg

fristo

Vielleicht hilft ja ein VACUUM ANALYZE.

Edit: Also für das Leseproblem.

Hallo fristo,

100 Datensätze werden in 172869 ms gelesen…mein System ist noch viel langsamer geworden.

Ursache Virenscanner, Firewall oder Windoof XP…ich glaub, ich steige komplett auf Linux um :frowning:

Gruß Bernd

Hallo Bernd,

Der Wert ist wirklich einsame Spitze!


Ich behaupte mal Windoof! Ist ein bekannte Tatsache. Auch eigene Erfahrung. Suche mal im Internet nach “Windows langsam” (ohne "-Zeichen).

Platte voll? Defragmentierung! Dienste abschalten! Vor allem der Index-Dienst ist ein großer Zeitfresser! Virenscanner sind Zeitfresser. Firewall ja, wenn Du nicht lokal arbeitest. Temp- + Internet-Temp-Verzeichnisse leeren. Im Taskmanager mal die Prozesse beobachten! Kann aber auch ein RAM-Problem sein, so das immer viel in die Auslagerungsdatei geschrieben wird.

Aber auch UNIX-Profis wissen warum sie nur eine Datenbank auf einem Server laufen lassen und alle nicht notwendigen Prozesse abschalten (Dies ist keine Werbung für Windoof)!



mfg

fristo

Ohje, das hört sich ja übel an!

Also ich kann mich fristo nur anschließen. Schalte einfach mal alles ab was nicht unbedingt laufen muss. Bzw. schau in der Prozessliste mal nach wo die Ressourcen verbraten werden. Vielleicht kannst du da ja auf eine Alternative umsteigen mit der es schneller läuft.
Eine ältere Norton Antivirus-Version könnte der Grund sein. Nur um mal einen der üblichen Verdächtigen zu nennen.
Ansonsten bewirkt es manchmal Wunder zu defragmentieren, die Registrie zu bereinigen oder gar das System neu aufzusetzen. Aber letzteres würde ich nur machen wenn garnichts mehr hilft und du nicht auf Linux umsteigen willst.

EDIT: Gibt es eigentlich etwas neues bei deinem anderen Problem?

Hallo,

habe erstmal mein System, wie vorgeschlagen, bereinigt. Kann jetzt 100000 Sätze in 26 Sekunden lesen - das müsste ein guter Wert sein, oder? :smiley:

Und…oh Wunder …jetzt sind auf einmal auch die Zahlen drin, natürlich nicht gerade “schön”, da wir die Zahlen in Kurven konvertierten.

Bin jedenfalls erst einmal teilweise zufrieden…

Danke für Eure Hilfe - bis zum nächsten Mal.

Gruß Bernd :wink:

Hallo Bernd,

eine Steigerung um mehr als 660% ist ja schon was, beim genauen Hinsehen würde man auch noch mehr erzielen.

Zumindest hat es Dir gezeigt, was man mit der Pflege des Betriebssystems erreichen kann.



mfg

fristo

Hallo Fristo,

auf die 1,5 Millionen Sätze bezogen sind es doch sogar 2300% Geschwindigkeitszuwachs…von meinem letzten Test mit den 100 Sätzen möchte ich garnicht reden.

Das macht schon richtig Spaß, mit Postgres zu arbeiten; jetzt kommen Postgis-Probleme auf mich zu, ich setze im entsprechenden Unterform eine neue Anfrage.

Gruß Bernd