write multiple tracks to kml from a data structure

조회 수: 5 (최근 30일)
david malins
david malins 2022년 10월 3일
답변: Piyush Dubey 2023년 9월 6일
Hi,
I have created a data structure of storm track data from a .csv file with a loop in matlab. So I now have a row for each storm and associated lat and long coords. I've used kmlwrite to generate the tracks no problem.
However, I woudl like to create a .kml of points (one set per row, see below) where the decsription for each point is the ISOTime (I converted to strings as the first error was that ISOTiem was not the correct data type).
I can't figure out how to do this as the only Mathworks examples I can find plot only one series of points (e.g. city locations), not multiple sets (rows) of points.
thanks in advance
  댓글 수: 1
david malins
david malins 2022년 10월 6일
Hi again,
Is it actually possible to plot what I'm trying? All examples I've seen through matlab examples plot one set of lat, long with 'Name' or 'Description', but above I was hoping to write to kml all storm tracks (each row above is one track with lat, long point pairs and a 'Name' or 'Description' for each pair of points)
kmlwrite(save_file,s,"Color",colors,"Description", s.IsoTime)
is returning the error
Error using kmlwrite
The parameter/value inputs must be pairs.
I guess this is my lack of understanding of the geographic data structure. coudl someone expleain where I'm going wrong please?

댓글을 달려면 로그인하십시오.

답변 (1개)

Piyush Dubey
Piyush Dubey 2023년 9월 6일
In my understanding you are trying to create a data structure using storm track data from a ‘.csv’ file in MATLAB. ‘kmlwrite’ is being used to generate the tracks but the issue arises when you want to create a ‘.kml’ file for all the points. Another error that arises is, “The parameter/value inputs must be pairs”.
Please know that while writing geographical data in ‘.kml’ files the ‘kmlwrite’ or ‘kmlwriteline’ function expects a pair of latitude and longitude where each of these should be of the data type int’ or ‘double’.
Please refer to the code snippet below where a sample structure is created and using for loops the data is being written to ‘.kml’ file:
stormData = struct('Latitude',[], 'Longitude',[],'ISOTime',[]);
stormData.Latitude = [10.345 234.34 343.232];
stormData.Longitude = [10.345 234.34 343.232];
stormData.ISOTime =['2018-06-25 11:23:37.712', '2019-06-25 11:23:37.712', '2020-06-25 11:23:37.712'];
% Loop through each storm track in the stormData structure array
for i = 1:numel(stormData)
% Extract the latitude and longitude coordinates for the current storm track
lat = stormData.Latitude(i);
lon = stormData.Longitude(i);
isoTime = stormData.ISOTime(i);
kmlwriteline('track.kml', lat, lon, ...
'Description', isoTime, 'Name', 'Track Log');
end
The above written code demonstrates the use of ‘kmlwriteline’ function. Please refer to the following MathWorks documentation links for more information onkmlwrite’ and ‘kmlwriteline’ functions:
Hope this helps.

카테고리

Help CenterFile Exchange에서 Data Import and Analysis에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by