[opengeodb] OpenGeoDB und Referenzen

Ingo Wiarda nikomar at gmx.net
Mon Feb 19 22:48:43 CET 2007


Hallo Matthias,

Am Montag 19 Februar 2007 11:09:55 schrieb Matthias Dietrich:
> Das Problem: DBIx::Class benötigt gescheite Referenzen.  Diese sind in
> dem aktuellen Schema nicht vorhanden und, soweit ich weiß, fast
> unmöglich zu realisieren (korrigiert mich, wenn ich falsch liege!).

Möchtest du die ganze OpenGeoDB per DBIx::Class abbilden oder nur die 
PLZ-Bereiche? Was für Referenzen fehlen dir denn? Ich habe mich vor einiger 
Zeit damit beschäftigt und damals angefangen, ein Modul Geo::OpenGeoDB zu 
schreiben, das die Abhängigkeiten mit Class::DBI abbildet (wobei ich 
mittlerweile auch DBIx::Class verwenden würde).
Über v0.01 ist das nie hinausgekommen, daher kann es natürlich sein, daß ich 
deswegen nicht auf die Probleme gestoßen bin, die du vor Augen hast...

Gruß,
Ingo


Als Illustration für eine mögliche Abbildung der Datenbank in Class::DBI:
(das kann in der aktuellen Version der DB natürlich ganz anders aussehen)

package Geo::OpenGeoDB::Locations;
our $VERSION="0.001";

use base qw(Geo::OpenGeoDB::DBI Geo::OpenGeoDB);
use strict;

Geo::OpenGeoDB::Locations->table('geodb_locations');
Geo::OpenGeoDB::Locations->columns( 'Primary' => qw(loc_id) );
Geo::OpenGeoDB::Locations->columns( 'All' => qw(loc_id loc_type) );

Geo::OpenGeoDB::Locations->has_many('hierarchies' 
=> 'Geo::OpenGeoDB::Hierarchies', 'loc_id');
Geo::OpenGeoDB::Locations->has_many('textdata' 
=> 'Geo::OpenGeoDB::Textdata', 'loc_id');
Geo::OpenGeoDB::Locations->has_many('intdata' 
=> 'Geo::OpenGeoDB::Intdata', 'loc_id');
Geo::OpenGeoDB::Locations->has_many('floatdata' 
=> 'Geo::OpenGeoDB::Floatdata', 'loc_id');
Geo::OpenGeoDB::Locations->has_many('coordinates' 
=> 'Geo::OpenGeoDB::Coordinates', 'loc_id');

1: