Maidenhead- in Geo-Koordinaten umrechnen

15. September 2012 Keine Kommentare

Basierend auf dem Artikel und dem entsprechenden Perl-Code:
http://en.wikipedia.org/wiki/Maidenhead_Locator_System

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Function LocatorToLatLong(locator as String) As String()
  dim grid() as String
  dim formatter as String
  dim lon, lat as Double
 
  grid = locator.Uppercase.Split("")
 
  lon = ((grid(0).Asc - Asc("A")) * 20) - 180
  lat = ((grid(1).Asc - Asc("A")) * 10) - 90
  lon = lon + ((grid(2).Asc - Asc("0")) * 2)
  lat = lat + ((grid(3).Asc - Asc("0")) * 1)
 
  if grid.Ubound >= 5 then
    'have subsquares
    lon = lon + ((grid(4).Asc) - Asc("A")) * (5/60)
    lat = lat + ((grid(5).Asc) - Asc("A")) * (2.5/60)
    'move to center of subsquare
    lon = lon + (2.5/60)
    lat = lat + (1.25/60)
    'not too precise
    formatter = "%.5f"
  else
    'move to center of square
    lon = lon + 1
    lat = lat + 0.5
    'even less precise
    formatter = "%.1f"
  end if
 
  return Array(Sprintf(formatter, lat), Sprintf(formatter, lon))
 
End Function

Funktion testen mit:

1
2
3
4
5
6
dim geo() as String
geo = LocatorToLatLong("BL11BH16")
MsgBox  "Longitude: " + geo(0) + EndOfLine + "Latitude: " + geo(1)
'Ausgabe:
'Longitude: 21,31250
'Latitude : -157,87500

Die sprintf() Funktion erhält man über das “StringUtils Module” von “Joe’s REALbasic Page“:

http://www.strout.net/files/rb/stringutils.zip
(man benötigt lediglich die sprintf() und die repeat() Funktion daraus)

Bei Longitude sind negative Werte “South”, bei Latitude sind negative Werte “West”.

Datenträgeraustauschverfahren (DTAUS)

6. April 2011 Keine Kommentare

Für ein internes Projekt benötigten wir die Möglichkeit, DTA-Dateien für den elektronischen Zahlungsverkehr mit Realbasic zu erzeugen. Da hierzu wohl noch keine OpenSource-Lösung zur Verfügung stand, stellen wir hiermit unsere eigene Lösung zum Download bereit:

DTAUS-1.0.zip (Version 1.0 vom 05.04.2011)

Die Erstellung einer DTA-Datei läßt sich mit wenigen Code-Zeilen bewerkstelligen:

1
2
3
4
5
6
7
8
  Dim dta as DTAUS
 
  dta  = new DTAUS("LK", "FIRMA123", "12345678", "98765")
 
  dta.Add( "Hans Müller", "12345678", "12345", 10.53, "Kunde 123 - RG 456", "Verwendungszweck2")
  dta.Add("Frau Schmitt", "12345678", "1234567890", 501.30, "Kunde 124 - RG 457", "Verwendungszweck2")
 
  TextArea1.Text = dta.Create

Zur Zeit findet noch keine Fehlerprüfung statt, die DTAUS-Klasse wird von uns jedoch weiterentwickelt und dahingehend zukünftig optimiert werden.

Entfernungsberechnung (Update)

31. März 2011 4 Kommentare

Wie berechne ich die Entfernung (in Kilometern) zwischen zwei Orten? Sofern Längen- und Breitengrad für beide Punkte vorliegen, kann dies mit folgendem Code durchgeführt werden:

1
2
3
4
Function DegreeToRadian(angle As Double) As Double
  Const PI = 3.14159265358979323846264338327950
  Return angle / 180 * PI
