; ; KEGELENTWURF NACH BONNE (ABWEITUNGSTREUER FLÄCHENTREUER KEGELENTWURF) ; ===================================================================== ; ; Nr. bei Wagner: 15 ; Name: Abweitungstreuer flächentreuer Kegelentwurf nach Bonne ; Variante: Zentrierend ; Autor: Rigobert Bonne 1752 ; Quelle: Karlheinz Wagner, Kartographische Netzentwürfe, Leipzig 1949, S. 159ff. ; Anmerkung: »Das Netz ist ohne Einschränkung als schlecht zu bezeichnen. Die Minderwertigkeit ; immer wieder vor Augen geführt zu haben, ist ein Verdienst Hammers.« (Wagner, S. 162) ; Richtung: Inverse Transformation ; ; Das Programm übernimmt die Koordinaten eines Punktes (x/y) und transformiert ; diese in einen Punkt (x'/y'). ; ; x/y sind ebene Zielpunktkoordinaten, x'/y' geben die geogr. Breite und Länge ; der Position auf der Quell-Erdkugel, auf der der Zielpunkt gelesen werden ; kann. ; ; Maßstab und Berührungspunkt werden abgefragt. ; ; Literatur: ; Wagner: Kartographische Netzentwürfe, Leipzig: Bibliographisches Institut 1949 ; Fiala: Mathematische Kartographie, Berlin: Verlag Technik 1957 ; ; Entwurf 15 im Wagner, S. 159 ff. ; (C) Rolf Böhm 2004 ; Polversetzend/(Selbst-)Zentrierend: Bei Kegelentwürfen ist das Rechenzentrum (der Pol) meist ; nicht der Kartenmittelpunkt. Dies ist ein (selbst)zentrierendes Programm, welches den Pol ; so versetzt, dass der Mitte der Quellkarte zur Mitte der Zielkarte wird. Das Gegenstück bilden ; polversetzende Polgramme, bei denen der Polversatz "zu Fuss" abgefragt wird. ; ; Anmerkung 1: Die Berührungsparallel oder die Schnittparallele haben k e i n e n ; Einfluss auf die Zentrierung. Entscheidend ist der Quellbildmittelparallel ; ; Anmerkung 2: Auf die X-Lagerung hat die Selbstzentrierung ebenfalls keinen Einfluss, ; dies ist, wie bei allen anderen Programmen, mit lambda0 einzustellen. ; ; Anmerkung 3: Die Selbstzentrierung ist ganz schön aufwändig. Immerhin muss ; dafür zusätzlich zu der Inversformel eine Vorwärtsformel implementiert ; werden (wenngleich diese auch nur ein einziges Mal geerechnet wird) ; Benutzte Variablen ; ================== ; ; Die Variablennamen entsprechen weitgehend denen von Karlheinz Wagner, _name Kegelentwurf~nach~Bonne~(zentrierend) _var lambda0 ; Geogr. Länge des Bildmittelpunktes _var phi0 ; Geogr. Breite des Bildmittelpunktes _var Pol-y ; Polverschiebung nach Nord in Geokoordinaten _var delta0 ; Poldistanz _var tand0 ; Tangens davon _var c ; Konstante: delta0 - Tan(delta0) - 90° _var phi ; Geographische Breite _var cosphi ; Cos(Phi) _var lambda ; Geographische Länge _var delta ; Poldistanz/geographisch, auch Schiefdistanz _var alpha ; Polarkoordinaten: Azimut _var m ; Polarkoordinaten: Radius _var scale ; Kartenmaßstabszahl (also 1000000, nicht 1/1000000) _var 2pi ; 2 Pi _var -pi ; Minus Pi _var sigma ; Hemisphärenvorzeichen _var t ; Temporäre Variable ; ; x, y, x', y', Cx', Cy', Rx', Ry', °(, (°, pi, pi/2 etc. sind vordefinierte globale Konstanten ; ; Initialisierung ; =============== ; tstne initial 077$ ; Dialog input scale Maßstabszahl input phi0 Berührungspunktbreite~in~Grad input lambda0 Berührungspunktlänge~in~Grad ; Eingegebene Werte auf Min/Max bringen clip scale 1 1E12 clip phi0 -90 90 clip lambda0 -180 180 ; sigma mov sigma phi0 sgn sigma mul phi0 sigma ; delta0 mul phi0 °( ; Bogenmaß mov delta0 pi/2 sub delta0 phi0 ; Tangens(delta0) mov tand0 delta0 tan tand0 ; Konstante c mov c tand0 add c pi/2 sub c delta0 ; Pi ... mov 2pi pi add 2pi pi clr -pi sub -pi pi ; Pol-y berechnen mov r1 Cy ; "Phi" von Cy abholen. "Lambda" alias Cx sei immer 0 ... mul r1 sigma ; ;;;;; mul r1 °( ; "Phi" in Bogenmaß umrechnen ; mov r2 pi/2 ; Eigentlicher Entwurf: Phi (in r1) im m (alias Pol-y) umrechnen sub r2 r1 ; delta = pi/2 - phi mov r3 delta0 sub r3 r2 mov m delta0 tan m sub m r3 ; m = tan(delta0)-(delta0-delta) mov Pol-y m ; ; m in y umrechnen. Aus x=0 folgt, da m=sqrt(x²+y²) m=y! div Pol-y scale ; Maßstab einrechnen mul Pol-y Ry' ; Erdradius einrechnen mul Pol-y sigma proof Pol-y ; Programm ist initialisiert mov initial 1 077$: ; ; SIMD-Laufbereich ; ================ ; ; Maßstab, Kartenmittelpunkt etc. einrechnen ; ------------------------------------------ sub x Cx' ; Bildmittelpunkt div x Rx' ; Erdradius mul x scale ; Kartenmaßstab sub y Cy' sub y Pol-y div y Ry' mul y scale mul x sigma mul y sigma ; ; Kartesische Koordinaten x/y in Polarkoordinaten m/alpha umwandeln ; ----------------------------------------------------------------- mov alpha x ; kartesische Koord. x y in Polarkoordinaten m alpha div alpha y atan alpha mov x' alpha tstgt y 151$ ; Der atan ist doppeldeutig!: Wenn y negativ dann ... sub alpha pi ; 180° addieren 151$: mov t pi ; Drehsinn andersherum: nalpha kontern sub t alpha mov alpha t cmplt alpha pi 153$ ; und alles über 180°: Ein Vollwinkel weg sub alpha 2pi ; Jetzt steht alpha richtig im Meridian 153$: power x 2 power y 2 clr m add m x add m y root m 2 ; ; Eigentlicher Entwurf, dieser invers ; ----------------------------------- mov phi c sub phi m ; phi fertig mov cosphi phi cos cosphi mov lambda m mul lambda alpha div lambda cosphi ; lambda fertig ; ; Kontern, in Gradmaß umrechnen und Ausserhalbtest ; ------------------------------------------------ ; mul lambda sigma ; Südhemisphäre: mul phi sigma ; ggf. kontern mul lambda (° mul phi (° cmplt lambda -180 out cmpgt lambda 180 out cmplt phi -90 out cmpgt phi 90 out ; ; Schlussarbeiten ; --------------- ; mov x' lambda mov y' phi ; Lambda kreisen lassen add x' lambda0 cmod x' -180 180 exit out: mov x' -9999 mov y' -9999 exit _end