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