J'essaie de tracer des trajectoires de vol sur GoogleEarth en utilisant Matlab pour générer le fichier KML. Je suis très nouveau à Matlab. Mon code a jusqu'ici réussi à utiliser des nœuds XML pour formater le fichier KML correct, mais j'ai du mal à obtenir les nombreuses lignes de coordonnées d'un fichier csv ou xls vers le fichier KML. Je peux seulement obtenir une coordonnée à écrire dans le fichier ou toutes les coordonnées horizontalement qui ne sont pas correctement formatées.Matlab: Créer un fichier KML contenant plusieurs lignes de coordonnées
J'ai été capable de copier et coller les coordonnées dans le fichier KML écrit après que le script a suivi son cours, mais je dois être capable de dire au script de le faire.
Le code actuel n'est pas robuste, je ne sais pas encore comment intercepter les exceptions et empêcher le code d'échouer dans Matlab. Je réalise aussi que mon utilisation de la boucle for pour créer le tableau char qui contient mes coordonnées est très inefficace. Si quelqu'un connaît un moyen de rendre cela plus efficace, cela aiderait aussi.
trajectoryData = struct('Longitude',[],'Latitude',[],'Altitude',[]);
data = xlsread('Table.xls');
[m,n]=size(data);
trajectoryData.Longitude = data(:,1);
trajectoryData.Latitude = data(:,2);
trajectoryData.Altitude = data(:,3);
xDoc = com.mathworks.xml.XMLUtils.createDocument('kml');
xDocRootNode = xDoc.getDocumentElement;
documentNode = xDoc.createElement('Document');
nameNode = xDoc.createElement('name');
styleNode = xDoc.createElement('Style');
lineStyleNode = xDoc.createElement('LineStyle');
polyStyleNode = xDoc.createElement('PolyStyle');
colorNode = xDoc.createElement('color');
widthNode = xDoc.createElement('width');
placemarkNode = xDoc.createElement('Placemark');
visibilityNode = xDoc.createElement('visibility');
styleUrlNode = xDoc.createElement('styleUrl');
altitudeNode = xDoc.createElement('altitudeMode');
coordinatesNode = xDoc.createElement('coordinates');
lineStringNode = xDoc.createElement('LineString');
extrudeNode = xDoc.createElement('extrude');
tessellateNode = xDoc.createElement('tessellate');
nameNode.setTextContent('FlightID 26');
colorNode.setTextContent('7f00ff00');
widthNode.setTextContent('4');
visibilityNode.setTextContent('1');
styleUrlNode.setTextContent('#yellowLineGreenPoly');
extrudeNode.setTextContent('1');
tessellateNode.setTextContent('1');
altitudeNode.setTextContent('absolute');
xDocRootNode.appendChild(documentNode);
documentNode.appendChild(nameNode);
documentNode.appendChild(styleNode);
documentNode.appendChild(placemarkNode);
styleNode.appendChild(lineStyleNode);
styleNode.appendChild(polyStyleNode);
polyStyleNode.appendChild(colorNode);
lineStyleNode.appendChild(colorNode);
lineStyleNode.appendChild(widthNode);
lineStringNode.appendChild(altitudeNode);
lineStringNode.appendChild(extrudeNode);
lineStringNode.appendChild(tessellateNode);
lineStringNode.appendChild(coordinatesNode);
placemarkNode.appendChild(visibilityNode);
placemarkNode.appendChild(styleUrlNode);
placemarkNode.appendChild(lineStringNode);
for i=1:numel(data(1:end,1))
coord = char(coord,strcat(num2str(trajectoryData.Longitude(i,1)),',',...
num2str(trajectoryData.Latitude(i,1)),',',num2str(trajectoryData.Altitude(i,1))))
for j=1:27
coordinateNode = xDoc.createTextNode(coord(i,j));
coordinatesNode.appendChild(coordinateNode);
end
end
xDocRootNode.appendChild(documentNode);
xmlwrite('KMLFile2.kml',xDoc);
C'est la sortie du script tel qu'il est:
<coordinates> latitude,longitude,altitude latitude,longitude,altitude </coordinates>
Je dois juste une façon de formater le kml comme ceci:
<coordinates>
latitude,longitude,altitude
latitude,longitude,altitude
</coordinates>
Quelles sont les difficultés que vous rencontrez? Comment le code ci-dessus échoue-t-il? Ce n'est pas clair ce que vous demandez. –