End Function
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function GetDistance(Latitude1 As Double, Longitude1 As Double, Latitude2 As Double, Longitude2 As Double) As Double
  Const EarthRadius = 6370
 
  Dim RadianLatitude1, RadianLongitude1 as Double
  Dim RadianLatitude2, RadianLongitude2 as Double
 
  RadianLatitude1 = DegreeToRadian( Latitude1 ) 
  RadianLongitude1 = DegreeToRadian( Longitude1 )
  RadianLatitude2 = DegreeToRadian( Latitude2 )
  RadianLongitude2 = DegreeToRadian( Longitude2 )
 
  Return ACos( Sin( RadianLatitude1 ) * Sin( RadianLatitude2 ) + _
  Cos( RadianLatitude1 ) * Cos( RadianLatitude2 ) * _
  Cos( RadianLongitude1 - RadianLongitude2 ) ) * _
  EarthRadius
End Function
1
2
3
4
5
6
7
8
9
10
11
12
'Frankfurt/Main, Germany
Dim Latitude1 as Double = 50.120578
Dim Longitude1 as Double = 8.681946
 
'Berlin, Germany
Dim Latitude2 as Double = 52.531261
Dim Longitude2 as Double = 13.410187
 
Dim Distance as Double
 
Distance = GetDistance( Latitude1, Longitude1, Latitude2, Longitude2 )
MsgBox Str(Distance) + " km"

Update:
Die obigen Funktionen berechnen den Abstand auf Basis einer Kugel. Da die Erde aber an den Polen leicht abgeflacht ist, benutzt man zur genaueren Berechnung der Abstände auf bis zu 50 Meter das WGS84-Ellipsoid. Die folgende Funktion bildet die Berechnung in Realbasic nach:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Function GetDistanceWGS84(Latitude1 As Double, Longitude1 As Double, Latitude2 As Double, Longitude2 As Double) As Double
  Const EarthRadius = 6378.137
  Const Flattening = 0.003352811
 
  Dim F,G,l,S,C,w,R,D,H1,H2 as Double
  Dim SinF2,SinG2,Sinl2,CosF2,CosG2,Cosl2 as Double
 
  F = DegreeToRadian( (Latitude1 + Latitude2) / 2 )
  G = DegreeToRadian( (Latitude1 - Latitude2) / 2)
  l = DegreeToRadian( (Longitude1 - Longitude2) / 2)
 
  SinF2 = Sin(F)^2
  SinG2 = Sin(G)^2
  Sinl2 = Sin(l)^2
 
  CosF2 = Cos(F)^2
  CosG2 = Cos(G)^2
  Cosl2 = Cos(l)^2
 
  S = SinG2 * Cosl2 + CosF2 * Sinl2
  C = CosG2 * Cosl2 + SinF2 * Sinl2
 
  w = ATan( Sqrt( S / C ) )
  D = 2 * w * EarthRadius
  R = Sqrt( S * C ) / w
 
  H1 = (3 * R - 1) / (2 * C)
  H2 = (3* R + 1) / (2 * S)
 
  Return D * (1 + Flattening * H1 * SinF2 * CosG2 - Flattening * H2 * CosF2 * SinG2)
 
End Function

Update2:
Ergänzend zu der Kugel- und Ellipsoid-Berechnung noch eine sehr einfache Funktion mit der Pythagoras-Formel. Diese sollte allerdings nur für kurze Distanzen genutzt werden, da es hierbei aufgrund der Erdkrümmung zu Abweichungen kommt:

1
2
3
Function GetDistancePythagoras(Latitude1 As Double, Longitude1 As Double, Latitude2 As Double, Longitude2 As Double) As Double
  Return Sqrt( ((Latitude1 - Latitude2) * 111) ^ 2 + ((Longitude1 - Longitude2) * 71.5) ^ 2 )
End Function

HTTPSocket.Sendprogress & HTTPSocket.Post

8. Februar 2011 Keine Kommentare

Bei der Programmierung einer kleinen Anwendung zum Upload von Dateien per POST auf einen Webserver stieß ich auf das Problem, dass die Fortschrittsanzeige innerhalb von HTTPSocket.Sendprogress falsche Werte liefert. Dies begründet sich dadurch, dass ein interner TCP Puffer vor dem Upload gefüllt wird und somit beim Upload kleiner Dateien unter 1 MB (unter Mac OS X) überhaupt keine Fortschrittsanzeige mehr möglich ist. Auf der Suche nach einer Lösung hat mir Brad Hutchings von Componentx.com in der englischen Mailingliste weiterhelfen können. Innerhalb des HTTPSocket.Connected Event’s muss folgender Code eingefügt werden:

