Re: Indexierung von Geokoordinaten

Frank Jagusch <[email protected]>
Newsgroups gmane.comp.web.zope.german
Message-ID <1289609106.6350.24.camel@localhost>
HAllo Kay,

Am Freitag, den 12.11.2010, 17:46 +0100 schrieb Kay-Michael Ortmann:
> Hallo Andreas,
> 
> ich habe gelesen, dass eine entfernungsmäßige Indexierung (aus den
> Geodaten) noch nicht möglich ist. Das hat mit „in der Nähe von finden“
> nichts zu tun. Es soll später kommen, ich weiß aber nicht, ob damit
> das „New Spherical Model“ für 1.7.0 gemeint war oder was anderes.

Meines wissen gibt es keinen "Entfernungsindex" in Datenbanken. Wenn Du
einen solchen Aufbauen willst, dann wächst er im Quadrat zur Anzahl
Deiner Geokoordinaten. - Und das macht keiner...

> Dank meiner Fremdsprachenallergie, habe ich nun mal Probleme beim
> Fachchinesisch. Und die beiden kannten sich geographisch-mathematisch
> erheblich besser aus als ich.

Eine Schnellbesohlung für die Entfernungsberechnung auf unserer Erdkugel
findest Du hier: http://de.wikipedia.org/wiki/Orthodrome

Wenn Du eine Entfernungs- oder Umkreissuche implementieren willst dann
solltest Du drei Fälle unterscheiden:
- Kreisdurchmesser weniger als ca. 10 km: Die Erdkrümmung ist
vernachlässigbar
- Kreisdurchmesser größer als ca. 1000 km bzw. der Kreis kommt in
Polnähe
- alles dazwischen

Für den Bereich "alles dazwischen" ist es am einfachsten, dass du in
Deiner Datenbank alle Objekte in einem umschreibenden Viereck (anhand
eines schnell berechneten Bereichs der Breiten- und Längenangaben)
"grob" auswählst und diese dann nochmal auf dem Datenbankclient anhand
der Formel für das Orthodrome auf dem Referenzellipsoid unserer Erdkugel
aussortierst.
Bei kleinen Kreisen kannst Du das Aussortieren vereinfachen, indem Du
den Phytagoras statt des Orthodromes verwendest.
Bei großen Kreisen wird vor allem eine sinnvolle Vorauswahl zunehmend
schwer, denn das über die Breiten- und Längenangaben aufgespannte
Viereck wird immer "krümmer". Da kann es durchaus erforderlich sein,
dass Du entweder immer Deinen gesamten Datenbestand anhand der
Orthodromeformel umgräbst oder einen Index z.B. in einer eigenen
Datenbanktabelle aufbaust. Die letzte Entscheidung ist freilich von
Deinem Projekt abhängig (Anzahl der Objekte, Performanceanforderung,
Abwägung zwischen Speicher und Rechenleistung...).

Viel Spaß dabei...

Grüße von
Frank
-- 
http://www.jagusch-online.de/cdlfj



_______________________________________________
zope mailing list
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.