Ergebnis 1 bis 6 von 6

Thema: pgsql2shp Export in UTF-8 und falsche Darstellung in ArcGIS

  1. #1
    pgler ist offline Neuer Benutzer
    Registriert seit
    14.02.2010
    Beiträge
    10

    Standard pgsql2shp Export in UTF-8 und falsche Darstellung in ArcGIS

    Hallo,

    ich habe das Problem das von pgsql2shp und QGIS erstellte Shapedateien im UTF-8 Format von ArcGIS zwar geöffnet und angezeigt werden aber Umlaute und Unicodezeichen falsch dargestellt werden.
    Da die Variante über .cpg-Datei und Registryeintrag nicht funktionierten habe ich nach langem suchen ein Hinweis auf eine Einstellung im Header der .dbf-Datei gefunden. Das 29. Byte in der Datei ist die „Language driver ID“ die bei funktionierenden Shapedateien auf 00 steht und bei pgsql2shp und QGIS auf 57 was aber keine offizielle ID zu sein scheint. Also habe ich einfach mit einem Hex-Editor die 57 mit 00 überschrieben und siehe da ArcGIS zeigt alles richtig an.

    Meine Frage ist jetzt wie ich das ganze ohne diesen Aufwand mit dem Hex-Editor beeinflussen kann also ArcGIS dazu bringen diese ID nicht zu beachten oder pgsql2shp die ID auf 00 zu setzen?

    MfG

  2. #2
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    Irgendwo habe ich in Erinnerung, das ESRI-Shapes intern immer Latin-1 codiert sein möchten. Also könntest du sie mal mal versuchen als Latin-1 rauszuschreiben, bzw. per set client_encoding die Darstellung zu beeinflussen. Ich schu mal wi ich das beim letzten Mal gelöst habe...

    Gruß Uwe
    Have a lot of fun!

  3. #3
    pgler ist offline Neuer Benutzer
    Registriert seit
    14.02.2010
    Beiträge
    10

    Standard

    Mit "client_encoding = LATIN1" funktioniert nicht da er die Unicodezeichen ja nicht umwandeln kann:
    "Dumping: XXRecordFetch: FEHLER: Zeichen 0xe28093 in Kodierung UTF8 hat keine Entsprechung in LATIN1"

    Ich möchte aber die Unicodezeichen behalten, also das Ergebnis muß schon UTF-8 bleiben nur im Header muß was für ArcGIS verständliches stehen.

  4. #4
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    Hm. Ich kann das im Moment nicht reproduzieren. In einem Projekt hier wurden UTF-8 Daten mit Umlaute etc. einwandfrei in ein Shapefile verfrachtet und AFAIR auch korrekt angezeigt. Leider kann ich das im Moment nur in QGis prüfen, aber sobald ich mir wieder eine VM mit Windows eingerichtet habe schau ich auch in ArcGIS nach. Welche Versionen von PostGIS/ArcView verwendest du denn? Hast du die Daten mit dem richtigen encoding eingelesen?
    Encoding ist eine Geschichte voller Mißverständnisse

    Gruß Uwe
    Have a lot of fun!

  5. #5
    pgler ist offline Neuer Benutzer
    Registriert seit
    14.02.2010
    Beiträge
    10

    Standard

    Versionen:
    ArcView 9.3.1 bzw. ArcCatalog usw.
    "PostgreSQL 8.4.7 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5) 4.4.3, 64-bit"
    "POSTGIS="1.5.2" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.6" USE_STATS"
    Code:
    CREATE DATABASE osm_sn
      WITH OWNER = postgres
           ENCODING = 'UTF8'
           TABLESPACE = pg_default
           LC_COLLATE = 'de_DE.utf8'
           LC_CTYPE = 'de_DE.utf8'
           CONNECTION LIMIT = -1;
    Die Daten sind von OSM importiert mit osm2pgsql und werden bei jeder direkten Abfrage der Datenbank korrekt angezeigt.

    QGIS funktioniert bei mir ja auch. (erstellt genauso wie pgsql2shp die *.dbf mit dem 29. Byte 0x57)
    Hab nicht alle Programme ausprobiert aber in der ganzen Open Source Welt scheint es damit kein Problem zu geben.

    Wenn ich das ganze im Link richtig verstehe erkennt ArcGIS die Language driver ID nicht und nimmt dann immer OEM obwohl *.cpg und Registry eintrag auf UTF-8 stehen.
    21106 - Read and write shapefile and dBASE files encoded in various code pages
    DBase File Structure

    Wenn das Byte aber auf 0x00 (undefiniert) gesetzt wird nimmt ArcGIS die *.cpg oder Registryeintrag.

  6. #6
    pgler ist offline Neuer Benutzer
    Registriert seit
    14.02.2010
    Beiträge
    10

    Standard

    Hat keiner noch Ideen?

    Bester Workaround bisher:
    Code:
    dd if=/dev/zero of=xyz.dbf conv=notrunc bs=1 count=1 seek=29

Ähnliche Themen

  1. pgsql2shp
    Von Hanno im Forum PostGIS
    Antworten: 2
    Letzter Beitrag: 07.12.2010, 16:14
  2. Falsche Sortierreihenfolge bei UTF8
    Von revolverdeveloper im Forum Konfiguration
    Antworten: 4
    Letzter Beitrag: 28.09.2009, 10:06
  3. Grafische Darstellung von ForeignKeys
    Von lollo im Forum Sonstige
    Antworten: 6
    Letzter Beitrag: 28.11.2008, 17:02
  4. Array_Upper liefert falsche Werte
    Von Imon im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 14.12.2007, 07:11
  5. HILFE - falsche datensätze gelöscht
    Von NashBridges im Forum phpPGAdmin
    Antworten: 2
    Letzter Beitrag: 04.09.2007, 10:37

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum