[FOSSGIS-Talk] GRASS mit PostgreSQL

Markus Neteler neteler at osgeo.org
Fr Dez 16 17:03:40 CET 2011


Moin Moin,

2011/12/16 Tom Gottfried <tom.gottfried at tum.de>:
> Hallo nochmal,
>
> Am 16.12.2011 14:53, schrieb Horst Düster:
>
>> Hallo Tom
>>
>> Das ist sieht mir wie ein DBF Problem aus. Ich nehme an, dass Du als GRASS
>> DB-Treiber DBF eingestellt hast.

Um welche GRASS Version handelt es sich denn?

> Nein und ja. Der Fehler kommt sowohl mit PG als auch mit DBF als DB-Treiber.
> Mit sqlite kann ich die Daten aber tatsächlich importieren (Obwohl später
> auch Warnungen auftreten, dass "datetime" nicht unterstützt ist).

Das sollte gglfs korrigiert werden.

Im source code sehe ich:

PG-Driver:
    case PG_TYPE_TIMESTAMP:
        *sqltype = DB_SQL_TYPE_TIMESTAMP;
        *size = 22;             /* YYYY-MM-DD HH:MM:SS+TZ */
        break;

DBF-Driver:
    case (SQLP_DATE):           /* DATE treated as string unless
SHAPELIB/DBFLIB supports date type */
        *type = DBF_CHAR;
        *width = 10;            /* 2004-01-23 = 10 chars */
        *decimals = 0;
        break;

SQLite-Driver:
        case DB_SQL_TYPE_TIMESTAMP:
            dt = &value->t;
            G_debug(3, "sqlite fetched timestamp: %s", text);
            ns = sscanf(text, "%4d-%2d-%2d %2d:%2d:%lf",
                        &dt->year, &dt->month, &dt->day,
                        &dt->hour, &dt->minute, &dt->seconds);
            if (ns != 6) {
                append_error("Cannot scan timestamp:");
                append_error(text);
                report_error();
                return DB_FAILED;
            }
            break;


Da eigentlich (aus meiner Sicht) alles da sein sollte, bitte ich um
ein Ticket, wenn die GRASS Version >= 6.4 ist:

http://trac.osgeo.org/grass/

>
>> Besser ist es SQLite als DB zu verwenden. Das unterstützt u.a. mehr
>> Datentypen und auch lange Attributnamen.

Dem stimme ich zu. In GRASS 7 ist es der Standardtreiber.

Schoene Gruesse
Markus