Meine erste Frage dazu lautet, was ich an der gegebenen Funktion abändern/löschen muss, damit sie überhaupt funktioniert und mir ein Ergebnis liefert? Ich habe leider keinerlei Wissen auf diesem Gebiet.
Wenn dies funktioniert, würde ich gerne die x,y-Werte der Stadt Aachen einlesen:
Hierbei handelt es sich um ein Datenpaket bestehend auf 60 Dateien. Wobei jede Datei 4000000 Zeilen mit x,y-Werten besitzt. Ich habe also ingesamt 240.000.000 x,y-Werte, welche eingelesen und konvertiert werden müssen. Der Parameter "utmzone" ist mit "32 U" immer der selbe. Kann mir jemand hierzu sagen, wie ich dies am schnellsten einlesen kann? Alle x,y-Werte müssen hierbei ja auch noch durch ein Semikolon getrennt werden.
Die konvertierten x,y-Werte will ich dann den z-Werten( Höhenangabe in m) der Ursprungsdateien zuordnen.
Ich weiß, dass sind wirklich viele Fragen. Aber vielleicht findet sich jemand der mir Helfen kann. Über jegliche Hilfe wäre ich sehr, sehr glücklich!
Beste Grüße aus Aachen,
Carlson
Code:
function[Lat,Lon] = utm2deg(xx,yy,utmzone) % ------------------------------------------------------------------------- % [Lat,Lon] = utm2deg(x,y,utmzone)
%
% Description: Function to convert vectors of UTM coordinates into Lat/Lon vectors (WGS84). % Some code has been extracted from UTMIP.m function by Gabriel Ruiz Martinez.
%
% Inputs: % x, y , utmzone.
%
% Outputs: % Lat: Latitude vector. Degrees. +ddd.ddddd WGS84 % Lon: Longitude vector. Degrees. +ddd.ddddd WGS84
%
% Example 1: % x=[ 458731; 407653; 239027; 230253; 343898; 362850]; % y=[4462881; 5126290; 4163083; 3171843; 4302285; 2772478]; % utmzone=['30 T'; '32 T'; '11 S'; '28 R'; '15 S'; '51 R']; % [Lat, Lon]=utm2deg(x,y,utmzone); % fprintf('%11.6f ',lat) % 40.315430 46.283902 37.577834 28.645647 38.855552 25.061780 % fprintf('%11.6f ',lon) % -3.485713 7.801235 -119.955246 -17.759537 -94.799019 121.640266
%
% Example 2: If you need Lat/Lon coordinates in Degrees, Minutes and Seconds % [Lat, Lon]=utm2deg(x,y,utmzone); % LatDMS=dms2mat(deg2dms(Lat))
%LatDMS =
% 40.00 18.00 55.55 % 46.00 17.00 2.01 % 37.00 34.00 40.17 % 28.00 38.00 44.33 % 38.00 51.00 19.96 % 25.00 3.00 42.41 % LonDMS=dms2mat(deg2dms(Lon))
%LonDMS =
% -3.00 29.00 8.61 % 7.00 48.00 4.40 % -119.00 57.00 18.93 % -17.00 45.00 34.33 % -94.00 47.00 56.47 % 121.00 38.00 24.96
%
% Author: % Rafael Palacios % Universidad Pontificia Comillas % Madrid, Spain % Version: Apr/06, Jun/06, Aug/06 % Aug/06: corrected m-Lint warnings
%-------------------------------------------------------------------------
% Argument checking
%
error(nargchk(3, 3, nargin)); %3 arguments required
n1=length(xx);
n2=length(yy);
n3=size(utmzone,1);
if(n1~=n2 || n1~=n3) error('x,y and utmzone vectors should have the same number or rows');
end
c=size(utmzone,2);
if(c~=4) error('utmzone should be a vector of strings like "30 T"');
end
% Main Loop
%
for i=1:n1
if(utmzone(i,4)>'X' || utmzone(i,4)<'C') fprintf('utm2deg: Warning utmzone should be a vector of strings like "30 T", not "30 t"\n');
end if(utmzone(i,4)>'M')
hemis='N'; % Northern hemisphere else
hemis='S';
end
woraus schließt du, dass du an der Funktion etwas ändern musst? Normalerweise muss man eine Funktion nur aufrufen. Falls dir nicht klar ist, wie das geht, siehe die Beispiele im Kommentar der Funktion oder
https://de.mathworks.com/learn/tutorials/matlab-onramp.html
Ich kenne mich mit der Anwendung nicht aus, würde aber die Verbesserungsvorschläge in den Kommentaren auf File Exchange durchgehen.
Was du machen solltest: die Funktion so anpassen, dass sie eine einzige utmzone-Angabe übernimmt. Sollte nicht allzu schwer sein, wenn man den Code zeilenweise durchgeht.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Du hattest natürlich Recht, die Funktion arbeitet nach dem Aufruf fehlerfrei! Es war ein Bedienungsfehler meinerseits, aber dank deiner hilfreichen Verlinkung finde ich mich nun gut zurecht.
Die x,y-Werte konnte ich auch gut per "Import Data" einlesen.
Es gelingt mir jedoch nicht, dass nur eine utmzone-Angabe für alle Werte übernommen wird. Auch der Kommentar aus dem File-Exchange hilft mir leider nicht:
"Well, if it is the same '30 T' for all values, just set a variable zonn = '30 T', and use it for all conversions.
[lat long] = utm2deg(easting, northing, zonn)"
Ich habe zwar eine Variable definiert, jedoch wird diese nicht für alle Konvertierungen übernommen, sodass die Meldung:
"Error using utm2deg (line 64)
x,y and utmzone vectors should have the same number or rows"
Was du machen solltest: die Funktion so anpassen, dass sie eine einzige utmzone-Angabe übernimmt. Sollte nicht allzu schwer sein, wenn man den Code zeilenweise durchgeht.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ich habe mal eine Version für eine UTM Zone angehängt. Im Testaufruf stimmen die Ergebnisse mit dem von mir gefundenen File Exchange - Beitrag überein.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.