[opengeodb] OpengeoDB mit PostGIS
Martin Weis
martin.weis.newsadress at gmx.de
Fre Dez 1 14:54:32 CET 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hallo Thomas!
> Habe gerade mal die Daten in eine
> PostgreSQL-Datenbank importiert. Da
> ich hier auch PostGIS nutze und daher gerne eine
> Geometry-Spalte hätte,
> hab ich sie erzeugt.
>
>
>> Gibt es auch schon Daten für diese Spalte, abgesehen
>> von den Punkten, also z.B. Shapes?
In der Opengeodb sind bisher nur Punktdaten. Wenn du noch andere Daten
(z.B. Postleitzahl-Polygone) hast, sollten die in eine eigene Tabelle.
Postleitzahlen-Polygone kannst du beim Mapbender-Projekt bekommen:
http://prdownloads.sourceforge.net/mapbender/plz.zip?download
Dann evtl. noch den Datenbanknutzer am Beginn des SQL-Files anpassen
(\connect - dbnutzer) und das encoding anpassen:
iconv -t utf-8 -f iso-8859-1 plz.sql > plz_utf8.sql
# Daten einlesen
psql -d opengeodb -f plz_utf8.sql
- -- [SQL] eine Zeile in der Tabelle geometry_columns hinzufügen:
INSERT INTO geometry_columns (f_table_catalog, f_table_schema,
f_table_name, f_geometry_column, coord_dimension, srid, "type")
VALUES ('', 'public', 'post_code_areas', 'the_geom', 2, 4326,
'MULTIPOLYGON');
- -- Einen (oder zwei) Index(e) erzeugen
CREATE INDEX coord_geom_idx ON geodb_coordinates USING GIST (the_geom);
CREATE INDEX plz_plz99_idx ON post_code_areas USING btree (plz99);
VACUUM ANALYSE;
- -- Ein Select mit einer Geometrie aus post_code_areas
- -- Die Relation innerhalb der opengeodb wäre schneller,
- -- aber so ist das Prinzip:
- -- Diese hier nutzt einfach die Bounding Box (Index wird genutzt):
SELECT c.* , plz.* , asewkt(c.the_geom) AS coor_wkt
FROM geodb_coordinates c , post_code_areas plz
WHERE c.the_geom && plz.the_geom
AND plz.plz99 = '01067'
- -- Diese nutzt die Bounding Box und verschneidet die Geometrien:
SELECT c.* , plz.*
FROM geodb_coordinates c , post_code_areas plz
WHERE c.the_geom && plz.the_geom
AND intersects(c.the_geom,
(SELECT the_geom FROM post_code_areas
WHERE plz99 = '01067'))
- -- Diese Abfrage kann sicher noch optimiert werden, aber das ist ein
- -- anderes Thema und soll später mal behandelt werden :-)
- --
Martin Weis
PGP-Key: http://datenroulette.de/pgp.php
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Debian - http://enigmail.mozdev.org
iD8DBQFFcDQY5j8IxyG/AuwRAjPMAKCyHD+kAOw65Xzmpm0gHajldQ8EdACfeaxZ
SakYZ5M9GOQQVsz7ZEvHSHU=
=e4pG
-----END PGP SIGNATURE-----