[Talk-de] Relationsstruktur fuer geografische Einordnung
Florian Lohoff
flo at rfc822.org
Do Okt 8 11:15:13 UTC 2009
On Thu, Oct 08, 2009 at 07:16:11AM +0200, Marcus Wolschon wrote:
> On 2009-10-07, Frederik Ramm <frederik at remote.org> wrote:
> > 1. Wir haben eine raeumliche Datenbank. Da kann man sowas anhand der
> > Daten feststellen. Wenn man es nicht kann, muss man seine Daten
> > verbessern oder seine Abfragemethoden - aber ob eine Kneipe in
> > Deutschland liegt oder in Frankreich, das moechte ich lieber anhand der
> > Grenze feststellen als anhand irgendwelcher Relationenzugehoerigkeiten!
>
> Dann brauchen wir aber endlich eine andere Möglichkeit die Polygone zu finden
> in denen ein Punkt enthalten ist als nur "lade halt das Planet-File und prüfe
> alle Ways darin".
> Enthaltensein in Relationen kann man gut navigieren.
> Ich bevorzuge auch Polygone und zur Not Multipolygone
> aber wir können übr die nicht "nach oben" navigieren.
Also ich kann sowas in meiner postgres? Um es zu beschleunigen baut
man sich aus den boundarys polygone:
insert into completeborders ( id, adminlevel, name, border, path )
select border.id,
border.adminlevel::integer,
border.name,
ST_BuildArea(ST_Collect(linestring)) as geom,
?
from (
select rm.id, rm.adminlevel, rm.name, w.linestring
from ways w, (
select rm.relation_id as id,
rm.member_id as wayid,
rt1.v as adminlevel,
rt2.v as name
from relation_members rm,
relation_tags rt1,
relation_tags rt2
where rm.member_type = 'W'
and rm.relation_id in ( ? )
and rm.relation_id = rt1.relation_id
and rm.relation_id = rt2.relation_id
and rt1.k = 'admin_level'
and rt2.k = 'name'
order by id
) rm
where w.id = rm.wayid
and ST_NumPoints(w.linestring)>1
) as border
group by border.id, border.adminlevel, border.name
Dann einfach mal fragen in welchen polygonen das ist:
osm=> select * from node_tags where k='name' and v='Mastholte';
node_id | k | v
-----------+------+-----------
248064797 | name | Mastholte
(1 row)
sm=> select cb.id,cb.adminlevel,cb.name from completeborders cb, nodes n where n.id = 248064797 and ST_Within(n.geom, cb.border) order by adminlevel desc;
id | adminlevel | name
-------+------------+--------------------------
78758 | 8 | Rietberg
62379 | 6 | Kreis Gütersloh
73347 | 5 | Regierungsbezirk Detmold
62761 | 4 | Nordrhein-Westfalen
(4 rows)
Time: 65.338 ms
D.h. der Stadtteil Mastholte gehoert zu Rietberg, Kreis Gütersloh,
Regierungsbezirk Detmold in Nordrhein Westfalen. Alles kein Hexenwerk ...
Flo
--
Florian Lohoff flo at rfc822.org
"Es ist ein grobes Missverständnis und eine Fehlwahrnehmung, dem Staat
im Internet Zensur- und Überwachungsabsichten zu unterstellen."
- - Bundesminister Dr. Wolfgang Schäuble -- 10. Juli in Berlin
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 189 bytes
Beschreibung: Digital signature
URL : <http://lists.openstreetmap.org/pipermail/talk-de/attachments/20091008/86d5fd18/attachment.sig>
Mehr Informationen über die Mailingliste Talk-de