Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Internet & Webprogramme (https://www.tweakpc.de/forum/internet-and-webprogramme/)
-   -   Google Earth - Bodenhöhe auslesen (https://www.tweakpc.de/forum/internet-and-webprogramme/72740-google-earth-bodenhoehe-auslesen.html)

redilS 06.10.2009 14:29

Google Earth - Bodenhöhe auslesen
 
Hallo zusammen

Ich benötige für eine ganze Menge Koordinaten (Google Earth Pfad) die entsprechende Bodenhöhe über NN. Zwar könnte ich die über gpsvisualizer.com oder die USGS Dienste bekommen, die angelieferten Daten sind aber oftmals weit ab von der Realität. Die fehlerhaften Daten händisch zu suchen und zu korrigieren wäre ein Unding bei 2500+ Punkten.

Google Earth (GE) selbst hätte die Daten auch - sogar ohne die vereinzelten "Datenfehler". Das Problem ist nur, dass GE diese nicht abspeichert, sondern lediglich für die BIldausgabe verwendet (Mauszeiger -> Höhe).

Suchmaschinen habe ich schon vergeblich bemüht, aber vielleicht weiss ja einer von euch wie man an die Daten in GE rankommen könnte.

Fakk-asrock 06.10.2009 14:37

AW: Google Earth - Bodenhöhe auslesen
 
die höhendaten bei GE sind z.T. aber auch ordentlich verschoben.

redilS 06.10.2009 15:18

AW: Google Earth - Bodenhöhe auslesen
 
Dass die GE Daten nicht absolut genau sind weiss ich. Sie sind aber auf jeden Fall besser als die Rohdaten der anderen Dienste. Ob die Höhe im Ganzen um einige Meter abweicht ist mir egal, hauptsache ich bekomme ein halbwegs stimmiges Höhenprofil heraus und genau das scheint bei GE zu funktionieren.

Fakk-asrock 06.10.2009 15:44

AW: Google Earth - Bodenhöhe auslesen
 
wenn du des programieren mächtig bist versuch die koordinaten in GE zu suchen und den mauszeiger draufzusetzten (in die Mitte des Bildes) und die höhendaten ab zu photographieren und als zahlen erkennen zu lassen.

wafür ist das ganze überhaupt? höhendaten sind immer so eine sache, selbst wenn ich auf dem meer bin zeigt mein navi jedenfalls noch +30m an.

redilS 06.10.2009 15:59

AW: Google Earth - Bodenhöhe auslesen
 
Japp, bin gerade dabei das Ganze per VB umzusetzen. Über die GE API geht das recht einfach, wie ich jetzt weiss.

Wie schon gesagt, die Abweichungen interessieren mich nicht, solange sie über den kompletten Pfad hinweg halbwegs konstant sind. Ich brauche nur ein korrektes Höhenprofil.

chrisr15 06.10.2009 17:56

AW: Google Earth - Bodenhöhe auslesen
 
Openstreetmaps hat ja glaube ich auch schon ein Höhenprofil, dort auch nach einer Lösung gesucht?

Fakk-asrock 06.10.2009 18:02

AW: Google Earth - Bodenhöhe auslesen
 
ich mach bei dem projekt auch ein bissche nmit, aber ien höhenprofil hab ich noch nicht gefunden.

redilS 06.10.2009 18:34

AW: Google Earth - Bodenhöhe auslesen
 
Gesetz dem Fall sie hätten eines, wäre dann die Norschleife erfasst? ;) Das Programm hab ich fast fertig, nur macht VB ein wenig zicken. Die GE API erwartet Lon/Lat als Fließkomma mit "." als Dezimaltrennzeichen, VB gibt aber nur ein "," her -_-

Fakk-asrock 06.10.2009 18:52

AW: Google Earth - Bodenhöhe auslesen
 
ist drauf:
[url=http://www.openstreetmap.org/?mlat=50.3333333&mlon=6.9333333&zoom=12]OpenStreetMap[/url]

exportier bar als vektorgraphik oder rastergraphik.

chrisr15 06.10.2009 18:55

AW: Google Earth - Bodenhöhe auslesen
 
Hier sind z.b. Höhenlinien eingezeichnet: [url=http://topo.geofabrik.de/]OSMC Reit- und Wanderkarte[/url]
So wie ich das sehe, nutzen beide (geofabrik und google) 90m SRTM's: [url=http://srtm.csi.cgiar.org/]CGIAR-CSI SRTM 90m DEM Digital Elevation Database[/url]

redilS 06.10.2009 19:58

AW: Google Earth - Bodenhöhe auslesen
 
Kurzes Update um das Thema zu beenden: hab das Programm fertig und bin an meine Daten ran gekommen. Die SRTM Daten [URL="http://www.nearby.org.uk/elevation-kml.php"]hatte ich schon[/URL]. Interessanterweise sind die GE Daten tatsächlich besser, warum auch immer. Ich hab jetzt was ich wollte. Danke nochmal :)


[code]
Private Sub cmdHoehe_Click()
GetElev
End Sub


Private Sub GetElev()

Dim sInput As String
Dim sOutput As String
Dim sData As String

Dim cLat As Variant
Dim cLon As Variant

Dim dStart As Double
Dim dEnd As Double
Dim iLen As Integer

Dim dStartDSet As Double
Dim dEndDSet As Double
Dim iLenDSet As Integer


sInput = txtInput.Text
dStart = 1

'GE initialisieren
Dim objGE As Object 'die Anwendung Google Earth (GE)
Dim i As Integer 'Änderung von "AutoPilotSpeed": Einfluss nicht bestätigt --> selbst testen / auskommentieren
Dim dblAPo As Double 'Wert der in GE eingestellten Anflug-Geschwindigkeit des AutoPiloten

Dim RelativeToGroundAltitudeGE As Integer
RelativeToGroundAltitudeGE = 1

Dim AbsoluteAltitudeGE As Integer
AbsoluteAltitudeGE = 2

Set objGE = CreateObject("GoogleEarth.ApplicationGE")

With objGE
Do 'Prüfen, ob GE geöffnet, verfügbar, online, nicht busy
DoEvents ' .isonline beim Testen Offline auskommentieren!
Loop Until .IsInitialized = 1 And .IsOnline = 1 And .SearchController.IsSearchInProgress = 0
End With

'Änderung von "AutoPilotSpeed": Einfluss nicht bestätigt --> selbst testen / auskommentieren
dblAPo = objGE.AutoPilotSpeed 'Original-Anfluggeschwindigkeit auslesen
objGE.AutoPilotSpeed = 5 'überschreiben: 5 = Maximum!

Do
DoEvents

'Datensatz lesen - "Lat,Lon,Alt"
dEnd = InStr(dStart, sInput, " ", vbTextCompare)
If dEnd = 0 Then
Exit Do
End If
iLen = dEnd - dStart
sData = Mid(sInput, dStart, iLen)
dStart = dEnd + 1


dStartDSet = 1

'Longtitude holen
dEndDSet = InStr(dStartDSet, sData, ",", vbTextCompare)
iLenDSet = dEndDSet - dStartDSet
cLon = CDbl(Replace(Mid(sData, dStartDSet, iLenDSet), ".", ","))
dStartDSet = dEndDSet + 1

'Latitude holen
dEndDSet = InStr(dStartDSet, sData, ",", vbTextCompare)
iLenDSet = dEndDSet - dStartDSet
cLat = CDbl(Replace(Mid(sData, dStartDSet, iLenDSet), ".", ","))
dStartDSet = dEndDSet + 1


'Kamera setzen und Daten lesen
objGE.SetCameraParams cLat, cLon, 0, RelativeToGroundAltitudeGE, 1000, 0, 0, 5
Set coords = objGE.GetPointOnTerrainFromScreenCoords(0, 0)


sOutput = sOutput & Replace(cLon, ",", ".") & "," & Replace(cLat, ",", ".") & "," & Replace(coords.altitude, ",", ".") & " "


'Sicherheitszähler
iPos = iPos + 1

Loop Until iPos = 10000

txtOutput.Text = sOutput
'txtOutput = sOutput

Set geObj = nothing

End Sub
[/code]


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.