[GRASS-de] probleme und fehler von und mit grass und postgres
Ingo Wichmann
wichmann at uni-wuppertal.de
Di Aug 6 12:54:21 CEST 2002
Hi!
(Bitte entschuldigt, daß ich die Mail auf englisch geschrieben habe. Als
ich sie verfasst habe saß ich auf einer Wiese an einem See, weit weg von
meinen restlichen emails und dachte die grass liste die ich abonniert
habe sei englisch.)
I tried to import some shape-file data along with its attributes to
postgres.
There where several problems i couldn't solve:
- d.what.vect crashes when i query some roads
- pg.in.dbf stops with error because of a duplicate attributename
- v.in.shape.pg crashes
After changing the name of the duplicate attribute (see below for more)
with vi in the dbf-file pg.in.dbf worked.v.in.shape.pg still does not work.
Is there an other way to import a shape-file into a postgresql-database,
maybe without grass? I've found Perl-Bindings for shapelib. Does anybody
use this?
These are the steps i did:
First, i tried to simply import them to the grass-database, with one
attribute only:
# v.in.shape -o in=/home/wichmann/dpa/shape_files_is/strasse.shp
label=STRASSENNA
..
File `strasse.shp' is of Type Line (Arc) with 2928 entries.
..
Map `strasse' imported, apparently without problems.
# d.erase
# v.support -r map=strasse
V.SUPPORT:
Selected information from vector header
Organization:
Map Name: strasse
Source Date:
Orig. Scale: 2400
Snapping threshold 0.00
Snapp No snapping will be done
Reading Vector file 100%
Building areas 100%
Building islands (no islands present)
Attaching labels
WARNING: line 1032 label: 526 matched another label: 1032.
.. (about 30 similar warnings)
Number of lines: 2940
Number of nodes: 2500
Number of areas: 0
Number of isles: 0
Number of atts : 2940
Number of unattached atts : 0
Snapped lines : 0
# d.vect map=strasse color=blue
(roads are displayed)
# d.what.vect map=strasse
3408653.10833333(E) 5686922.16666667(N)
strasse in wichmann Line - Category 2408 Eileringser Straße
3403699.025(E) 5695267.89166667(N)
Speicherzugriffsfehler
(memory-access-error)
Then i tried to import everything into postgres:
Similar to the tutorial in grass5.0.0pre5/src.garden/grass.postgresql i
started with
# g.select.pg host=localhost database=strasse
# pg.in.dbf in=/home/wichmann/dpa/shape_files_is/strasse.dbf
Executing create table strasse (ID int8,LäNGENBERE float4,ID_KEY
int4,KATEGORIE int4,ABSCHNITTN text,STRAßENSCH int4,ABSCHNITTL
float4,ABSCHNITTN text,STRASSENNA text,SCHADENSAR text,AUSPRäGUNG
text,STRSCHL int4,ELEMENTBRE float4,UMFANG_IN_ int4,SCHADENSFL
float4,MAßNAHME text,MAßNAHMENJ int4,BLK text,OD text)
FIXME: Postgres Says:
**********************
ERROR: CREATE TABLE: attribute "abschnittn" duplicated
Please make sure that created table name is not used by another table.
# v.in.shape.pg in=/home/wichmann/dpa/shape_files_is/strasse.shp
attribute=ID label=STRASSENNA
Speicherzugriffsfehler
At last, i changed the name of the doubled attribute and tried again:
# pg.in.dbf in=/home/wichmann/dpa/shape_files_is/strasse.dbf dumpmode=normal
(works fine)
# dropdb strasse
# createdb strasse
# v.in.shape.pg in=/home/wichmann/dpa/shape_files_is/strasse.shp
attribute=ID
Not assigning category labels
Selected information from vector header
Organization:
Map Name: strasse
Source Date:
Orig. Scale: 2400
No snapping will be done
Reading Vector file.
5 11 17 23 29 35 41 47 53 59 65 71 77 83 89 95 100
Identical lines check
Compressing Data:
Compressing NODES.^M Compressing NODES. LINES.^M Compressing NODES.
LINES. A
REAS.^M Compressing NODES. LINES. AREAS. ISLES.^M Compressing NODES.
LINES.
AREAS. ISLES. ATTS.^MCompressing Data: DONE.
Building areas
2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50
53 56 59
62 65 68 71 74 77 80 83 86 89 92 95 98 100
Building islands
(no islands present)
Attaching labels
WARNING: line 2841 label: 85 matched another label: 127.
WARNING: line 1082 label: 20 matched another label: 552.
.. (about 25.000 similar warnings)
Number of lines: 2895
Number of nodes: 2300
Number of areas: 0
Number of isles: 0
Number of atts : 28907
Number of unattached atts : 41
Snapped lines : 0
The output looks as if it worked, but it didn't. There is nothing in the
database.
Here is a list of the columns in the dbf-file. Maybe it helps. I don't
remember the command to generate it.
1: ID [int8:16]
2: LäNGENBERE [float4:16]
3: ID_KEY [int4:4]
4: KATEGORIE [int4:1]
5: ABSCHNITTN [text:14]
6: STRAßENSCH [int4:4]
7: ABSCHNITTL [float4:7]
8: ABSCHNITTN [text:16]
9: STRASSENNA [text:22]
10: SCHADENSAR [text:23]
11: AUSPRäGUNG [text:10]
12: STRSCHL [int4:4]
13: ELEMENTBRE [float4:4]
14: UMFANG_IN_ [int4:3]
15: SCHADENSFL [float4:7]
16: MAßNAHME [text:22]
17: MAßNAHMENJ [int4:4]
18: BLK [text:16]
19: OD [text:16]
Here are some errors i found in
grass5.0.0pre5/src.garden/grass.postgresql/tutorial/index.html:
The command to remove the database from postgresql is
dropdb humus
instead of
destroydb humus
The parameters input and pgdump of v.in.shape.pg do not work. Instead of
input
you have to use
in
I don't know what the pgdump parameter is for nor how to replace it.