Für Mac OS X:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#if TargetMacOS
if me.Handle <> 0 then
 Declare Function setsockopt Lib "System" (s as Integer, level as integer, _
 optName as integer, optval as ptr, optlen as integer) as Integer
 
 dim x as Integer
 dim mb_optval as MemoryBlock
 
 mb_optval = NewMemoryBlock(4)
 mb_optval.Long(0) = 32 * 1024 // send buffer size 32K
 
 // SOL_SOCKET --> &hFFFF, SO_SNDBUF --> &h1001
 x = setsockopt(me.Handle, &hFFFF, &h1001, mb_optval, 4)
end 
#endif

Für Windows:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#if TargetWin32
// Set the sendbuffer size of this socket smaller so we get better
// progress feedback
Declare Function setsockopt Lib "Ws2_32" (s as Integer, level as integer, _
optName as integer, optval as ptr, optlen as integer) as Integer
 
dim x as Integer
dim mb_optval as MemoryBlock
 
mb_optval = NewMemoryBlock(4)
mb_optval.Long(0) = 32 * 1024 // send buffer size 32K
 
// SOL_SOCKET --> &hFFFF, SO_SNDBUF --> &h1001
x = setsockopt(me.Handle, &hFFFF, &h1001, mb_optval, 4)
#endif

Anschliessend erhält man die richtigen Werte ausserhalb des TCP-Puffers und kann den Fortschritt des Datei-Uploads entsprechend darstellen.

KategorienNetzwerk Tags: , ,

Omega Bundle 2011 für REAL Studio

8. Januar 2011 Keine Kommentare

Monkeybread Software hat mit einer Gruppe von Herstellern professionelle Werkzeuge für die Softwareentwicklung das Omega Bundle 2011 für REAL Studio zusammengestellt. In einem speziellen Angebot werden zehn Produkte rund um REAL Studio als Paket angeboten. Einzeln gekauft würden Sie $3200 kosten, aber für kurze Zeit gibt es dieses Paket für nur $399, eine Ersparnis von über 80%!

Das Omega Bundle 2011 für REAL Studio enthält:

  • Formatted Text Control: Ein Steuerelement für Textverarbeitungen in ihren REAL Studio Anwendungen. Einzelpreis $150.00.
  • Elastic Windows: Klassen für elegantes Vergrößern und Verkleinern von Fenstern in ihren Anwendungen. Einzelpreis $195.00.
  • Mask-R-Aid: Ein Grafikprogramm zum Erzeugen von Masken für Photorealistische Icons. Einzelpreis $19.95.
  • RB Code Reports: Analysiert ihre REAL Studio Anwendungen und erstellt Berichte zu Softwaremetriken. Einzelpreis $24.95.
  • REAL Studio Developer Magazine. Alle bisherigen Ausgaben und ein Jahresabo der Zeitschrift. Einzelpreis $261.00.
  • Aspen Icon Set. 80 professionelle Icons für ihre Anwendungen. Einzelpreis $179.00.
  • Valentina Office Server Unlimited. Datenbanksoftware für einen Server in ihrem Büro. Einzelpreis $1499.
  • Franklin 3D Game Engine. Einfach zu benutzende, Cross Platform 3D Umgebung für Spiele, Simulationen und 3D Anwendungen. Einzelpreis $299.
  • MBS Complete. Tausende von Funktionen, die REAL Studio erweitern. Einzelpreis $259.00.
  • Valentina ADK+ für REAL Studio. Schnelle Datenbank zum Einbetten in eigene REAL Studio Anwendungen für Windows, Mac OS X und Linux. Einzelpreis $399.00.

Mehr Informationen erhält man unter der Adresse http://www.omegabundle.com.

UPDATE: Die Aktion läuft am 29.01.2011 aus.
UPDATE2: Die Aktion wurde bis zum 14.02.2011 verlängert.

REAL Studio Web Edition veröffentlicht

15. Dezember 2010 Keine Kommentare

Vor einigen Stunden hat REALSoftware die Version 5 von REAL Studio sowie die neue Einzelversion von REAL Studio Web Edition veröffentlicht, mit welcher sich Web-Applikationen spielend leicht zusammenstellen und programmieren lassen. REAL Studio Web Edition ist einzeln für 475,00 EUR oder als Upgrade in REAL Studio Enterprise ab sofort erhältlich.

Ein Web Tutorial gibt eine kurze Übersicht und Einführung in die neue Technik und die Bilder- und Videogallerie gibt einen weiteren Überblick.

REAL Studio Web Edition unter iOS

3. September 2010 Keine Kommentare

Heute ein neues Video von der Web Edition, dieses Mal wird die Lauffähigkeit auf iOS-Devices (iPhone sowie iPad) demonstriert.

KategorienAllgemeines Tags: , , ,

REAL Software stellt REAL Studio Web Edition vor

31. August 2010 Keine Kommentare

REAL Software stellte heute eine neue Plattform für ihr Entwicklungstool vor: REAL Studio Web Edition. Traditionelles Web-Development verlangt von Entwicklern das Erlernen von verschiedenen Sprachen, darunter HTML, CSS, JavaScript, AJAX, PHP und Java. REAL Studio Web Edition hingegen stellt einen Interface Builder zur Verfügung, bei welchem die verschiedenen Elemente per Drag & Drop positioniert werden können – dies spart Stunden an Entwicklungszeit, verglichen mit der manuellen Programmierung mit HTML und CSS. Entwickler müssen lediglich eine einzige, Objektorientierte Sprache nutzen welche in das REAL Studio Web-Framework integriert wurde.

Zur Zeit befindet sich REAL Studio Web Edition noch in der Betaphase, als Erscheinungstermin ist Herbst 2010 geplant. Zukünftig wird dieses Framework innerhalb von REAL Studio Enterprise Edition mit ausgeliefert, alternativ wird es aber auch für $599 einzeln erhältlich sein.

REAL Studio 2010 Release 1

9. Februar 2010 Keine Kommentare

REAL Software hat am heutigen Tag REAL Studio 2010 Release 1 veröffentlicht. Mit dieser Release ändert sich der Name der IDE (der integrierten Entwicklungsumgebung) in REAL Studio. Die Programmiersprache heißt weiterhin REALbasic.

REAL Studio 2010 Release 1 bietet 46 Verbesserungen und 17 neue Funktionen, einschließlich einer verbesserten ActiveX-Unterstützung. Die meisten ActiveX-Steuerelemente können eingesetzt werden, ihre Einbindung gestaltet sich einfacher. Alle Events werden unterstützt. Außerdem wurde die Auto-Vervollständigung verbessert. Mit dieser Release steht als 9. Sprachversion auch eine koreanische Lokalisierung zur Verfügung. Außerdem wird die komplette Anleitung ab sofort in einem Wiki-Format bereitgestellt. Dies erlaubt es, eine verbesserte und ständig aktualisierte Anleitung verfügbar zu machen.

KategorienNews Tags: , , ,

REALbasic und REAL Studio 2009 R3 veröffentlicht

Heute wurde die neue REALbasic Version 2009 R3 zum Download freigegeben. Unter anderem wurde eine neue OpenGL-Engine umgesetzt, 94 Fehler behoben sowie 31 neue Features integriert. Das Editfield-Control wurde durch die zwei neuen Controls Textfield und Textarea ersetzt – bestehender Sourcecode mit Editfields funktioniert zwar weiterhin, allerdings wird dieses in einer künftigen REALbasic-Version entfernt. Beim Laden eines vorhandenen Projektes weist REALbasic auf diesen Umstand hin und bietet die automatische Konvertierung an.

KategorienNews Tags: , ,