Domino 9 und frühere Versionen > ND6: Entwicklung

Entfernungen bestimmen

<< < (12/13) > >>

Glombi:
Ich habe das schon mal gemacht und werde es heute Abend rauskramen (zur Zeit bin ich unterwegs und komme da nicht heran...).
Prinzipiell geht es so: Die Koordinaten müssen von der Form GG MM SS,SSSS (Grad Minuten Sekunden) in die Form GG,GGGGGG umgerechnet werden. Dort dann denn Offset (d.h. den gewünschten Radius = Umkreis) addieren und alles was dann kleiner ist, gehört dazu.
Zu bedenken ist noch, das Notes in Rad und nicht in Grad rechnet, also muss noch transformiert werden.

Andreas

eknori (retired):
Andreas:

die DEG - RAD Tranformation ist bereits in der Formel berücksichtigt.

eknori (retired):
Hier die openGeoDB Daten in Notesform ( PLZ, City, Länge, Breite ) ca 14.000 EInträge

eknori (retired):
habe mal meine Idee zur Umkreissuche al kurz aufgesribbelt. Sollte aber im Prinzip so funktionieren.
Man möge mir meine mathematischen Unzulänglichkeiten entschuldigen . Aber ich denke mal, es kommt rüber, wie es gemeint ist

                              P1
                               |
                               |
                               |
                               |
                               |
                               |
                               |
                               |

  P4<----------------P0------------------>P2
                               |
                               |
                               |
                               |
                               |
                               |
                               |
                               |
                               P3

P0 wird beschrieben durch l0 und b0

bei einem Umkreis von 10km ergibt sich ein Offset_L von 5'24'' und ein Offset_B von 8'38''

also gilt

P1 = l0 + Offset_L
P3 = l0 - Offset_L
P2 = b0 + Offset_B
P4 = b0 - Offset_B

Gültige Werte z.B. für das durch P0,P1 und P4 definierte Rechteck werden beschrieben durch

coord =  AllDocs (<= P1 & >= P4)

wobei P1 und P4 Länge und Breite des Docs repräsentieren

Stellt man nun für alle Rechtecke ausgehend von P0 die Formeln aus und vereinfacht man diese anschließend, so werden
die gültigen Dokumente durch die Formel

collection = AllDocs ( =<P1 & >= P3 ) & ( >= P4 & =< P2 ) beschrieben

Ulrich

 anzumerken ist noch folgendes: ich reduziere/ erweitere (?)  die Umkreissuche zwar auf eine Planquadratsuche. Dieses Planquadrat ist natürlich flächenmäßig größer als die Fläche des Kreises. Aufgrund der natürlichen Streuung der Städte sollte sich aber eine genügende Genauigkeit ergeben.

Glombi:
Hi,
ich habe leider wenig Zeit, daher in Kürze das Wesentliche...

Anbei das was ich damals gerechnet habe:
1. Die Koordinaten der Form GG MM SS,SSSSS werden in GG,GGGGGGGG umgerechnet.
Formel: GG,GGGGGGGG = GG + (MM + SS,SSSSS / 60) / 60

In Script dann die Variablen
DezGrad_Laenge
DezGrad_Breite


2. Offset Breite bei Radius R in [km]
Es ist 1 GG (1 Grad) = 60 NM (Nautische Meilen), also 1 GG = 60 * 1,852 km

Offset Breite = R / (60 * 1,852 km)

Offset Länge = Cos(Grad Breite)

In Script

'grad_breite = GG Angabe in GG MM SS...


offset_breite = radius_km / (60 * 1.852)   
'Hinweis: Script rechnet Cos Funktion mit Radiant, daher erst von Grad nach Rad umwandeln
grad_rad_breite = grad_breite * (Pi / 180)    
cos_grad_rad_breite = Cos(grad_rad_breite)
offset_laenge = offset_breite / cos_grad_rad_breite


'***** Berechne untere und obere Grenze für die dez. Koordinaten
LBound_DezGrad_Laenge = DezGrad_Laenge - offset_laenge
UBound_DezGrad_Laenge = DezGrad_Laenge + offset_laenge
   
LBound_DezGrad_Breite = DezGrad_Breite - offset_breite
UBound_DezGrad_Breite = DezGrad_Breite + offset_breite    

'Abfrage aller Punkte, ob diese im Umkreis liegen

          '***** Prüfe ob Koord. im Intervall (Quadrat) liegen
      If ( (LBound_DezGrad_Laenge <= DezGrad_Laenge_Target) And (UBound_DezGrad_Laenge >= DezGrad_Laenge_Target) )  And _
      ( (LBound_DezGrad_Breite <= DezGrad_Breite_Target) And (UBound_DezGrad_Breite >= DezGrad_Breite_Target) ) Then
         
               'Koord. liegt im Umkreis            

end if

Das sollte sich eigentlich mit dem bereits geleisten Arbeiten von eknori decken...

Gruß
Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln